文章目录
- 一、简介
- (1)问题
- 二、参考资料
一、简介
https://kafka.apache.org/intro
(1)问题
1. 什么是 Kafka
?
Apache Kafka® is a distributed streaming platform.
Kafka
是一个分布式流处理平台。
- 可当作消息引擎系统(Message System)
引擎:具备某种传输和处理的能力
其实不管是消息引擎还是流式处理平台,Kafka
的处理流程从未发生质的变化:
如图:
- 可作为 存储系统
写入到
kafka
中的数据是落地到了磁盘上,并且有冗余备份,kafka
允许producer
等待确认,通过配置,可实现直到所有的replication
完成复制才算写入成功,这样可保证数据的可用性。
2. Kafka
核心功能是什么?
- 高性能的消息发送
- 高性能的消息消费
3. Kafka
有什么用?
- 解耦
生产者与消费者解耦
- 冗余
具有持久化能力,可规避消息处理前丢失的风险
- 扩展
消息系统是统一的数据接口,各系统可独立扩展
- 峰值处理能力
支持峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
- 可恢复性
系统中部分组件失效并不会影响整个系统,它恢复后仍然可以从消息系统中获取并处理数据
- 异步通信
在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理
4. Kafka
有什么特性?
Kafka
设计之初旨在提供3个方面的功能特性:
- 为生产者和消费者提供一套简单 API
- 降低网络传输和磁盘存储开销
- 具有高伸缩性架构
A streaming platform has three key capabilities:
- Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
- Store streams of records in a fault-tolerant durable way.
- Process streams of records as they occur.
流处理系统有这三种能力:
- 发布和订阅流式信息,近似于消息队列或企业消息传递系统
- 在容错环境下存储流式信息
- 处理流式信息
5. 适用场景?
- 消息传输
解耦和生产者和消费者、缓存消息等。
代替传统的消息总线(message bus)或消息代理(message broker) - 网站行为日志追踪
Kafka
经常被用来记录web
用户或者app
用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。 - 审计数据收集
便捷地对多路消息进行实时收集,同时持久化。
满足对关键的操作和运维进行监控和审计。 - 日志收集
一个公司可以用Kafka
可以收集各种服务的 log,通过kafka
以统一接口服务的方式开放给各种 consumer
,例如Hadoop
、HBase
、Solr
等。
同时保持了低延时的特点。 - Event Sourcing(事件源)
Event Sourcing
实际上是领域驱动设计(DDD)的名称,使用事件序列来表示状态变更。 - 流式处理
比如spark streaming
和 storm