因为要引入Notification机制和log的监控和查看,大概率是需要MQ这类工具,所以研究了下目前比较火热的开源的MQ软件:
Rabbit MQ, Kafka还有Pulsar.
其实这三个软件虽说都适合MQ的场景,但是其实侧重点有很大的不同.
RabbitMQ: 是AMQP(Advance Message Queuing protocol)的实现,是典型的消息中间件产品。它的特点是富broker端,傻消费者,并且对消息路由支持的很好。
缺点是消息存储功能弱,在RabbitMQ中存储大量的消息是个典型的反模式,相应的,也不支持消息的回看。
Kafka: 不是典型的消息中间件产品,其实更像是流数据处理软件,但是pub-sub或者queue也能实现。特点是刹broker端,富消费者。优点是带数据存储的功能,支持消息回看,并且由Kafka stream用于在Topic之间进行数据的二次处理。缺点是消息路由功能弱。另外还要引入zookeeper。
Pulsar: 非常新,好像去年才进入Apach顶级项目的,目的是取代Kafka, Kafka支持的它全都支持,并且多了一个概念叫Subscription,增加了几种模式,比如独占,failover还有共享。我觉得,如果subscription能支持消息过滤,就在一定程度上实现了消息路由,目前还不支持这个功能,比较遗憾,