消息中间件-RabbitMQ应用模式解析(二)
消息中间件解析。
架构上的差异
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系统架构的基础。