Java消息服务____ActiveMQ_RabbitMQ_Kafka介绍
2017-10-18 14:58
465 查看
//Kafka介绍
什么是kafka? kafka是LinkedIn开发并开源的一个分布式MQ系统,现在是Apache的一个孵化项目。在它的主页描述kafka为一个高吞吐量的分布式(能将消息分散到不同的节点上)MQ。Kafka仅仅由7000行Scala编写,据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。 kafka目前支持多种客户端语言:java,python,c++,php等等。 kafka集群的简要图解如下,producer生产消息,consumer消费消息:
kafka设计目标 高吞吐量是其核心设计之一。 数据磁盘持久化:消息不在内存中cache,直接写入到磁盘,充分利用磁盘的顺序读写性能。 zero-copy:减少IO操作步骤。 支持数据批量发送和拉取。 支持数据压缩。 Topic划分为多个partition,提高并行处理能力。
kafka名词解释和工作方式 Producer:消息生产者,就是向kafka broker发消息的客户端 Consumer:消息消费者,向kafka broker读取消息的客户端 Topic:可以理解为一个队列。 Consumer Group(CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个CG只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。 Broker:一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic。 Partition:为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。 Offset:kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafka//
ActiveMQ
编辑ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
相关文章推荐
- Java消息中间件--ActiveMq,RabbitMQ,Kafka
- SpringBoot系列八:SpringBoot整合消息服务(SpringBoot 整合 ActiveMQ、SpringBoot 整合 RabbitMQ、SpringBoot 整合 Kafka)
- 微服务消息中间件ActiveMQ,RabbitMQ,kafka等的技术选择
- JMS(Java消息服务)(Activemq简单介绍)
- Java消息队列总结只需一篇解决ActiveMQ、RabbitMQ、ZeroMQ、Kafka
- JMS-ActiveMQ与Java消息服务
- ActiveMQ编写JMS(Java消息服务)实例分享
- 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
- 消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?
- 【中间件】消息队列(一):RabbitMQ、ActiveMQ、Kafka和Redis
- 消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?
- JAVA JMS Java消息服务(Java Message Service) 的实现ActiveMQ
- 消息中间件kafka与activeMQ、rabbitMQ、zeroMQ、rocketMQ的比较
- 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
- 关于消息队列的使用----ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ
- JMS-ActiveMQ:Java消息服务
- 17) JMS: java Message Service(Java消息服务)
- 分布式消息队列kafka系列介绍 — 基本概念
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
- 初识java消息中间ActiveMq