消息驱动的微服务-SpringCloud Stream

2018-07-05  本文已影响117人  没睡醒的鱼

简介

SpringCloud Stream是一个用来为微服务应用构建消息驱动能力的框架。通过使用SpringCloud Stream,可以有效简化开发人员对消息中间件的使用复杂度,让开发人员有更多的精力来关注核心业务。SpringCloud Stream只支持RabbitMq和Kafka这两个消息中间件的配置

代码演示

核心概念

流式微服务模型

一个SpringCloud Stream应用以消息中间件为核心,应用通过SpringCloud Stream注入的输入/输出通道与外部进行通信,channels通过特定的binder实现与外部消息中间件通信,架构图如下所示: 架构图

对消息中间件的抽象

Binder是SpringCloud Stream的一个抽象概念,是应用与消息中间件的粘合剂。SpringCloud Stream提供了对kafka和RabbitMq的抽象Binder来代表消息中间件,抽象的Binder为灵活配置如何连接消息中间件及发送消息提供了良好的支持。

持续发布订阅支持

流式微服务应用之间通过发布/订阅模型通信,通过共享的topic来传播数据。 发布订阅模型示意图

生产者把消息通过某个topic广播出去,其他微服务通过订阅topic来获取广播出来的消息触发业务

消费者组

发布订阅模型让应用之间通过共享topic通信变得相当容易,不过在为高可用部署多个实例时,需要防止应用对该topic中的消息重复消费,一条消息应该只能被一个消费者消费。SpringCloud Stream通过消费者组来实现上述需求,保证消息只被组中的一个消费者消费

分区支持

SpringCloud Stream为多个生产者实例的应用提供消息分区的支持。一个或多个生产者发送数据到多个消费者,把那个保证某个数据仅被某一个消费者实例消费。


分区模型示意图
上一篇下一篇

猜你喜欢

热点阅读