Kafka概述
Kafka起初是由LinkedIn公司采用Scala语言开发的一个多分区、多副本且基于ZooKeeper协调的分布式消息系统。
Zookeeper在Kafka中扮演的角色,进行Kafka元数据的管理及Kafka Controller的选举工作。Kafka 2.8.0版本之后已移除对Zookeeper的依赖,由kafka自身进行。
目前Kafka已经被定位成一个分布式流式处理系统平台,特点:高吞吐丶可持久化丶可水平拓展丶支持流处理等多种特性。
支持与各种流式计算框架集成,Spark,Flink,Storm等。
Kafka三大角色:
消息系统:
系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能。
Kafka还提供了消息系统难以实现的消息顺序性保障及回溯消费功能。
存储系统:
Kafka 把消息持久化到磁盘,相比于其他基于内存存储的系统而言,有效地降低了数据丢失的风险。也正是得益于Kafka 的消息持久化功能和多副本机制,我们可以把Kafka作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为“永久”或启用主题的日志压缩功能即可
流式处理平台:
Kafka Streams提供了丰富的类库,可以使用对于API进行开发。