https://kafka.apache.org/intro
Apache Kafka® is a distributed streaming platform.
Kafka是一个分布式流处理平台。
可当作消息引擎系统(Message System)引擎:具备某种传输和处理的能力
其实不管是消息引擎还是流式处理平台,Kafka的处理流程从未发生质的变化:
如图:
可作为 存储系统写入到 kafka中的数据是落地到了磁盘上,并且有冗余备份,kafka允许producer等待确认,通过配置,可实现直到所有的replication完成复制才算写入成功,这样可保证数据的可用性。
生产者与消费者解耦
冗余具有持久化能力,可规避消息处理前丢失的风险
扩展消息系统是统一的数据接口,各系统可独立扩展
峰值处理能力支持峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
可恢复性系统中部分组件失效并不会影响整个系统,它恢复后仍然可以从消息系统中获取并处理数据
异步通信在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理
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.流处理系统有这三种能力:
发布和订阅流式信息,近似于消息队列或企业消息传递系统在容错环境下存储流式信息处理流式信息消息传输 解耦和生产者和消费者、缓存消息等。 代替传统的消息总线(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
http://www.thinkyixia.com/2017/10/25/kafka-2/
