关于kafuka的简单认识与理解「建议收藏」

关于kafuka的简单认识与理解「建议收藏」因为工作中负责维护的产品中有使用消息中间件kafuka的系统,所以把工作中的理解和遇到的问题总结出来,方便后期查看,好记性不如烂笔头。kafuka是一个分布式的、分区化、可复制提交的发布订阅消息系统,使用kafuka需要对其中的一些概念做简单了解。一、kafuka基础1、topic主题:Kafka中用于区分不同类别信息的类别名称。由producer指定2、Producer:将消息发布到Kafka特定的Topic的对象3、Consumers:订阅并处理特定的Topic中的消息的对象4、broke

大家好,又见面了,我是你们的朋友全栈君。

因为工作中负责维护的产品中有使用消息中间件kafuka的系统 ,所以把工作中的理解和遇到的问题总结出来,方便后期查看,好记性不如烂笔头。kafuka是一个分布式的、分区化、可复制提交的发布订阅消息系统,使用kafuka需要对其中的一些概念做简单了解。
一、kafuka基础
1、topic主题: Kafka中用于区分不同类别信息的类别名称。由producer指定
2、Producer:将消息发布到Kafka特定的Topic的对象
3、Consumers:订阅并处理特定的Topic中的消息的对象
4、broker(Kafka服务集群):已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker). 消费者可以订阅一个或多个话题,并从Broker拉数据,从而消费这些已发布的消息,通俗的说broker就是一台服务器,一个节点。
5、Message:消息,是通信的基本单位,每个producer可以向一个topic(主题)发送一些消息。
6、 Partition(分区): Topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)

分区具体在服务器上面表现起初就是一个目录,一个主题下面有多个分区,这些分区会存储到不同的服务器上面,或者说,其实就是在不同的主机上建了不同的目录。多个分区多个线程,多个线程并行处理提高性能,其中中topic主题只是逻辑概念,而partition就是分布式存储单元,这个设计是保证了海量数据处理的基础。
在这里插入图片描述

二、kafuka集群架构
创建一个TopicA的主题,3个分区分别存储在不同的服务器,也就是broker下面。Topic是一个逻辑上的概念,并不能直接在图中把Topic的相关单元画出
在这里插入图片描述

需要注意:kafka在0.8版本以前是没有副本机制的,所以在面对服务器宕机的突发情况时会丢失数据,所以尽量避免使用这个版本之前的kafka

Consumer Group – 消费者组
​我们在消费数据时会在代码里面指定一个group.id,这个id代表的是消费组的名字,而且这个group.id就算不设置,系统也会默认设置: conf.setProperty(“group.id”,“chenqi”);

consumerA: group.id = a
consumerB: group.id = a
consumerC: group.id = b
consumerD: group.id = b
对于消费者组,如现在consumerA去消费了一个topicA里面的数据,再让consumerB也去消费TopicA的数据,它是消费不到了,但是我们在consumerC中重新指定一个另外的group.id,consumerC是可以消费到topicA的数据的。而consumerD也是消费不到的,所以 在kafka中,不同组可有唯一的一个消费者去消费同一主题的数据。 所以消费者组就是让多个消费者并行消费信息而存在的,而且它们不会消费到同一个消息
在这里插入图片描述

 消费者会直接和leader建立联系,所以它们分别消费了三个leader,所以 一个分区不会让消费者组里面的多个消费者去消费 ,但是在消费者不饱和的情况下, 一个消费者是可以去消费多个分区的数据的 。

三、结合实际问题
实际工作中使用的kafuka集群是四个分区,一个消费者组,但是消费者有四台主机,因为业务量的扩大需要将消费者增加到8个,但是在新主机测试的时候发现,老主机是可以接受到kafuka的消息的,但是新主机接收不到kafuka的消息,如果将老主机进程停止,新主机从新启动,后启动的四台主机是由kafuka消息的,而先启动的就接收不到消息,结合上面的分析,不难看出,是因为分区数小于了当前的消费者组内的消费者数量, 同一个消费组内,消费者数目大于分区数目后,消费者会有空余=分区数-消费者数,所以有四台主机无法接收消息,此时需要结合kafuka的性能去增加分区数,最好是分区数=消费者数,此时效率最高。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131717.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++的条件运算符_条件运算符都有哪些

    c++的条件运算符_条件运算符都有哪些一、运算符1.条件运算符(?:)是C语言中唯一的一个三目运算符,它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。<表达式1>?<表达式2>:&a

    2022年9月27日
    0
  • 如何设置vimrc 配置文件_居中怎么设置

    如何设置vimrc 配置文件_居中怎么设置#HowToVimrc在炮制你自己的.vimrc配置时,这里只有一个原则.不要把任何你不理解的一行放到你的vimrc中.互联网上有以吨计的入门手册,诸如这篇文章.它们之中包含各种令人惊叹的Hack技巧,这可以记你的Vim更好,但为了让你的环境更好完全从别人那儿照搬那些配置,完全是**最糟糕**的做法.真真切切地花一些时间来学习你

    2022年5月3日
    58
  • 【线性代数】线性方程组的求解「建议收藏」

    【线性代数】线性方程组的求解

    2022年1月31日
    70
  • 10分钟彻底理解Redis持久化和主从复制「建议收藏」

    10分钟彻底理解Redis持久化和主从复制

    2022年2月9日
    42
  • 女生学java软件开发怎么样?就业前景如何?

    女生学java软件开发怎么样?就业前景如何?学java目前现状是男生多于女生,从事java工作的也是男生多于女生,那么这种现状是说女生学java不好找工作吗?​  一、女生适合从事java吗?  在很多人的潜意识里,认为女生是不适合从事java工作的,因为他们觉得从事java工作的人逻辑性要相当的好,并且专业操作水平要高,而女生往往在这方面比较弱。其实这只是一种偏见,就像古代人觉得女子不该干涉朝政一样,女生也是适合从事java工作的,并且还能发挥自己的优势把java工作做得更好。  二、女生学java好找工作吗?  1.现在的女生

    2022年7月9日
    24
  • a算法求解八数码问题_a*算法解决八数码问题python

    a算法求解八数码问题_a*算法解决八数码问题python前面见过宽度优先搜索和深度优先搜索求解八数码问题。那两个方法都是盲目搜索。今天看启发式搜索。A算法:利用评价函数来选择下一个节点。图引用自-北京联合大学彭涛老师在中国慕课的《人工智能概论》。估价函数没有定论,可以有不同方法。这里采用处在错误位置的数字的数量。代码在:github一组测试数据的执行搜索的过程如下:A*算法(宽度优先)求解八数码问题==========宽度优先求解八数码问题,搜索过程是==========[[203..

    2022年10月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号