kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统
主要应用场景:日志收集系统和消息系统。
Kafka主要设计目标:
1)以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。
2)高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。
3)支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。
4)同时支持离线数据处理和实时数据处理。
5)Scale out:支持在线水平扩展
kafka优点:
1)解耦;
2)冗余(副本)
3)灵活性&峰值处理能力
4)扩展性
5)可恢复性
6)顺序保证
7)缓冲
8)异步通信
kafka内部模块:
1)broker:Kafka 集群包含一个或多个服务器,服务器节点称为broker。
2)Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
3)Partition:topic中的数据分割为一个或多个partition。每个topic至少有一个partition
4)Producer:生产者即数据的发布者,该角色将消息发布到Kafka的topic中
5)Consumer:消费者可以从broker中读取数据。消费者可以消费多个topic中的数据
6)Consumer Group:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
7)Leader:每个partition有多个副本,其中有且仅有一个作为Leader,Leader是当前负责数据的读写的partition。
8)Follower:Follower跟随Leader,所有写请求都通过Leader路由,数据变更会广播给所有Follower,Follower与Leader保持数据同步。