- 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情
基础介绍
- 谈到kafka想必大家非常的熟悉,在现今企业中使用持久化消息队列中几乎都是 plusar/kafka/mq
- kafka在实际用途中非常的普遍
-
如应用于多个服务之间消息的解耦
-
削峰填谷,使用kafka进行限流操作,避免流量激增的时候将我们系统打垮
-
类似IM 实时消息消息的传递
-
- 在kafka中数据单元被称为消息,因为消息属于同一个主题和分区,所以可以将消息看做DB中的一条记录
- 在kafka中可以将不同的业务与不同的主题相呼应
-
在生产者写入数据时候,只需要关心发送到哪个主题,与之相呼应的是 消费者配置好topic(主题) 进行消费消息就是一个完整的流程
-
与redis副本高可用原理相同,我们在业务中使用kafka时决不允许数据丢失,所以kafka内部也引入了副本机制
-
并且分区的水平扩展也消除了kafka集群的瓶颈问题
-
在消费者进行消费时,每一个消息都被kafka服务器(broker)设置了偏移量,保证消息的顺序存放,并且提交到磁盘中保存
高可用
- 在上面提到了kafka与redis副本高可用原理类似
- 举例目前是两个broker,也就是broker1与broker2形成了kafka集群
- 其中每个broker都有两个主题Q,主题Q中有两个分区 一个是 a 一个是b
- 生产者和消费者分别写入和消费broker1 和 broker2的消息
- 两个broker之间也是进行复制传递,如果有一个broker挂掉,那么消费者和生产者会连接新的broker首领