kafka做消息队列怎么做分布式

发布网友

我来回答

1个回答

热心网友

Kafka 分布式消息队列 类似产品有JBoss、MQ


一、由Linkedln 开源,使用scala开发,有如下几个特点:


(1)高吞吐


(2)分布式


(3)支持多语言客户端 (C++、Java)


二、组成: 客户端是 procer 和 consumer,提供一些API,服务器端是Broker,客户端提供可以向Broker内发布消息、消费消息,服务器端提供消息的存储等功能


Kafka 特点是支持分区、分布式、可拓展性强


三、Kafka 的消息分几个层次


(1)Topic 一类主题


(2)Partition 默认每个消息有2个分区,创建Topic可以指定分区数,1天有 1亿行可以分8个分区,如果每天几十万行就一个分区吧


(3)Message 是每个消息


四、数据处理流程


1.生产者 生产消息、将消息发布到指定的topic分区


2.kafka 集群接收到procer发过来的消息后,将其持久化到硬盘,可以指定时长,而不关注消息是否被消费


3.consumer从kafka集群pull或push方式,并控制获取消息的offset偏移量,consumer重启时需要根据offset开始再次消费数据,consumer自己维护offset


五、kafka如何实现高吞吐量


1.充分利用磁盘的顺序读写

2.数据批量发送

3.数据压缩

4.Topic划分多个partition


六、kafka 如何实现load balance &HA


1)procer 根据用户指定的算法,将消息发送到指定的partition

2)存在多个partition,每个partition存在多个副本replica,每个replica分布在不同的broker节点上

3)每个partition需要选取lead partition,leader partition负责读写,并由zookeeper负责fail over 快速失败

4)通过zookeeper管理broker与consumer的动态加入与离开


七、扩容


当需要增加broker节点时,新增的broker会向zookeeper注册,而procer及consumer会根据zookeeper上的watcher感知这些变化,并及时作出调整

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com