模板网站建设服务商,永州seo快速排名,做网站语言知乎,wordpress 主题商店文章目录 一、介绍二、消息队列通信的模式三、特性四、使用场景五、核心概念 一、介绍
kafka是一个分布式的发布订阅消息系统基于Zookeeper协调最初由Linkedin公司开发#xff0c;于2010年贡献给了Apache基金会并成为顶级开源项目Kafka的核心是由Scala语言编写#xff0c;Ka… 文章目录 一、介绍二、消息队列通信的模式三、特性四、使用场景五、核心概念 一、介绍
kafka是一个分布式的发布订阅消息系统基于Zookeeper协调最初由Linkedin公司开发于2010年贡献给了Apache基金会并成为顶级开源项目Kafka的核心是由Scala语言编写Kafka的客户端库使用Java语言编写
二、消息队列通信的模式
点对点模式 消息持久化到一个队列中一个或多个消费者消费队列中的消息消息只能被消费一次当一个消费者消费完成一条消息后就会删除该消息 发布订阅模式 消息被持久化到一个topic中与点对点消息系统不同的是消费者可以订阅一个或多个topic消费者可以消费该topic中所有的数据同一条数据可以被多个消费者消费数据被消费后不会立马删除在发布-订阅消息系统中消息的生产者称为发布者消费者称为订阅者
三、特性
高吞吐量、低延迟kafka每秒可以处理几十万条消息它的延迟最低只有几毫秒可扩展性kafka集群支持热扩展持久性、可靠性消息被持久化到本地磁盘并且支持数据备份防止数据丢失容错性允许集群中节点失败若副本数量为n,则允许n-1个节点失败高并发支持数千个客户端同时读写
四、使用场景
日志收集公司可以用Kafka可以收集各种服务的log通过kafka以统一接口服务的方式开放给各种消费者消息系统解耦生产者和消费者、缓存消息用户活动跟踪Kafka经常被用来记录web用户或者app用户的各种活动如浏览网页、搜索、点击等活动这些活动信息被各个服务器发布到kafka的topic中然后订阅者通过订阅这些topic来做实时的监控分析运营指标Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据生产各种操作的集中反馈比如报警和报告
五、核心概念 Broker 1个Broker就是1个kafka节点多个Broker组成1个kafka集群每个kafka集群内的Broker都有一个唯一的idbroker.id Producer 生产者负责生产消息 Consumer 消费者负责消费消息 Consumer Group 消费者组由1个或多个消费者组成1个Partition的数据只能被消费者组中的某一个消费者消费不能被组内多个消费者消费。但是1个消费者组的消费者可以消费多个Partition的数据消费者组内消费者的数量和Partition的关系例如有3个Partition 1个消费者该消费者消费所有Partition2个消费者1个消费者消费2个Partition1个消费者消费1个Partition4个消费者3个消费者消费3个partition1个消费者空闲最优的设计就是消费者组下的消费者数量等于分区数量效率最高 消费者组之间是相互独立的互不影响 Topic 消息的主题可以理解为消息的分类在每个Broker上可以创建多个topic用于建立生产者、消费者的订阅关系 Partition 消息分区是实现横向扩展和高并发的重要设计每个topic有1个或多个分区每个分区是一个有序的队列分区才是真正的存放消息的地方kafka会把topic中的消息均匀的分布在所有的分区每个分区存放的消息是不一样的。分区可以分布在不同的服务器上也就是说 1个topic可以横跨多个服务器当topic中的消息越来越多我们可以增加服务器也就是增加新的分区来实现横向扩展 Replication 副本是消息分区的备份是kafka实现故障转移保证高可用的重要设计每个分区可以有1个或多个副本副本数量要集群中broker的数量副本有两种类型 leader 每个分区只有1个负责处理读写请求follower 每个分区有0个不处理客户端的请求只做备份所有的follower都会从leader同步消息保持与leader消息的一致。如果leader发生故障其中的1个follower会被选举为新的leader Offset 偏移量消息在parttion中的位置称为偏移量是一个从0开始的整数parttion中每新增1个新的消息offset就会递增1如1个parttion中第1条消息的offset0第2条消息的offset1每个消费者在消费信息后需要提交offset以此来确定自己消费的进度。可以自动提交也可以手动提交