网站统计代码,广水市建设局网站,上线了做网站怎么查看,电子商务网站总体规划的内容Kafka入门教程与详解#xff08;一#xff09;
一、Kafka入门教程
1.1 消息队列#xff08;Message Queue)
Message Queue消息传送系统提供传送服务。消息传送依赖于大量支持组件#xff0c;这些组件负责处理连接服务、消息的路由和传送、持久性、安全性以及日志记录。消…Kafka入门教程与详解一
一、Kafka入门教程
1.1 消息队列Message Queue)
Message Queue消息传送系统提供传送服务。消息传送依赖于大量支持组件这些组件负责处理连接服务、消息的路由和传送、持久性、安全性以及日志记录。消息服务器可以使用一个或多个代理实例。
JMSJava Messaging Service是Java平台上有关面向消息中间件(MOM)的技术规范它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发翻译为Java消息服务。
1.2 MQ消息模型 KafkaMQ消息模型图1-1
1.3 MQ消息队列分类
消息队列分类点对点和发布/订阅两种
1、点对点
消息生产者生产消息发送到queue中然后消息消费者从queue中取出并且消费消息。
消息被消费以后queue中不再有存储所以消息消费者不可能消费到已经被消费的消息。Queue支持存在多个消费者但是对一个消息而言只会有一个消费者可以消费。
2、发布/订阅
消息生产者发布将消息发布到topic中同时有多个消息消费者订阅消费该消息。和点对点方式不同发布到topic的消息会被所有订阅者消费。
1.4 MQ消息队列对比
1、RabbitMQ支持的协议多非常重量级消息队列对路由(Routing)负载均衡(Loadbalance)或者数据持久化都有很好的支持。
2、ZeroMQ号称最快的消息队列系统尤其针对大吞吐量的需求场景擅长的高级/复杂的队列但是技术也复杂并且只提供非持久性的队列。
3、ActiveMQApache下的一个子项类似ZeroMQ能够以代理人和点对点的技术实现队列。
4、Redis是一个key-Value的NOSql数据库但也支持MQ功能数据量较小性能优于RabbitMQ数据超过10K就慢的无法忍受。
1.5 Kafka简介
Kafka是分布式发布-订阅消息系统,它最初由 LinkedIn 公司开发使用 Scala语言编写,之后成为 Apache 项目的一部分。在Kafka集群中没有“中心主节点”的概念集群中所有的服务器都是对等的因此可以在不做任何配置的更改的情况下实现服务器的的添加与删除同样的消息的生产者和消费者也能够做到随意重启和机器的上下线。 Kafka消息系统生产者和消费者部署关系图1-2 Kafka消息系统架构图1-3
1.6 Kafka术语介绍
1、消息生产者即Producer是消息的产生的源头负责生成消息并发送到Kafka
服务器上。
2、消息消费者即Consumer是消息的使用方负责消费Kafka服务器上的消息。
3、主题即Topic由用户定义并配置在Kafka服务器用于建立生产者和消息者之间的订阅关系生产者发送消息到指定的Topic下消息者从这个Topic下消费消息。
4、消息分区即Partition一个Topic下面会分为很多分区例如“kafka-test”这个Topic下可以分为6个分区分别由两台服务器提供那么通常可以配置为让每台服务器提供3个分区假如服务器ID分别为0、1则所有的分区为0-0、0-1、0-2和1-0、1-1、1-2。Topic物理上的分组一个 topic可以分为多个 partition每个 partition 是一个有序的队列。partition中的每条消息都会被分配一个有序的 idoffset。
5、Broker即Kafka的服务器用户存储消息Kafa集群中的一台或多台服务器统称为 broker。
6、消费者分组Group用于归组同类消费者在Kafka中多个消费者可以共同消息一个Topic下的消息每个消费者消费其中的部分消息这些消费者就组成了一个分组拥有同一个分组名称通常也被称为消费者集群。
7、Offset消息存储在Kafka的Broker上消费者拉取消息数据的过程中需要知道消息在文件中的偏移量这个偏移量就是所谓的Offset。
1.7 Kafka中Broker
1、Broker即Kafka的服务器用户存储消息Kafa集群中的一台或多台服务器统称为 broker。
2、Message在Broker中通Log追加的方式进行持久化存储。并进行分区patitions)。
3、为了减少磁盘写入的次数,broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定阀值时,再flush到磁盘,这样减少了磁盘IO调用的次数。
4、Broker没有副本机制一旦broker宕机该broker的消息将都不可用。Message消息是有多份的。
5、Broker不保存订阅者的状态由订阅者自己保存。
6、无状态导致消息的删除成为难题可能删除的消息正在被订阅kafka采用基于时间的SLA(服务水平保证)消息保存一定时间通常为7天后会被删除。
7、消息订阅者可以rewind back到任意位置重新进行消费当订阅者故障时可以选择最小的offset(id)进行重新读取消费消息。
1.8 Kafka的Message组成
1、Message消息是通信的基本单位每个 producer 可以向一个 topic主题发布一些消息。
2、Kafka中的Message是以topic为基本单位组织的不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的)每个partition存储一部分Message。
3、partition中的每条Message包含了以下三个属性
offset 即消息唯一标识:对应类型long
MessageSize 对应类型int32
data 是message的具体内容。
1.9 Kafka的Partitions分区
1、Kafka基于文件存储.通过分区可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限每个partiton都会被当前server(kafka实例)保存。
2、可以将一个topic切分多任意多个partitions来消息保存/消费的效率。
3、越多的partitions意味着可以容纳更多的consumer有效提升并发消费的能力。
1.10 Kafka的Consumers
1、消息和数据消费者订阅 topics并处理其发布的消息的过程叫做 consumers。
2、在 kafka中,我们可以认为一个group是一个“订阅者”一个Topic中的每个partions只会被一个“订阅者”中的一个consumer消费不过一个 consumer可以消费多个partitions中的消息消费者数据小于Partions的数量时。注意kafka的设计原理决定对于一个topic同一个group中不能有多于partitions个数的consumer同时消费否则将意味着某些consumer将无法得到消息。
3、一个partition中的消息只会被group中的一个consumer消息。每个group中consumer消息消费互相独立。