kafka和mq的应用场景_kafka和mq

kafka和mq的应用场景_kafka和mqkafka为什么有高的吞吐量?快来看看吧!~~~

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、前言

在这个系列博客中,小编将向大家介绍一下一款吞吐超级大的消息中间件——kafka。
说到消息中间件MQ,小编也在前面的博客中介绍过 rocketMq,activeMq等等。

至于为什么叫kafka呢?是因为创作它的程序员叫做jay krep,他非常喜欢 弗兰兹·卡夫卡,觉的kafka这个名字很酷,所以就起了这个名字。名字没有什么特别的意思。

二、什么是kafka?能干点什么?

在这里插入图片描述

Kafka是由Apache软件基金会开发的一个开源流平台,由Scala和Java编写。Kafka的Apache官网是这样介绍Kafka的。

流平台?干什么的?

From apache kafka官网

  1. To publish (write) and subscribe to (read) streams of events, including continuous import/export of your data from other systems.
  2. To store streams of events durably and reliably for as long as you want.
  3. To process streams of events as they occur or retrospectively.

翻译过来就是:

  1. 发布和订阅流数据流,包括从其他系统持续导入/导出数据。
  2. 持久化数据流,数据落地
  3. 处理数据流,数据流回放

三、kafka的架构图

在这里插入图片描述

首先kafka其他mq一样,都是有 服务端和客户端组成,客户端我们一般分成 生产者和消费者。

  • 生产者

  • 服务端,一个节点叫做broker,多个broker组成我们的集群。其中通过 zookeeper来管理集群,比如集群配置,leader的选举,负载均衡等。

  • 消费者

在这里插入图片描述

这里还有一些概念要介绍:

  • topic
    队列,生产者会发送消息到topic,消费者从topic消费消息。

  • partition
    分区,目的是提高并发,一个topic可以有多个partition,每个patition内的消息是保证顺序的,是有序队列。

  • segment
    每个patition又由多个segment file组成。文件存储二进制格式数据
    segment = xxx.index + xxxx.timeindex + xxxx.log
    xxxx.log是数据文件,xxx.index 和 xxx.timeindex 是索引文件。

log文件大小默认是1G,超出限制会新建立一个文件。可以通过log.segment.byte参数来配置每个segment大小。

命名规则:partition的第一个segment从0开始,后续每个segment文件名为上一个segment文件最后一条消息的offset + 1

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • replica
    副本,kafka为了保证消息的高可用性,为每个日志文件都做了备份,被称作副本,目的就是为了防止数据丢失,这样就拆成了两类:leader 和 follower。如果其中一台broker 宕机,Kafka 会从剩余的 replica 中选举出新的 leader 继续提供服务。

  • leader
    主副本,其中的数据会给到消费者。

  • follower
    从副本,备胎,个别broker宕机的时候,可以重新选举为主副本。从副本中的数据,不会给到消费者。从副本主动从主副本拉取,不同从副本的拉取同步速度也是不一样的。

  • offset
    消费者消费的位置信息,当消费者挂掉或重新恢复的时候可以,从消费位置重新继续消费。

  • consumer group
    消费者组,消费者组内所有的消费者,分别消费不同分区数据,消费互斥。

  • ISR
    in sync replica,基本保持同步的Replica列表,是从副本与主副本保持同步的列表,默认是30s数据,如果从副本保持同步,那么重新选举leader的时候,会被选择;如果与主副本同步差距较大,会被移除,选举leader,将不会被考虑。

  • OSR
    out of sync replica,同步有延迟的follower列表。

  • LEO (logEndOffset)
    表示每个partition的log最后一条message的位置。

  • HW(高水位 HighWatermark)
    每个partition的副本数据间同步且一致的offset位置,即表示所有副本都已经commit的位置
    高水位之前的数据才是Commit后的,对消费者才可见

在这里插入图片描述

四、小结

了解kafka的架构,就是要了解设计理念,阿里的rocketmq也是根据kafka的这个架构来设计的,好的架构可以拓展出更多的中间件。了解透了,你就会有收获。

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

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

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


相关推荐

  • Oracle 10g AND Oracle 11g手工建库案例–Oracle 11g「建议收藏」

    Oracle 10g AND Oracle 11g手工建库案例–Oracle 11g

    2022年1月23日
    41
  • Ubuntu18.04安装edge

    Ubuntu18.04安装edgeUbuntu18.04安装edge为了同步数据和书签,选择长期使用edge安装方法更新程序包索引并安装依赖项:sudoaptupdatesudoaptinstallsoftware-properties-commonapt-transport-httpswget使用以下命令导入MicrosoftGPG密钥wget:wget-qhttps://packages.microsoft.com/keys/microsoft.asc-O-|sudoapt-keyadd-

    2022年7月21日
    26
  • 软件测试流程设计—黑盒测试用例设计方法「建议收藏」

    软件测试流程设计—黑盒测试用例设计方法「建议收藏」第1章测试用例设计方法测试用例设计方法包括黑盒测试用例设计方法和白盒测试用例设计方法,下面分别进行介绍。1.1黑盒测试用例设计方法黑盒测试用例设计方法包括等价类划分法、边界值分析法、判定表法、因果图法、正交试验法、状态迁移图法、流程分析法、输入域测试法、输出域分析法、异常分析法和错误猜测法等,下面进行详细介绍。1.1.1 等价类划分法1.什么是等价类划分法等价类划分法是一种典型的黑盒测试设计方法。该方法主要针对测试子项进行规格分析,然后获得用例,而不用对系统内部处理进行深..

    2022年6月1日
    30
  • vim命令下显示行号[通俗易懂]

    vim默认不显示行号如何使vim命令显示行号?显示当前行行号在vim的命令模式下,在光标停留处,退出命令模式,然后输入:nu,即可显示当前这行的号码显示所有行号如果要显示该文件的所有行号,则需要在vim的命令模式下,输入:setnu,则可以显示该文件的所有行号取消所有行号如果要显示该文件的所有行号,则需要在vim的命令模式下输入,在光标停留处,退出命令模式,然后输入:setnonu,即可显示当前这行的号码这样的设置方法只能维持在,当前vim打开的文件…

    2022年4月11日
    117
  • pandas astype()错误[通俗易懂]

    pandas astype()错误[通俗易懂]由于数据出现错误DataError:Nonumerictypestoaggregate改正以后才认识到astype的重要性。Top15[‘populations’]=Top15[‘EnergySupply’].div(Top15[‘EnergySupplyperCapita’]).astype(float)df_mean=((df.set_ind…

    2022年5月15日
    49
  • 手机app抓包

    手机app抓包总是收到公司部分客户特定机型,情况下才出现的bug此类问题较为难以复现需要客户协助进行抓包处理,写一个简单教程方便与客户沟通!app下载地址链接:https://pan.baidu.com/s/1M8x8DsTy0pcgnGyKEsJ_Ow提取码:cd4i1.安装抓包软件2.进入错误页面的上一个页面如果B页面是出错的页面,点击A(页面或者按钮)进入到B页面那么我们就打开A页面就可以了3.选择需要抓包的应用4.抓取操作信息5.如果错误信息比较多点击.

    2022年5月29日
    35

发表回复

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

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