基于 发布/订阅 设计模式
按需生产,降低成本,提高效率
image.png
JMS(Java Message Service)
Sun及其伙伴公司提出了Java消息服务JMS(Java Message Service),旨在统一各种消息中间系统的接口规范。JMS定义了一套通用的接口和相关语义,提供了持久、验证和事务等消息服务。该项规范并没有指定在消息节点间所使用的通信协议,因此应用开发人员不用过多地考虑底层的细节。时至今日,不少JMS产品都能够为企业提供一套完整的消息传递功能。这里将介绍一款常见的JMS开源项目,Apache的ActiveMQ。
Apache Kafka
并非所有的消息机制都一定要通过JMS来实现,例如Apache Kafka。下面简单介绍这款优秀的消息中间件。
高性能存储:通过特别设计的磁盘数据结构,保证时间复杂度为O(1)[插图]的消息持久化,这样数以TB的消息存储也能够保持良好的稳定性能。此外,被保存的消息可以多次被消费,用于商务智能ETL和其他一些实时应用程序。
高吞吐量[插图]:由于存储性能的大幅提升,以及良好的横向扩展性,因此即使是非常普通的硬件Kafka也可以支持每秒数十万的消息流,同时为发布和订阅提供惊人的吞吐量。无状态代理:与其他消息系统不同,Kafka代理是无状态的。代理不会记录消息被消费的状态,而是需要消费者各自维护。
主题(Topic)和分区(Partition):支持通过Kafka服务器和消费机集群来分区消息。一个主题可以认为是一类消息,而每个主题可以分成多个分区。通过分区,可以将数据分散到多个服务器上,避免达到单机瓶颈。更多的分区意味着可以容纳更多的消费者,有效提升并发消费的能力。基于副本方案,还能够对多个分区进行备份和调度。
image.png