Kafka 2.3 集群部署
基础概念 Broker(节点)
一个kafka节点就是一个broker,一个集群包含多个broker Topic(主题)
信息类别,kafka根据topic对消息进行归类 Producer(生产者)
信息生产者,采用push模式向broker发送消息的一端,Producer可以发布到一个或更多Topic,并且可以选择用于存储数据的Partition Partition(分区)
一个Topic包含一个或者多个Partition(类似于es的分片),Producer能决定将消息推送到Topic的哪些Partition,并且producer能直接发送消息到对应partition的Leader处 某个topic中的某个partition同时只能有一个Consumer消费 Consumer(消费者)
信息消费者,采用pull模式从broker中读取消息的一端,Consumer可以使用一个或多个Topic或Partition Consumer Group(消费组)
每个Consumer属于一个特定的Consumer Group,topic会复制到各Consumer Group,但该Consumer Group中只能有一个Consumer能够消费该消息 replication(副本)
Topic的备份,消息以partition为单位分配到多个server,并以partition为单位进行备份,replication有leader和follower两种类型,leader提供服务,follower复制数据 leader 负责跟踪所有的 follower 状态,若Topic下的某个分区的flower比leader落后了太多或超过特定时间未发起数据的Pull求,则leader将其重ISR中移除 每个Topic下的每个分区的leader维护着与其基本保持同步的Replica列表,该列表称为ISR 复制类型: 同步复制: 只有所有的follower把数据拿过去后才commit,一致性好,可用性不高 异步复制: 只要leader拿到数据立即commit,等follower慢慢复制,可用性高,立即返回,一致性差 Commit: 是指leader告诉客户端这条数据写成功了(kafka尽量保证commit后若leader立即挂掉,其他flower都有该条数据) 在Producer端可以设置究竟使用那种同步方式: request.required.asks= 0 相当于异步,不需要leader给予回复,producer立即返回,发送就是成功 1 当leader接收到消息之后发送ack,丢会重发,丢的概率很小 -1 当所有的follower都同步消息成功后发送ack. 丢失消息可能性比较低 segment
partition物理上由多个segment组成,同一个topic下有多个不同partition,每一个partition为一个文件夹,partiton命名规则为topic名称+有序序号,第一个partiton序号从0开始,序号最大值为partitions数量减1 offset
offset用于在partition内部唯一标识一条消息 Rebalance(重平衡)
Consumer Group内某个Consumer 故障后,其他Consumer自动重新订阅topic的过程 API(接口)
Kafka 有四个核心API,它们分别是: Producer API: 它允许应用程序向一个或多个 topics 上发送消息记录 Consumer API: 允许应用程序订阅一个或多个 topics 并处理为其生成的记录流 Streams API: 它允许应用程序作为流处理器,从一个或多个Topic中消费输入流并为其生成输出流,有效的将输入流转换为输出流 Connector API: 它允许构建和运行将 Kafka 主题连接到现有应用程序或数据系统的可用生产者和消费者(关系数据库的连接器可能会捕获对表的所有更改) 集群部署 集群规划 节点ip