kafka梳理

为何使用消息系统

解耦: 消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,允许你独立的扩展或修改两边的处理过程,确保遵守同样的接口约束。
冗余、
扩展性、 可恢复性、顺序保证、 缓冲、 异步通信、灵活性&峰值处理能力:使用消息队列能够使关键组件顶住突发的访问阿里,而不会因为突发的超负荷请求完全奔溃。

Kafka简单流程:

产生消息的前端属于Producer,把产生的消息push到Broker(及Broker),broker是kafka的核心,broker数量越多,集群吞吐量越高,各种Consumer包括Hadoop Cluster、Real-time Monitoring、数据仓库等从brokerpull数据

Broker、Partition、Producer、Consumer、ConsumerGroup
Topic:在逻辑上认为是一个queue,每条消费都必须指定Topic(及指明把这条消息放哪个queue里),为提高kafka吞吐率,物理上把Topic分为多个Partition,每个Partition在物理上对应一个文件夹,改文件夹下存储这个Partition的所有消息和索引文件。
每个日志文件都是一个log entrie序列,每个log entrie包含一个4字节整形数值,1字节的magic value,4个字节的CRC校验码,后跟N个字节的消息体。每条消息都有一个当前Partition下唯一的offset,指明这条消息的起始位置。
log entrie不是由一个文件构成,而是分成多个segment,每个segment以该segment第一条消息的offset命名。另外会有一个索引文件,指明了每个segment下包含的log entrie的offset范围。
每条消息都被append到该Partition中,属于顺序写磁盘,效率非常高。
kafka集群不会删除已被消费的消息,保留所有的消息,可基于时间或partition文件的大小定期删除。

同一Topic的一条消息只能被ConsumerGroup内的一个consumer消费,多个ConsumerGroup可同时消费这一消息。广播:每个consumer有一个独立的Group,单播:所有的Consumer在同一个Group里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值