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

西安网站建设模板公司建设网站服务器必要条件

西安网站建设模板,公司建设网站服务器必要条件,wordpress导航菜单图标,企业建站的作用是什么理解netty的回调 对于都在内存里的回调, 是所有的调用栈持有回调对象,所以在当前执行节点执行完成时,可以直接从内存中拿到回调对象,直接回调即可 针对于网络编程,netty, 需要跨机器经历网络传输,所以不可能调用栈里持有回调对象,所以会额外使用map记录回调对象future…

理解netty的回调

对于都在内存里的回调, 是所有的调用栈持有回调对象,所以在当前执行节点执行完成时,可以直接从内存中拿到回调对象,直接回调即可

针对于网络编程,netty, 需要跨机器经历网络传输,所以不可能调用栈里持有回调对象,所以会额外使用map记录回调对象future, 方便在回调时, 通过requestid找到对应的回调对象,进行回调方法的调用;
所以发起调用的是 channalWrite(), 而netty发起回调的又是另外的方法,channelRecieve()方法。
要把来个方法联系起来看;

如果遇到线程start()方法, 不要看start, 而要直接取看run()方法

获取消息的方式

消费者并不是每次要消费一条数据就向Broker获取一条数据的,这样RPC的开销太大了,因此先从Broker获取一批数据到内存中,再进行消费

消费端获取消息通常有三种方式:推送消息、拉取消息、长轮询(推拉结合)

推送消息:消息持久化到Broker后,Broker监听到有新消息,主动将消息推送到对应的消费者

Broker主动推送消息具有很好的实时性,但如果消费端没有流控,推送大量消息时会增加消费端压力,导致消息堆积、吞吐量、性能下降

拉取消息:消费端可以根据自身的能力主动向Broker拉取适量的消息,但不好预估拉取消息的频率,拉取太慢会导致实时性差,拉取太快可能导致压力大、消息堆积

长轮询:在拉取消息的基础上进行改进,如果在broker没拉取到消息,则会等待一段时间,直到消息到达或超时再触发拉取消息

长轮询相当于在拉取消息的同时,通过监听消息到达,增加推送的优点,将拉取、推送的优点结合,但长连接会更占资源,大量长连接会导致开销大

RocketMQ中常用的消费者DefaultMQPushConsumer,虽然从名字看是“推送”的方式,但获取消息用的是长轮询的方式

这种特殊的拉取消息方式能到达实时推送的效果,并在消费者端做好流控(拉取消息达到阈值就延时拉取)以防压力过大

拉取消息原理

在这里插入图片描述
点进去start方法看,我们自定义的listener被注册入 private MessageListener messageListener;,等待拉到消息后被回调(在大的交互流程中,我们的消费是被回调的一部分)

主要涉及两个类 DefaultMQPushConsumer的内部实现DefaultMQPushConsumerImpl有一个MQ客户端实例MQClientInstance 它内部包含的PullMessageService组件,就是用于长轮询拉取消息的

拉取简化的流程为:
从队列取出PullRequest,然后封装请求向Broker异步发送
响应后通过回调将查到的消息放入其内存队列中,方便后续消费
在此期间最终都会将PullRequest放回队列(失败可能延时放回),便于下次拉取该队列的消息
如下图
在这里插入图片描述
在这里插入图片描述
进入PullMessageService的线程类run方法
在这里插入图片描述

  • pullMessage最终会调用DefaultMQPushConsumerImpl.pullMessage,代码虽然很多,但主要流程为校验、获取参数、调用核心方法

  • 进行参数、状态、流控的校验,如果失败会调用executePullRequestLater后续延时50ms将拉取请求重新放回队列中,也就是后续再进行该队列的消息拉取

  • 如果是第一次执行,要获取消费进度的偏移量computePullFromWhereWithException,后续使用PullRequest上的nextOffset(集群模式向Broker获取)

  • 获取消费端相关信息(后续会封装成请求),创建回调,回调在RPC后调用

  • 执行拉取消息的核心方法 pullKernelImpl

public void pullMessage(final PullRequest pullRequest) {//获取内存队列final ProcessQueue processQueue <
http://www.dtcms.com/a/417908.html

相关文章:

  • 免费企业推广网站二建证书查询官网入口
  • 官方网站怎样做网站建设php怎么安装
  • 快速网站优化哪家好深圳网站建设与制作公司
  • phpstudy网站建设教程wordpress自定义编辑器
  • 散文古诗网站建设目标继续网站建设
  • 中山网站建设是什么seo建站教程
  • 网站漏洞 在线扫描me域名网站
  • 合江县住房建设规划局网站什么是互联网公司
  • 同程网 网站模板福步外贸论坛网官网
  • 威海网站推广怎样切换到经典编辑器wordpress
  • 万网服务器网站建设wordpress 手机不显示内容
  • 一个空间两个php网站三七游戏官网
  • 南宁庆云网站建设WordPress如何设置站点名称
  • 一元购网站开发做网站fjfzwl
  • 辽宁建设工程信息网老网站五八同城找工作
  • 新站seo外包抖音关键词排名优化软件
  • 怎么查看一个网站是谁做的做一个网站多少钱
  • 购买网站项目管理系统平台
  • 天津做网站制作公司正规的网店平台有哪些
  • 服饰团购网站建设做签到的网站
  • 扬州公司做网站公司长沙哪里做网站价格便宜
  • 做响应式网站价格电子工程王粟
  • 自己做网站去哪买服务器小程序制作流程步骤
  • 前端静态网站模板wordpress预加载
  • php企业中英文网站源码学习搭建网站
  • 做公司网站棋牌泉州最专业手机网站建设开发
  • 广州论坛网站建设本地网站搭建视频教程
  • 青岛 制作网站 大点的公司网络营销推广公司
  • 建筑公司网站排名嘉兴网站关键词推广
  • 智能手表网站网络营销网站建设与策划分析