分布式消息队列之Kafka入门


kafka的定义 java



kafka是一个分布式消息系统,有linkedin时候用scale编写,用做LinkedIn的活动流(Acitvity Stream)和运营数据处理管道(pipeline)的基础,具备高水平扩展和高吞吐量。从 0.9 版本开始,Kafka 的标语已经从“一个高吞吐量,分布式的消息系统”改成”一个分布式流平台”。c++



应用领域web


kafka已经被多家不一样类型的公司做为多种类型的数据管道和消息系统使用。如:淘宝,支付宝,百度,twitter等ruby

目前愈来愈多的开源分布式处理系统如:服务器

用于日志收集的Apache Flume系统微信

用于实时处理的Apahce Storm系统架构

用于内存处理的Spark系统app

用于全文检索的Elasticsearch系统负载均衡

分布式消息队列的对比 分布式



ActiveMQ RabbitMQ kafka
所属社区/公司 Apache Mozilla Public License Apache/Linkedin
开发语言 java erlang scala
支持的协议 openwire/stomp/rest/xmpp/amqp amqp 仿amqp(独立研发)
事务 支持 不支持 不支持
集群 支持 支持 支持
负载均衡 支持 支持 支持
动态扩容 不支持 不支持 支持(zookeeper)

AMQP协议




Advanced Message Queuing Protocol 一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不一样产品,不一样的开发语言等条件的限制
消费者 consumer:从消息队里中请求消息的客户端应用程序

生产者 producer: 向broker发布消息的客户端应用程序

AMQP服务器端 broker:用来接收生产者发送的消息并将这些消息路由个服务器中的队里,说的简单点就是处理生产者的消息转发到消费者能收到的路由里面,一个kafka节点就是一个broker节点,一个或者多个broker节点就能组成一个kafka集群。

consumer group: 每一个consumer属于特定的一个consumer group,一条消息能够发到多个consumer group中被consumer消费,可是一个consumer group中只能有一个consumer消费该消息。


  • 在一套 Kafka 架构中有多个 Producer,多个 Broker,多个 Consumer,每一个 Producer 能够对应多个 Topic,每一个 Consumer 只能对应一个 Consumer Group。

  • 整个 Kafka 架构对应一个 ZK 集群,经过 ZK 管理集群配置,选举 Leader,以及在 Consumer Group 发生变化时进行 Rebalance。

kafka支持的客户端语言



c,c++,erlang,Java,.net,Perl,PHP,Python,ruby,go,JavaScript。

kafka的架构


首先了解一些概念:

主题 topic: 一个主题相似新闻中的体育,娱乐,教育等分类概念,在实际工程中一般一个业务一个主题;

分区 partition : 一个topic中的消息数据按照多个分区组织,分区是kafka消息队组织的最小单位,一个分区能够看作是一个FIFO的队列;每一个分区的内部是有序的。通常集群的性能低下,咱们能够经过增长分区的配置提升性能。

理解kafka消息在分区之间序列


Kafka 为每一个主题维护了分布式的分区(Partition)日志文件,每一个 Partition 在 Kafka 存储层面是 Append Log。任何发布到此 Partition 的消息都会被追加到 Log 文件的尾部,在分区中的每条消息都会按照时间顺序分配到一个单调递增的顺序编号,也就是咱们的 Offset。Offset 是一个 Long 型的数字。

咱们经过这个 Offset 能够肯定一条在该 Partition 下的惟一消息。在 Partition 下面是保证了有序性,可是在 Topic 下面没有保证有序性。

在了解了kafka的基础概念以后,咱们就能够动手去把kafka给运行起来,更深刻的体会分布式消息队列系统带来的好处。




扫码关注
更多精彩



本文分享自微信公众号 - 云原生生态圈(CloudNativeEcoSystem)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索