官方网站链接:http://kafka.apache.org/
简介
Kafka是一个分布式的“消息发布—订阅”系统。它具有消息持久化、高吞吐、分布式、多客户端支持、实时等特性。
Kafka中包含生产者(Producer)和消费者(Consumer)两种角色,Producer将消息发布到Kafka主题(Topic),Consumer订阅这些Topic并消费这些消息。
应用场景
Kafka作为一个“消息发布—订阅”系统,为整个大数据平台多个子系统之间数据的传递提供了高速数据流转方式。可以实时接受来自外部的消息,并提供给在线以及离线业务进行处理。适用场景包括:基于Hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式计算引擎等。
功能特性
多语言支持
具有多语言的客户端实现,支持主流编程语言Java、Python、C++和.Net等;支持多种动态语言如:Python、Ruby、PHP等;其他语言Scala、Go、Clojure等。
高吞吐量
单个Kafka节点支持上千个客户端连接、支持每秒数百兆字节的读写操作。集群模式下,即使部分节点故障也不影响集群性能。
数据安全
Kafka将消息持久化硬盘上,并在集群中的其他节点上保留多个副本,防止数据丢失。
高可用
Kafka中每一条消息属于特定的Partition,Partition有多个副本,这些副本分布在集群中的不同的节点之上,提供可靠的数据安全。
高并发
通过Partition增加并行性,实现高并发。一个Consumer可以同时消费多个Partition,同时,Kafka的Offset机制最小化了Broker和Consumer之间的交互,避免因Consumer数目的增加而成比例的降低性能。
实时监控
Kafka Web UI用于监控Kafka集群的数据吞吐情况以及Topic被消费的情况。包括Lag的产生,Offset的变动,Partition的分布,Topic被创建的时间和修改的时间等信息。