消息中间件-RabbitMQ应用模式解析(二)

分类: JVM 发布于:

消息中间件解析。

架构上的差异

Layer based architecture

从设计上看,基于分层的应用架构设计,比如 Model-controller-view ,或者 前端的model-(view-model-mediator)-view 模式,本质上是一种同步设计思想。

Event based archtecture

基于事件(event-based)的架构设计,本质上是对应用或者不同实体的状态的订阅和处理。

基于web 事件的常规设计模式

为什么微服务架构下,异步消息引擎变得如此重要?

关系型数据可以看做对状态空间的持久化,消息中间件是状态的异步处理引擎。

kafka综合了上述两类特点。

大数据背景下,除了数据本身的状态变得重要之外,状态之间的关系也非常重要。特别是不同类型的实体之间的关联。经典段子是沃尔玛啤酒和尿不湿销量的调查。

RabbitMQ的特性

消息中间件重要的特性:

合并和分组消息,在rabbitmq中有exchange组件实现,也成为消息路由。

RabbitMq对消息分组做了2层抽象:

  • virtual host

基于多租户的逻辑分组

  • channel

基于TCP连接的逻辑分组。

RabbitMQ支持4种消息分组或者路由方式

  • Direct 路由方式

这种消息路由方式基于key的相等匹配模式,是一对一订阅方式的实现。

  • Fanout 路由方式(广播方式)

这种方式是全播方式 * 模式匹配,是1对多订阅方式的实现。

  • Topic 路由方式

这种方式是消息路由多对多的方式。常用户批处理。

  • Header 路由方式

基于Headers定义属性的、高优先级的订阅-处理方式。

总结

Event-Driven architecture 是实体、模块、系统间解耦和通信的理想方式。
构建reactive系统架构的基础。