WHAT
分布式发送-订阅消息系统
Feather
- 高吞吐率、低延迟
- 可扩展性
- 持久性与可靠性
- 高容错
- 高并发
kafka可以将消息分布缓存在Broker上,通过zookeeper找到各个Broker的位置
架构图
Producer
- 向Broker发送消息
- 可通过任一Broker发现其他Broker位置
- 消息组成
- topic
- key
- value
- timestamp
Broker
- Producer和consumer之间的桥梁
- 从Producer接收消息,并保存下来
- 将消息发送给订阅的Consumer
- 可将消息缓存一段时间
- 每个消息保存成多副本(默认3个)
- 可设置保存时间(默认一周)
topic与partition
注意:partition可以保证消息的时序性(按顺序读写),而整个topic是无法保证的
kafka以patition为单位对消息进行备份,每个patition可以配置至少一个副本( replica)
Broker内部
WHY
场景:
如果我们有上百个运⾏在不同机器上的服务, 每个服务产⽣⼤量⽇志和消息, 如何对他们进⾏分析和处理?
问题描述:
我们如何将⽇志发送到⼀个统⼀的地⽅进⾏处理和分析,需要⼀种兼顾reliable, scalable, extensible 和 manageable的⽅式
前端和后端严重耦合
理想的解决方法:
引入kafka中间组件
WHERE
可以在其他的数据中心进行数据的传输,并写入一些hadoop的系统组件存储
离线数据中心
与Flume和实时计算引擎搭配处理一些实时数据分析的场景
用于实时计算