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

建站宝盒站群版主机租赁平台

建站宝盒站群版,主机租赁平台,网站一般用什么语言做,银川网站推广方式文章目录 问题所在#xff1a;消费者如何高效地获取消息#xff1f;解决方案#xff1a;长轮询 (Long Polling - “等待与观察”模式)长轮询 vs. 短轮询#xff08;可视化对比#xff09;为什么这个机制对 RocketMQ 这么好#xff1f;关键的配置参数 让我们用一个简单易懂… 文章目录 问题所在消费者如何高效地获取消息解决方案长轮询 (Long Polling - “等待与观察”模式)长轮询 vs. 短轮询可视化对比为什么这个机制对 RocketMQ 这么好关键的配置参数 让我们用一个简单易懂的方式来分解它。 问题所在消费者如何高效地获取消息 想象一下您是一个“消费者”想要从 RocketMQ 服务器我们称之为 Broker获取消息。您有两种最基本但都有缺陷的方法 “狂躁的”短轮询 (Short Polling - “我们到了吗”模式)您可以每隔几毫秒就疯狂地向 Broker 发送请求“有我的消息吗…现在呢…那现在呢” 问题如果没有新消息这会产生海量的、无用的请求。它不仅浪费网络带宽还给您的应用程序消费者和 Broker 都带来了不必要的负载。这就像一个小孩在旅途中不停地问“我们到了吗”一样。 服务端推送 (Server Push - “别给我们打电话我们会通知你”模式)Broker 可以在消息一到达时就主动地将它“推”给您。 问题真正的“推送”很难管理。如果您的消费者程序正忙或者暂时离线怎么办Broker 可能会尝试推送并导致消息丢失。这也使得流量控制变得困难——Broker 可能会用大量的消息淹没消费者。 这两种方法都不理想。我们需要一种既能“准实时”获取消息又不会产生请求风暴的方法。 解决方案长轮询 (Long Polling - “等待与观察”模式) 这就是长轮询的用武之地。它是一种非常聪明的折中方案通过“拉取Pull”模型实现了类似“推送Push”的效果。 下面是 RocketMQ 长轮询的工作流程一步一步来看 消费者发送一个“拉取”请求您的消费者程序向 Broker 发送一个请求说“你好我想从’主题X’获取一些消息。” Broker 检查是否有消息Broker 收到这个请求后立即检查队列中是否有该消费者可以消费的新消息。 “魔法”在这里发生 情况A有消息。如果 Broker 已经有待处理的消息它会立刻将这些消息打包并作为响应发送回给您的消费者。请求立即完成。情况B没有消息。这是最关键的部分。Broker 不会立刻回复“没有消息”而是将消费者的这个请求挂起Hold暂时不予响应。它会把这个请求“扣留”一段特定的时间例如最多15-20秒。 等待阶段在这个“扣留”期间Broker 会等待两件事中的一件发生 一个新消息到达如果在请求被挂起期间有生产者发送了一条新消息到该主题Broker 会感知到立刻将这条新消息打包并用它来响应那个正在等待的消费者。消费者几乎是瞬间就收到了消息超时时间到达如果在长轮询的超时时间内一直没有新消息到达Broker 最终会放弃等待并向消费者发送一个空响应。 循环往复消费者一旦收到响应无论是有消息的还是超时后的空响应它会处理这些消息如果有的话然后立刻发送一个新的长轮询请求给 Broker开始下一轮的等待。 这个过程形成了一个持续的循环消费者的一个请求总是在 Broker 那里“待命”时刻准备着在消息到达的瞬间接收它。 长轮询 vs. 短轮询可视化对比 想象一下时间线 短轮询: 请求 - 空响应 - 请求 - 空响应 - 请求 - 收到消息 - 请求 - ... 大量的请求很多是无效的来回 长轮询: 请求 ----(Broker挂起请求)----- 收到消息 - 请求 ----(Broker挂起请求)----- 超时(空响应) - 请求 - ... 请求数量大大减少网络交互非常高效 为什么这个机制对 RocketMQ 这么好 近乎实时 (Near Real-Time)消费者可以以极低的延迟获取消息因为一旦消息可用Broker 就会立即响应。这给人的感觉就像是 Broker 主动推送了消息。高效率 (High Efficiency)它极大地减少了无用的、空的响应次数为消费者和 Broker 双方都节省了 CPU 和网络资源。简化与控制 (Simplicity and Control)控制权始终在消费者手中。消费者根据自己的处理能力来决定何时请求下一批消息这使得流量控制变得非常容易实现避免了被消息淹没的风险。 关键的配置参数 当您使用 RocketMQ 时可能会看到与长轮询相关的配置项 brokerSuspendMaxTimeMillis在 Broker 端配置如果 Broker 没有消息它将挂起suspend一个拉取请求的最长时间。这个值通常是 1500015秒。pollNameServerInterval在消费者端配置消费者从 NameServer 更新 Broker 信息的频率。这与消息拉取不同。consumerPullTimeoutMillis在消费者端配置消费者端对一次拉取请求的超时设置。这个值应该总是比 brokerSuspendMaxTimeMillis 要长例如 2000020秒。 本质上RocketMQ 的 PushConsumer推送型消费者在其底层就是一个使用长轮询来模拟推送效果的拉取型消费者。RocketMQ 把复杂的长轮询逻辑封装好了让您使用起来非常简单同时又保持了极高的效率。
http://www.pierceye.com/news/90118/

相关文章:

  • 动漫做暧视频网站用手机制作动画的app
  • 网站备案 域名证书帝国cms响应式网站模板
  • 一个电信ip做网站卡不卡企业网站建设排名资讯
  • 网站建设论文的开题报告制作一个app软件需要多少时间
  • 我们做的网站是优化型结构做二手车网站需要什么
  • 湛江网站建设保定公司互联网信息服务平台官网
  • 做展柜平时在哪里网站推广网站色彩学
  • 网站建站 seo企业网站建设方案模板
  • 国外有哪些做deal的网站四川建筑职业学校官网教务网
  • 无锡网站制作工作室临夏州建设厅官方网站
  • 怎么建设淘宝联盟的网站150m网站空间
  • 淘宝联盟链接的网站怎么做的wordpress幻灯片教程视频教程
  • 网站上线稳定后工作wordpress 不同的文章
  • 网站制作一条龙淘宝详情页制作
  • 海南营销网站建设安徽省住房城乡建设厅网站
  • 单招网站开发基础知识厚街网站建设公司
  • 怎么建微信群如何完成seo优化
  • 顺义广州网站建设wordpress更改字体大小
  • 网站二级目录怎么做婚纱摄影类网站
  • 做国外销售都上什么网站制作图片视频
  • jsp网站开发教学视频教程网站做的比较好的
  • 网站上传页面手机网站与PC网站
  • 在线绘画网站推广链接打开
  • wordpress 企业站 模板做情书直接点网站
  • 在线解压rar网站永康市网站建设
  • 广州建站商城长链接转换成短链接
  • 专注网站平台推广公司陕西网站备案查询
  • 品牌网站建设的关键要点网页布局的目的
  • 昆明网站建设贴吧南昌房产网二手房出售信息
  • 买了域名如何做网站网络营销活动策划方案模板