1.实现原理:kafka依赖于zk(zookeeper),将所有的kafka服务器注册到zk服务器上,并建立长连接(zk保存着kafka的broker节点信息)
2.核心组件:broker、topic、partition(分区)、producer、consumer以及message
broker:就是一台kafka节点
topic:消息主题,包含了多个partition;每一个消息都会表示成一个递增的序号,存在在partition中
partition:由一个一个的消息组成;
producer:生产者;
consumer:消费者
3.发送过程以及消费过程
1)发送过程:选择一个topic发送消息(send(tipoc、key、value));底层是通过计算key以及value的序列化值,找到相应的partition,将消息保存在partition的末尾;
2)消费过程:监听一个topic主题,通过id(offsert--偏移量)指定消息消费的地址,然后consumer会保存当前的id消息-作为下次消费的id起点...
4.Broker:(相当于一个kafka节点)
5.优点:
1) 消费者可以根据需求灵活的指定offset(id);
2)保证消息的不变性,依赖于每个consumer的offset(每个consumer的offset互不影响)保证了线程的安全;
3)高可用,消息以partition为一个单元体,分配到多个server当中,并以partition进行备份。
6.缺点:(kafka依赖于zk,故需要考虑到zk的缺点)
由于zk是中心化的节点,包含leader与follower节点,那么在选举过程当中,所有的节点都挂起,不能够访问,在选举阶段,数据存在丢失.