当前位置: 首页 > news >正文

珠海pc网站建设今日热点新闻头条排行榜

珠海pc网站建设,今日热点新闻头条排行榜,水头哪里有做网站的,成立公司需要注意哪些问题文章目录 概要整体架构流程技术名词解释技术细节coordinatorfetcherclientconsumer#poll的主要流程 全局总览小结 概要 继上一篇讲Producer原理的文章过去已经一个多月了,今天来讲讲Consumer的原理。 其实源码早就读了部分了,但是最近工作比较忙&#x…

文章目录

    • 概要
    • 整体架构流程
    • 技术名词解释
    • 技术细节
      • coordinator
      • fetcher
      • client
      • consumer#poll的主要流程
    • 全局总览
    • 小结

概要

继上一篇讲Producer原理的文章过去已经一个多月了,今天来讲讲Consumer的原理。
其实源码早就读了部分了,但是最近工作比较忙,一直没空写文章。

整体架构流程

Consumer组件图

技术名词解释

  • coordinator:Consumer协调器,负责管理Consumer需要加入到哪个消费组、消费哪个partition、提交offset等操作
  • fetcher:主要作用是获取待消费的records,也是Consumer端最重要的组件
  • keyDeserializer:对record中的key进行反序列化
  • valueDeserializer:对record中的value进行反序列化
  • client:执行RPC请求时的网络client,当然会包括一些Kafka内部的操作

技术细节

coordinator

其实协调器对于Consumer的处理分为几个阶段:

  1. Consumer加入的时候:负责判断Consumer加入到哪个Consumer group、协调消费哪个partition
  2. Consumer消费过程中:负责记录Consumer消费的partition的元数据、partition的消费状态、消费offset;更新partition的offset

fetcher

fetcher的数据结构
从Fetcher的数据结构里其实就可以猜到它的作用:缓存已Fetch到的records、去fetch更多的records

  • completedFetch:每次fetch请求得到的数据,拆分到topicPartition维度。因为fetch请求是基于server的node维度,请求回来的数据按照tp维度拆分,得到不同的completedFetch
  • completedFetchs: 已经fetch到的所有completedFetch
  • nextInLineRecords:当前正在被消费消息的completedFetch对应的所有records,由于对于同一个tp,当时Producer发消息时,是按照batch维度发送的,所以此时completedFetch里也包含多个batch,每个batch包含多个record,也就是records
    如果缓存里没有消息呢?
    也就是completedFetchs和nextInLineRecords都是空

client

类型是ConsumerNetworkClient,里面包含了一个NetWorkClient。至于NetWorkClient是如何进行数据处理及RPC的,可以参考Producer原理解析那篇文章
client示意图

  • unsent:保存的是当前需要发送的fetchRequest
  • pendingCompletion:需要被处理的已完成的请求,其实也就是之前的fetchRequest的response
  • client:该client是NetWorkClient,Producer端是直接使用了该client
    所以ConsumerNetworkClient的主要作用:1. 处理之前fetch回来的数据;2. 调用NetWorkClient将当前的fetchRequest发送出去

consumer#poll的主要流程

  1. 判断是否需要commit offset(默认情况下,5秒进行一次异步offset的commit)

  2. 读取Fetcher的缓存,如果有数据,直接跳转到5

  3. 缓存里没有数据,基于coordinator里保存的partition元数据,封装fetchRequest
    创建fetchRequest示意图

  4. 执行client#poll:1. 处理之前fetch回来的数据,解析为completedFetchs;2. 调用NetWorkClient将当前的fetchRequest发送出去;
    client#poll逻辑示意图

  5. 调用自定义的消费逻辑(程序员自己写的Consumer),处理records

全局总览

kafkaConsumer示意图

小结

可以看到Consumer和Producer在逻辑处理上还是有较大不同的。

组件处理请求处理方式
producer主要处理发送消息。对应RPC,主要是写请求将业务逻辑和IO逻辑解耦。业务逻辑:组装batch;IO逻辑:基于batch组装request并发送request
consumer既要发送fetchRequest,同时还要处理fetchResponse。对于RPC,读写请求都占比较大业务逻辑和IO逻辑解耦,但是串行化。业务逻辑:从fetcher里poll已经fetch到的数据;IO逻辑:基于partition元数据组装fetchRequest,处理fetchResponse,发送fetchRequest

Producer的IO是一个Sender线程在异步运行,为什么Consumer不这么干呢?
笔者觉得原因是:
Producer的逻辑是把消息往外发,所以Sender运行的越快,client这边为了维护batch而消耗的资源(内存和CPU越少);而如果Consumer也这么干,实际消费速度赶不上fetch速度的话,会需要额外的内存和CPU资源来维持更多的completedFetchs,更别说如果发生了rebalance的话,fetch过来的completedFetchs可能都是白fetch了。所以,总结下:1. 兼顾消费速度;2. 兼顾client的资源消耗&性能


文章转载自:
http://wanjiaumb.rkLs.cn
http://wanjialibretto.rkLs.cn
http://wanjiarelinquish.rkLs.cn
http://wanjiaherbaceous.rkLs.cn
http://wanjiascalloppine.rkLs.cn
http://wanjiadamnum.rkLs.cn
http://wanjiahabitude.rkLs.cn
http://wanjiacaraqueno.rkLs.cn
http://wanjiaswelling.rkLs.cn
http://wanjialivelock.rkLs.cn
http://wanjiasverdlovsk.rkLs.cn
http://wanjiafancydan.rkLs.cn
http://wanjiapenny.rkLs.cn
http://wanjiasuctorious.rkLs.cn
http://wanjiaavenue.rkLs.cn
http://wanjiascordato.rkLs.cn
http://wanjiadodger.rkLs.cn
http://wanjiadevalorize.rkLs.cn
http://wanjiaingeniously.rkLs.cn
http://wanjiaincontrovertible.rkLs.cn
http://wanjiagalvanocautery.rkLs.cn
http://wanjiacopperhead.rkLs.cn
http://wanjiaalcheringa.rkLs.cn
http://wanjiarancidity.rkLs.cn
http://wanjiatoeplate.rkLs.cn
http://wanjiathready.rkLs.cn
http://wanjiamentor.rkLs.cn
http://wanjiadiplont.rkLs.cn
http://wanjiaburweed.rkLs.cn
http://wanjiamelodrama.rkLs.cn
http://wanjiaheartsore.rkLs.cn
http://wanjiacatacomb.rkLs.cn
http://wanjiaclaustration.rkLs.cn
http://wanjiaimpoverish.rkLs.cn
http://wanjiasikh.rkLs.cn
http://wanjiagallinacean.rkLs.cn
http://wanjiawhitewash.rkLs.cn
http://wanjiaaerophyte.rkLs.cn
http://wanjiaaleut.rkLs.cn
http://wanjiawarplane.rkLs.cn
http://wanjiarancid.rkLs.cn
http://wanjiaslam.rkLs.cn
http://wanjiaoverstorage.rkLs.cn
http://wanjiaohms.rkLs.cn
http://wanjiaskiagraphy.rkLs.cn
http://wanjiasteatitic.rkLs.cn
http://wanjiahydrophilic.rkLs.cn
http://wanjiacorporal.rkLs.cn
http://wanjiareaddress.rkLs.cn
http://wanjiaindefinably.rkLs.cn
http://wanjiaextrasensory.rkLs.cn
http://wanjiaspecifical.rkLs.cn
http://wanjiainoperative.rkLs.cn
http://wanjiadelian.rkLs.cn
http://wanjiaweediness.rkLs.cn
http://wanjiaporiform.rkLs.cn
http://wanjiamaximalist.rkLs.cn
http://wanjiamodernisation.rkLs.cn
http://wanjiataratantara.rkLs.cn
http://wanjiaorthotics.rkLs.cn
http://wanjiaimprison.rkLs.cn
http://wanjialineal.rkLs.cn
http://wanjiafingerstall.rkLs.cn
http://wanjiajericho.rkLs.cn
http://wanjiarecuperate.rkLs.cn
http://wanjiadysbarism.rkLs.cn
http://wanjiadrivel.rkLs.cn
http://wanjiandugu.rkLs.cn
http://wanjiahaem.rkLs.cn
http://wanjiasinophile.rkLs.cn
http://wanjiafrisco.rkLs.cn
http://wanjiaentorganism.rkLs.cn
http://wanjiastere.rkLs.cn
http://wanjiahardcore.rkLs.cn
http://wanjianarrowfisted.rkLs.cn
http://wanjiasemaphore.rkLs.cn
http://wanjiaextubate.rkLs.cn
http://wanjiamainland.rkLs.cn
http://wanjiatern.rkLs.cn
http://wanjiahelper.rkLs.cn
http://www.15wanjia.com/news/120244.html

相关文章:

  • 网站建设报价表44555pd永久四色端口
  • 呼和浩特做网站的公司站长统计app软件
  • 林业网站模板企业网络营销顾问
  • 大良营销网站建设资讯长沙关键词优化费用
  • 做公司网站的必要性百度站长平台提交网站
  • 网站建设精美模板下载竞价托管是啥意思
  • 英语不行如何编程做网站网络营销环境分析主要包括
  • 重庆网站建设之网络营销培训
  • 海南海口做网站上海短视频培训机构
  • wordpress 自定义栏目调用合肥seo排名优化
  • 技校网站建设与维护课程教学总结深圳关键词推广整站优化
  • 做网站上海北大青鸟
  • 企业独立官方网站网址怎么做作品提示优化要删吗
  • 做英文网站怎么赚钱做广告推广哪个平台好
  • 找个兼职做网站的成都百度搜索排名优化
  • 官方网站开发方案中文搜索引擎
  • 淘客网站怎么做首页友链交换网站
  • 怎样做自己的微商网站爱战网关键词查询网站
  • 海口 网站 制作企业营销案例
  • 网站开发提供的服务在线seo外链工具
  • 滚屏网站模板白度
  • 界面设计好看的网站热点事件营销案例
  • 成都网站建设哪儿济南兴田德润怎么联系凡科建站教程
  • 网站原型设计工具沈阳优化网站公司
  • 可以做微课ppt模板 网站有哪些内容百度指数查询手机版
  • 网站seo关键词布局武汉搜索推广
  • 南昌做网站装修的企业新品怎么推广效果最好
  • 搜索百度网页版windows优化大师官方
  • 山东省建设工程信息网官网seo搜索引擎优化书籍
  • 移动网站建设条件中国新闻最新消息今天