1.1 概念
Apache Kafka是一个分布式的发布-订阅系统,能够支持海量数据的数据传递。在离线和实时的消息处理业务系统中,Kafka都有广泛的应用。Kafka将消息持久化到硬盘中,并对消息创建了备份保证了数据的安全。Kafka保证了较高的处理速度的同时,又保证了数据的零丢失。
1.2 特点
-
高吞吐量、低延迟
Kafka每秒可以处理几十万条消息,但是延迟最低只有几毫秒。每个主题可以分为多个分区,消费组可以对分区进行消费操作。
-
可扩展性
Kafka集群支持热扩展
-
持久化、可靠性
消息可以被持久化到本地磁盘,并且支持数据备份以防止数据丢失。
-
容错性
允许集群中的节点失败(若副本的数量为n,则允许n-1个节点失败)
-
高并发
支持数千个客户端同时进行读写操作
1.3 使用场景
-
日志收集
公司可以用Kafka收集各种服务的log,通过Kafka以统一接口服务的形式开放给各种Consumer进行消费。例如Hadoop,Hbase,Solr等
-
消息系统
解耦生产者、消费者、缓存消息等
-
用户活动跟踪
Kafka经常被用来记录web用户和app用户的各种活动。例如浏览网页、点击、搜索活动,这些活动被发送到Kafka不同的Topic中,然后订阅者通过订阅这些Topic来做实时的监控分析。
-
运营指标
记录运营监控数据
-
流失处理
Spark streaming和storm
1.4 技术优势
-
可伸缩性
- Kafka集群支持在运行期间进行扩展或者收缩(可以添加或者删除代理),并且不会宕机
- 可以扩展一个Kafka主题,来包含更多的分区。由于一个分区无法扩展到多个代理,所以他的容量用以收到代理磁盘空间的限制。
-
容错性和可靠性
Kafka的设计方式使某个代理的故障能够被集群中的其他代理检测到。由于每个主题都可以在代理上复制,所以集群可以在不中断服务的情况下从此类故障中恢复并继续运行。
-
吞吐量
代理能够以非常快的速度进行数据存储和数据检索。