一、定义
Apache Kafka 是一款开源的消息系统。可以在系统中起到“肖峰填谷”的作用,也可以用于异构、分布式系统中海量数据的异步化处理。
系统包括四个主要API:
系统包括四个主要API:
二、功能介绍
1) Topics and log
Topic 是发布记录的类别或订阅源名称。Kafka 的topic 会关联用户;一个topic 可以有 0个或多个Consumer 订阅写入它的数据。
Kafka 三层消息框架:
第一层:主题层,每个主题可以配置N个分区,每个分区可以配置M个副本。
第二层:分区层,每个分区的M个副本, 只能有一个lender副本,其对外提供服务,其它M-1 个副本是 追随者副本,只是提供数据冗余之用(客户端只会与分区中的leader副本进行交互)。
第三层:消息层,分区中包含若干条消息,每条消息的位移从0开始,依次递增。
2)Distribution(消息分配)
日志的分区分布在Kafka 集群中的服务器上,每台服务器都可以处理请求数据。每个分区都在可配置数量的服务器上进行复制,以实现容错。
每个分区只有一个服务器充当“leader”,0个或多个服务器充当“followers”,leader 节点处理分区所有的记录读取和写入,followers节点 复制 leader 节点 的数据。 如果 leader 节点 异常,其中一个 followers 节点会被选举为 leader 节点。每个服务器都可以充当某些分区的 leader 节点 和其它服务器的 followers 节点,因此负载均衡在集群中得到很好的平衡。
3)Geo-Replication(异地复制)
Kafka MirrorMaker为您的群集提供地理复制支持。使用MirrorMaker,可以跨多个数据中心或云区域复制数据。您可以在主动/被动方案中使用它进行备份和恢复; 或者在主动/主动方案中,使数据更接近用户,或支持数据位置要求。
4)Producers
生产者将数据发布到他们选择的主题。生产者负责选择分配给主题中哪个分区的记录。这可以通过循环方式完成,只是为了平衡负载,或者可以根据一些语义分区功能(例如基于记录中的某些键)来完成。
5)Consumers
消费者使用消费者组名称标记自己,并且发布到主题的每个记录被传递到每个订阅消费者组中的一个消费者实例。消费者实例可以在单独的进程中,也可以在不同的机器。
如果所有使用者实例具有相同的使用者组,则记录将有效地在使用者实例上进行负载平衡。
如果所有消费者实例具有不同的消费者组,则每个记录将广播到所有消费者进程。
两个服务器Kafka群集,托管四个分区(P0-P3),包含两个使用者组。消费者组A有两个消费者实例,B组有四个消费者实例。
在Kafka中实现消费的方式是通过在消费者实例上划分日志中的分区,以便每个实例在任何时间点都是分配的“公平份额”的独占消费者。维护组中成员资格的过程由Kafka协议动态处理。如果新实例加入该组,他们将从该组的其他成员接管一些分区; 如果实例死亡,其分区将分发给其余实例。分区实现了Kafka 的高并发。
6)Guarantees(可靠性)
生产者发送到特定主题分区的消息将按其发送顺序附加。也就是说,如果记录M1由与记录M2相同的生产者发送,并且首先发送M1,则M1将具有比M2更低的偏移并且在日志中更早出现。
消费者实例按照它们存储在日志中的顺序查看记录。
对于具有复制因子N的主题,我们将容忍最多N-1个服务器故障,而不会丢失任何提交到日志的记录。
三、名词解释
消息:Record。Kafka是消息引擎,这里的消息就是Kafka处理的主要对象。
主体:Topic。主题就是承载消息的逻辑容器,在实际应用中多用于区分具体业务。
消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增不变的值。
副本:Replica。Kafka中一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
生产者:Producer 。 向主题发布新消息的应用程序。
消费者:Consumer。从主题订阅新消息的应用程序。
消费者位移:Consumer Offset 。表示消费者消费进度,每个消费者都有自己的消费者位移。
消费者组:Consumer Group 。多个消费者实例共同组成的一个组,同时消费多个分区实现高吞吐。
重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其它消费者实例自动重新分配订阅主题分区的过程。Rebalance 是kafka
消费者端实现高可用的重要手段
————————————————
只是简单的了解,深入了解需要点击下面原著
原文链接:https://blog.csdn.net/qq_36918149/article/details/98471761