Kafka是一个消息引擎,和一个分布式的流处理平台。
应用场景:1. 消息队列,提供应用程序之间的通信。2,数据处理。
Topic:主题,生产者发布消息到特定的主题,生产者订阅这个主题获取消息
Producer:生产者,生产消息
Consumer:消费者,消费消息
Broker:一个kafka集群由多个broker组成,broker负责接收客户端(消费者和生产者都是)的请求。
Parition:分区,一个Topic有多个分区,并且同一个Topic的不同分区可以部署到不同的broker中。
Kafka中传输的对象是消息。如何传输消息是消息的发布/订阅模型。
消息传输模型:- 点对点:系统A发送的消息只能被系统B接收发布/订阅:有一个主题 Topic概念、生产者 Producer 、 消费者 Consumer。生产者将消息发布到 Topic ,消费者去接收。对于一个Topic可以有多个生产者和多个消费者。
点对点如何实现:采用一个消费者组订阅同一个主题组。主题组内每个分区只能被消费者组内一个消费者消费。
高可用:集群中有多个broker可以部署到不同的服务器上面。数据有备份机制(Replication)
三层消息架构一条数据的写入:会写入一个Topic下的一个分区中,这个分区就是一个消息日志。使用一个分区位移offset来表示数据位置。日志就是一个物理日志,采用的是追加写,也就是顺序写。
- 主题层:每个主题可以配置M个分区。每个分区又可以部署N个副本分区层:每个分区只有一个副本可以为leader副本,其余都是follow副本。消息层:分区中包含若干消息,每条消息从位移0开始,递增写入。客户端只能和领导者副本交互
日志对应着物理日志,采用追加写。避免了磁盘的随机写。避免日志使用完,会有定期删除。一个日志细分为多个日志段,日志段写满之后就会切出在新的日志段写。会定期判断日志段是否可回收。
数据备份机制(多副本机制)是什么:
在一个Topic的分区中的一份数据有多个副本。其中仅有一个是leader副本,其余的是follow副本。只有leader副本具有数据的读写功能,其余副本只能同步leader副本的数据。仅仅保证数据存储的安全性
好处:
多分区:一个Topic的分区可以在不同的broker中,提供较好的并发能力,负载均衡。
多副本:减少了数据丢失的可能。leader副本丢了,还可以从follow副本中重新选举。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)