notify由于不是开源的源码的实现就略过,详细了解下原理:
一 架构原理
架构主要由notify client 、config server 、notify server 、data base组成,其中notify client为消费消息端, config server 为阿里巴巴许多服务注册发现中心,在这也相当于充当了服务发现中心, notify server 消息的发送端, database 为存储中心.
二 特性及适用场景
它的核心特性是: 提供事务支持、不保证消息顺序、消息可能会重复、推模型,定位于无序消息投递,所以 更适用于 : 面向需要更加安全可靠地交易类场景,无序,推模式。
1 分布式事务特性-交易状态最终一致性的保证
可以保证业务操作和消息发送组成一个分布式事务,业务操作和消息发送就是一个原子操作,有这种业务场景的需求就可以选择notify.
2 推送的方式、消息的无序和最高实时的消息服务
因为是推送的方式加无序就可以保证最好的实时性,推送模型就是当消息发到服务端就会立刻无间歇推送到客户端.
3 双写特性
为了解决单点故障的问题,notify实现的是双写的方式,就比如在发一条消息的时候会同时写到两个database的实例当中,当两个实例都成功的时候才算发送成功,这就保证了消息存储的高度可靠,有需要高度可靠的数据的处理就可以用notify
4 支持消息属性表达式过滤
如果有业务场景比较复杂的,需要有复杂的筛选条件下的业务就可以选择notify.
metaq 现在开源的名称叫做rocketMq 已经开源在github上.
一 架构原理
主要就是由consumer (消费者)、producer(生产者)、broker(存储中心)、Name Server(topic路由中心)几部分组成 消费者和生产者都和name server长连接
二 特性及适用场景,以及代码实现
未完待续....