Web开发来一发(十二)Kafka

1、Kafka简介

Kafka是一个分布式发布-订阅消息传递系统,常用于日志服务。

Kafka基本结构包括Topic、Producer、Broker、Consumer:

1)Topic:特定类型的消息流,消息是字节的有效负载;

2)Producer:能够发布消息到话题的任何对象;

3)Broker:已发布的消息保存在一组服务器中,它们被称为代理(Broker)或Kafka集群;

4)Consumer:可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息。

简单地说,生产者将数据发送到Broker代理,Broker代理有多个话题topic,消费者从Broker获取数据。

2、kafka基本原理

看下官方的Kafka流程图:

多个 Broker 协同合作,Producer 和 Consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper管理协调请求和转发。消息是Consumer主动拉取的,而不是由Broker推送的。

借助zookeeper,kafka能够生产者、消费者和broker在内的所以组件在无状态的情况下,建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。另外,zookeeper保存一些meta信息来保证系统可用性。

3、Kafka存储策略

Kafka存储策略如下:

1)Kafka以Topic来进行消息管理,每个Topic包含多个Partition,每个Partition对应一个逻辑log,有多个Segment组成。

2)每个Segment中存储多条消息,消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。

3)每个Part在内存中对应一个index,记录每个segment中的第一条消息偏移。

4)Producer发到某个Topic的消息会被均匀的分布到多个partition上(或根据用户指定的路由规则进行分布),Broker收到发布消息往对应Partition的最后一个Segment上添加该消息,当某个Segment上的消息条数达到配置值或消息发布时间超过阈值时,Segment上的消息会被flush到磁盘,只有flush到磁盘上的消息订阅者才能订阅到,Segment达到一定的大小后将不会再往该Segment写数据,broker会创建新的Segment。

 

参考资料:

https://blog.csdn.net/xlgen157387/article/details/77266719/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值