做电影网站不放国内主机,wordpress幻灯箱插件,万网建站流程,湖南网站建站系统哪家好浅谈Kafka#xff08;一#xff09; 文章目录 浅谈Kafka#xff08;一#xff09;Kafa的设计是什么样的数据传输的事务定义消息队列的应用场景Kafka怎么样判断节点是否存活Kafka的消息是采用pull模式还是push模式Kafka在磁盘上的消息格式Kafka高效文件存储设计特点Kafka与传…浅谈Kafka一 文章目录 浅谈Kafka一Kafa的设计是什么样的数据传输的事务定义消息队列的应用场景Kafka怎么样判断节点是否存活Kafka的消息是采用pull模式还是push模式Kafka在磁盘上的消息格式Kafka高效文件存储设计特点Kafka与传统消息系统之间的区别Kafka的分区数据怎样保存到磁盘Kafka消费者如何消费消息消费者负载均衡策略数据有序Kafka生产数据时数据的分组策略Kafka生产数据时数据的分组策略 消息队列中间件就是用来存储消息的软件。举个例子来说为了分析网站的用户行为我们需要记录用户的访问日志。这些日志可以看成是一条条的消息我们可以将它们保存到消息队列中。将来有一些应用程序需要处理这些日志就可以虽是将这些日志取出来处理。 Kafa的设计是什么样的
Kafka把消息以主题topic为单位进行归纳把向发布消息的程序称为生产者producer订阅主题并消费消息的程序称为消费者consumer。Kafka以集群的方式运行可以由一个或多个服务组成每个服务叫做一个broker。生产者通过网络把消息发送给Kafka集群集群向消费者提供消息。
数据传输的事务定义 数据传输的事务定义通常有最多一次、至少一次、精确的一次三种。 最多一次是消息不会被重复发送最多被传输一次但也可能一次都不传输。至少一次是消息不会被漏发至少被传输一次但也可能会被重复传输。精确的一次是不会漏发也不会重复传输每个消息都被传输一次。
消息队列的应用场景 异步处理比如电商网站中新用户注册时需要将用户信息存储在数据库中同时还需要额外发送注册的邮件通知以及短信注册码给用户。但是因为发送邮件、发送短信注册码需要连接外部服务器需要额外等待一段时间。此时就可以使用消息对来来进行异步处理从而实现快速响应。 应用解耦 流量削峰 日志处理
Kafka怎么样判断节点是否存活
节点必须可以维护和zookeeper的连接zookeeper通过心跳检测机制检查每个节点的连接。如果节点是follower则必须能够及时同步leader的写操作延迟不能太久。
Kafka的消息是采用pull模式还是push模式
消费者从broker拉取消息是pull模式而broker把消息推送给消费者是push模式。Kafka采用的设计是生产者把消息推送到broker消费者从broker拉取消息。一些消息系统比如Apache Flume采用了push模式把消息推送到下游的消费者。由broker决定消息推送的频率对于不同消费速率的消费者就不太好处理了。消息系统都致力于让消费者以最大速率消费消息但是push模式下当broker的推送速率大于消费者的消费速率时消费者可能要崩溃了最终Kafka采取了pull模式。pull模式好处是消费者可以根据自己的消费能力决定是否批量的从broker拉取消息缺点是如果broker没有可供消费的消息会导致消费者不断在循环中轮询直到新消息到达。Kafka可以通过设置参数让消费者阻塞直到新消息到达。
Kafka在磁盘上的消息格式
消息由一个固定长度的头部和可变长度的字节数组组成头部包含了一个版本号和CRC32校验码。消息长度有4bytes值为14n。版本号占1byteCRC校验码占4bytes具体的消息占nbytes。
Kafka高效文件存储设计特点
Kafka把topic中一个partition大文件分成多个小文件段通过多个小文件段就容易定期清除或删除已经消费完的文件减少磁盘占用。通过索引信息可以快速定位message和确定response的最大大小。通过index元数据全部映射到memory避免段文件的IO磁盘操作。通过索引文件稀疏存储可以降低index文件元数据占用空间大小。
Kafka与传统消息系统之间的区别
Kafka持久化日志可以被重复读取和无限期留存。Kafka是一个分布式系统以集群的方式运行可以灵活伸缩在内部通过复制数据提升容错能力和高可用性。Kafka支持实时的流式处理。
Kafka的分区数据怎样保存到磁盘
主题中的多个分区以文件夹的形式保存到broker每个分区序号从0递增并且消息有序。分区文件夹下有多个段segment文件.index.log。段文件里的大小和配置文件大小一致可以根据需要进行修改默认为1g如果大于1g就会滚动一个新的段并且以上一个段最后一条消息的偏移量命名。
Kafka消费者如何消费消息
消费者每次消费数据时记录消费的物理偏移量offset的位置等到下次消费时会接着上次位置继续消费。
消费者负载均衡策略
一个消费者组中的一个分片对应一个消费者成员它能保证每个消费者成员都能访问如果组中的成员太多会有空闲的成员。
数据有序
一个消费者组中的内部是有序的消费者组和消费者组之间是无须的。
Kafka生产数据时数据的分组策略
数据有序
一个消费者组中的内部是有序的消费者组和消费者组之间是无须的。
Kafka生产数据时数据的分组策略
生产者决定发送到集群的那个分区中每条消息都是以键值对的格式。