Kafka 分布式消息队列 类似产品有JBoss、MQ 一、由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++、Java) 二、组成: 客户端是 producer 和 consumer,提供一些API,服务器端是Broker,客户端提供可以向Broker内发布消息、消费消息,服务器端提供消息的存储等功能 Kafka 特点是支持分区、分布式、可拓展性强 三、Kafka 的消息分几个层次 (1)Topic 一类主题 (2)Partition 默认每个消息有2个分区,创建Topic可以指定分区数,1天有 1亿行可以分8个分区,如果每天几十万行就一个分区吧 (3)Message 是每个消息 四、数据处理流程 1.生产者 生产消息、将消息发布到指定的topic分区 2.kafka 集群接收到producer发过来的消息后,将其持久化到硬盘,可以指定时长,而不关注消息是否被消费 3.consumer从kafka集群pull或push方式,并控制获取消息的offset偏移量,consumer重启时需要根据offset开始再次消费数据,consumer自己维护offset 五、kafka如何实现高吞吐量 1.充分利用磁盘的顺序读写 六、kafka 如何实现load balance &HA 1)producer 根据用户指定的算法,将消息发送到指定的partition 七、扩容 当需要增加broker节点时,新增的broker会向zookeeper注册,而producer及consumer会根据zookeeper上的watcher感知这些变化,并及时作出调整 |
|