Kakfa学习笔记(一)——概述

栏目: 后端 · 发布时间: 6年前

内容简介:Kafka是一个分布式流处理平台,一般用作分布式消息中间件以消息系统的角度来看,Kafka是基于发布-订阅模型,Producer主动发起push,将一条消息推到Broker(Kafka服务端的一个节点),ConsumerKafka里以Topic作为发布,订阅的类别,类似数据库的表,一个topic可以被多个producer,consumer发布,订阅。每一个topic都有自己的partition划分,一条消息从发布到消费只会经过一个partition,所以消息在partition内是有序的,这个有序还需要其他

Kafka是一个分布式流处理平台,一般用作分布式消息中间件

架构

Kakfa学习笔记(一)——概述

以消息系统的角度来看,Kafka是基于发布-订阅模型,Producer主动发起push,将一条消息推到Broker(Kafka服务端的一个节点),Consumer 主动 通过pull操作去Broker拿消息,另外还有zookeeper作为一个协调系统去协调建立连接,记录offset等分布式的操作。题外话:Kafka已经在慢慢地把很多操作由zk移到自己的broker上

Topic和Partition

Kafka里以Topic作为发布,订阅的类别,类似数据库的表,一个topic可以被多个producer,consumer发布,订阅。每一个topic都有自己的partition划分,一条消息从发布到消费只会经过一个partition,所以消息在partition内是有序的,这个有序还需要其他机制的支持,后面会说到

另外,Kafka也可以作为存储系统,因为Kafka跟其他的消息队列不一样,Kafka的消息是持久化到磁盘的,并且不是消费完就删除。事实上往broker发布一条消息,broker仅仅持久化消息,等到consumer主动发起pull,告诉broker一个offset,broker把offset对应的消息返回给consumer。因此consumer是可以通过offset回溯消费。Kafka的性能在数据大小方面实际上是恒定的,所以可以长时间存储数据。当然消息在磁盘中会越来越多,可以设置只保留多久的消息

生产者

producer比较好理解,和broker建立连接后,producer自己指定partition,把消息推给broker就好了,并没有什么复杂的概念。

消费者和消费者组

上面提到,一个topic可以有多个consumer,我们的分布式系统都是有多台实例,如果都订阅了这个topic,岂不是重复消费了?因此Kafka有一个消费组的概念,订阅的时候是以消费组为单位,一个partition只能被同个消费组下的一个消费者实例消费,但是一个消费者实例可以消费多个partition,这样保证了在同一个消费组下不会重复消费

消费者实例可以是不同机器也可以是不同的进程,消费者建立Kafka连接时通过指定消费组名称标记自己。一般我们就把一个分布式服务作为消费组,服务下的机器作为消费者实例

Kakfa学习笔记(一)——概述

例如上图有4个partition,消费组B有4个消费者实例,Kafka会负载均衡给每个实例指定一个分区。如果B组有五个实例,第五个实例是不会消费的,直到前四个实例有一个挂了。所以工作的消费者的实例数最多跟分区数一样,所以设置分区数会影响我们Kafka的消费速率

下一篇: Kakfa学习笔记(二)——体验Kafka


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解密码技术

图解密码技术

[日] 结城浩 / 周自恒 / 人民邮电出版社 / 2014-12 / 79.00元

本书以图配文的形式,详细讲解了6种最重要的密码技术:对称密码、公钥密码、单向散列函数、消息认证码、数字签名和伪随机数生成器。 第一部分讲述了密码技术的历史沿革、对称密码、分组密码模式(包括ECB、CBC、CFB、OFB、CTR)、公钥、混合密码系统。第二部分重点介绍了认证方面的内容,涉及单向散列函数、消息认证码、数字签名、证书等。第三部分讲述了密钥、随机数、PGP、SSL/TLS 以及密码技......一起来看看 《图解密码技术》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具