0. 概念
0.1 消息系统
消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,而不用担心怎么去共享它。
1)点对点消息系统:
消息被保留在队列中,一个或多个消费者可以消耗队列中的消息,但是特定的消息只能由一个消费者消费,一旦消费掉了,消息就会从队列中消失。
2)发布-订阅 消息系统
消息被保留在主题中,与点对点的系统不同,消费者可以订阅一个或多个主题,并使用该主题中的所有消息
0.2 LinkedIn开源
1 | 1)Databus 分布式数据同步系统 |
1. kafka介绍
1.1 kafka工作流程
1.1.1 发布-订阅工作流程
1 | 1)生产者定期向主题发送消息 |
1.1.2 队列消息/用户组的工作流
在队列消息传递系统而不是单个消费者中,具有相同的”组ID”的一组消费者将订阅主题。简单来说,订阅具有相同groupid的主题的消费者被认为是单个组,并且消息在他们之中共享。一下为工作流程“
1
2
3
4
5
6 1)生产者以固定间隔向某个主题发送消息
2)Kafka存储在为该特定主题配置的分区中的所有消息,类似于前面的方案
3)单个消费者订阅特定主题,
4)kafka以发布-订阅消息的方式同消费者交互,知道新的消费者以相同的组id订阅相同的主题topic
5)一旦新的消费者到达,kafka将其操作切换为共享模式,并在两个消费者之间共享数据
6)一旦消费者数量超过分区数量,新消费者将不会接收到任何进一步消息,知道现有的消费者取消订阅,出现这种情况是因为kafka中的每个消费者将被分配到至少一个分区,一旦所有分区都被分配给消费者之后,新的消费者必须等待
1.2 kafka 官方介绍
是一个分布式流处理平台
1.3 基本概念
1 | 1)Producer:消息和数据的生产者,向kafka的一个topic发布消息的进程/代码/服务 |
1.4 kafka消息结构
offset|length|crc32|magic|attributes|timestamp|key length|key|value length|value
1.5 api分类
1 | Producer Api |
1.6 kafka特点
1 | 1)分布式:多分区,多副本,多订阅者,基于zookeeper调度(记录broker、topic、partition信息) |