Spring Cloud Stream(消息驱动)介绍

一、概述

1、发布/订阅
这里写图片描述

简单的讲就是生产者,消费者模式。发布者是生产者,将数据发布到数据中心,订阅者是消费者,订阅自己感兴趣的数据。当有数据到达数据中心时候,就把数据发送给对应的订阅者。

未处理的传感数据发布到raw-sensor-data的Topic进行广播,Averages 和IngestHDFS同时订阅了此消息,收到消息后触发自身的处理逻辑。
Topic可能对应不同的概念,在RabbitMQ表示的是Exchange,Kafka中对应Topic
2、消费组
直观的理解就是消费者一起处理消息。需要注意的是:每个发送到消费组的数据,仅由消费组中的一个消费者处理;

由于发布-订阅模型使得共享主题的应用之间连接更简便,创建给定应用的不同实例来进行弹性扩张的能力也同样重要。如果存在多个应用实例,那么同一应用的额不同实例便会成为相互竞争的消费者,其中应该只有一个实例处理给定消息。
Spring Cloud Stream通过消费者组的概念给这种情况进行建模。每一个单独的消费者可以使用spring.cloud.stream.bindings.input.group属性来指定一个组名字。下图中展示的消费者们,这一属性被设置为spring.cloud.stream.bindings.input.group=hdfsWrite或者spring.cloud.stream.bindings.input.group=average。
所有订阅给定目标的组都会收到发布消息的一个拷贝,但是每一个组内只有一个成员会收到该消息。默认情况下,如果没有指定组,Spring Cloud Stream 会将该应用指定给一个匿名的独立的单成员消费者组,后者与所有其他组都处于一个发布-订阅关系中。
这里写图片描述
3、分区
类比于消费组,分区是将数据分区,举例:某应用有多给我实例,都绑定到同一个数据中心,也就是不同的实例都将数据发布到同一个数据中心,分区就是将数据中心的数据再细分成不同的区,为什么要分区?因为即使是同一个应用,不同的实例发布的数据类型可能不同,也希望这些数据由不同的消费者处理,这就需要,消费者可以仅订阅一个数据中心的部分数据,这就需要分区这个东西了。

这里写图片描述

二、Spring Cloud Stream简介

1、应用模型
Spring Cloud Stream应用由第三方的中间件组成。应用间的通信通过输入通道(input channel)和输出通道(output channel)完成,这些通道由Spring Cloud Stream注入的。而通道与外部的代理(可以理解为上文所说的数据中心)的连接有是通过Binder实现的。
这里写图片描述
上图就是Spring Cloud Stream的应用模型。

猜你喜欢

转载自blog.csdn.net/qq_34288630/article/details/79497348
今日推荐