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

织梦网站需要优化百度推广创意范例

织梦网站需要优化,百度推广创意范例,百度推广信息流有用吗,美国做电商网站有哪些内容目录 前言: kafak是如何处理请求的? 控制请求与数据类请求 参考资料 前言: 无论是 Kafka 客户端还是 Broker 端,它们之间的交互都是通过“请求 / 响应”的方式完成的。比如,客户端会通过网络发送消息生产请求给 B…

目录

前言:

kafak是如何处理请求的?

控制请求与数据类请求 

参考资料


前言:

      无论是 Kafka 客户端还是 Broker 端,它们之间的交互都是通过“请求 / 响应”的方式完成的。比如,客户端会通过网络发送消息生产请求给 Broker,而 Broker 处理完成后,会发送对应的响应给到客户端。

      Kafka 自己定义了一组请求协议,用于实现各种各样的交互操作。比如常见的 PRODUCE 请求是用于生产消息的FETCH 请求是用于消费消息的,METADATA 请求是用于请求 Kafka 集群元数据信息的。

kafak是如何处理请求的?

     Reactor 模式。简单来说,Reactor 模式是事件驱动架构的一种实现方式,特别适合应用于处理多个客户端并发向服务器端发送请求的场景。

 多个客户端会发送请求给到 Reactor。Reactor 有个请求分发线程 Dispatcher,也就是图中的 Acceptor,它会将不同的请求下发到多个工作线程中处理。

在这个架构中,Acceptor 线程只是用于请求分发,不涉及具体的逻辑处理,非常得轻量级,因此有很高的吞吐量表现。而这些工作线程可以根据实际业务处理需要任意增减,从而动态调节系统负载能力。

kafka的请求示意图:

Kafka 的 Broker 端有个 SocketServer 组件,类似于 Reactor 模式中的 Dispatcher,它也有对应的 Acceptor 线程和一个工作线程池,只不过在 Kafka 中,这个工作线程池有个专属的名字,叫网络线程池。Kafka 提供了 Broker 端参数 num.network.threads,用于调整该网络线程池的线程数。其默认值是 3,表示每台 Broker 启动时会创建 3 个网络线程,专门处理客户端发送的请求。

Acceptor 线程采用轮询的方式将入站请求公平地发到所有网络线程中,因此,在实际使用过程中,这些线程通常都有相同的几率被分配到待处理请求。这种轮询策略编写简单,同时也避免了请求处理的倾斜,有利于实现较为公平的请求处理调度。 

当网络线程接收到请求后,它是怎么处理的呢?你可能会认为,它顺序处理不就好了吗?实际上,Kafka 在这个环节又做了一层异步线程池的处理,我们一起来看一看下面这张图。

当网络线程拿到请求后,它不是自己处理,而是将请求放入到一个共享请求队列中。Broker 端还有个 IO 线程池,负责从该队列中取出请求,执行真正的处理。如果是 PRODUCE 生产请求,则将消息写入到底层的磁盘日志中;如果是 FETCH 请求,则从磁盘或页缓存中读取消息。 

IO 线程池处中的线程才是执行请求逻辑的线程。Broker 端参数 num.io.threads 控制了这个线程池中的线程数。目前该参数默认值是 8,表示每台 Broker 启动后自动创建 8 个 IO 线程处理请求。你可以根据实际硬件条件设置此线程池的个数。

比如,如果你的机器上 CPU 资源非常充裕,你完全可以调大该参数,允许更多的并发请求被同时处理。当 IO 线程处理完请求后,会将生成的响应发送到网络线程池的响应队列中,然后由对应的网络线程负责将 Response 返还给客户端。

图中有一个叫 Purgatory 的组件,这是 Kafka 中著名的“炼狱”组件。它是用来缓存延时请求(Delayed Request)的。所谓延时请求,就是那些一时未满足条件不能立刻处理的请求。比如设置了 acks=all 的 PRODUCE 请求,一旦设置了 acks=all,那么该请求就必须等待 ISR 中所有副本都接收了消息后才能返回,此时处理该请求的 IO 线程就必须等待其他 Broker 的写入结果。当请求不能立刻处理时,它就会暂存在 Purgatory 中。稍后一旦满足了完成条件,IO 线程会继续处理该请求,并将 Response 放入对应网络线程的响应队列中。

控制请求与数据类请求 

 Kafka Broker 对所有请求是一视同仁的。但是,在 Kafka 内部,除了客户端发送的 PRODUCE 请求和 FETCH 请求之外,还有很多执行其他操作的请求类型,比如负责更新 Leader 副本、Follower 副本以及 ISR 集合的 LeaderAndIsr 请求,负责勒令副本下线的 StopReplica 请求等。与 PRODUCE 和 FETCH 请求相比,这些请求有个明显的不同:它们不是数据类的请求,而是控制类的请求。也就是说,它们并不是操作消息数据的,而是用来执行特定的 Kafka 内部动作的。

 Kafka 社区把 PRODUCE 和 FETCH 这类请求称为数据类请求,把 LeaderAndIsr、StopReplica 这类请求称为控制类请求。细究起来,当前这种一视同仁的处理方式对控制类请求是不合理的。为什么呢?因为控制类请求有这样一种能力:它可以直接令数据类请求失效!

对于控制请求与数据类请求的处理方案是,Kafka Broker 启动后,会在后台分别创建两套网络线程池和 IO 线程池的组合,它们分别处理数据类请求和控制类请求。至于所用的 Socket 端口,自然是使用不同的端口了,你需要提供不同的 listeners 配置,显式地指定哪套端口用于处理哪类请求。

参考资料

24 | 请求是怎么被处理的?-极客时间

《kafka核心技术与实战》-胡夕

http://www.jinmujx.cn/news/106810.html

相关文章:

  • 做网站字体用什么格式网站建设及推广优化
  • 外贸中间体做哪个网站好朝阳seo建站
  • 网站后台无ftp产品网络推广的方法有哪些
  • 用jsp做的网站在不同浏览器显示效果差异很大如何解决公司企业网站建设方案
  • 17做网站广州百度竞价推广的技巧
  • 城乡厅建设部网站首页乐陵seo优化
  • 18互联网站做网站程序长春网站建设方案咨询
  • 做设计有必要买素材网站会员吗seo会被取代吗
  • 表白网址在线制作南城网站优化公司
  • 网站建设平台方案设计深圳百度推广联系方式
  • 仁怀哪里可以做网站自己建网站要花多少钱
  • 广州网站优化网站建设谷歌商店下载安装
  • 海南在线网站的seo方案
  • 那个外贸网站做的最好吉安seo招聘
  • 做淘宝主要看哪些网站有哪些优化大师有必要花钱吗
  • 通辽网站建设上海企业seo
  • 泸州网站开发网站推广软件哪个好
  • 网站地市频道建设qq推广引流怎么做
  • 老干支部网站建设方案鹤壁搜索引擎优化
  • 石家庄做网站最好的公司有哪些万网域名查询工具
  • 房产怎么创建网站app运营推广是干什么
  • 门户网站建设课程设计搜索引擎推广有哪些平台
  • 政府网站的建设目标seo排名平台
  • 做视频最全的网站西安百度推广代运营
  • 有网站如何做app网络服务公司
  • 怎么看网站有没有做百度推广重庆百度推广开户
  • 自己开个托管班需要什么手续优化推广联盟
  • .ent做的网站有哪些网站转让出售
  • 平湖网站建设公司克推广赚钱的软件排行
  • 高校思政主题网站建设的意义营销和销售的区别在哪里