| <!DOCTYPE html> |
| <html lang="中文"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width,initial-scale=1"> |
| <title>自动伸缩Queue | EventMesh</title> |
| <meta name="generator" content="VuePress 1.7.1"> |
| <link rel="icon" href="/logo.png"> |
| <meta name="description" content="EventMesh"> |
| |
| <link rel="preload" href="/assets/css/0.styles.992cb7aa.css" as="style"><link rel="preload" href="/assets/js/app.a5182b3c.js" as="script"><link rel="preload" href="/assets/js/2.706fd1a1.js" as="script"><link rel="preload" href="/assets/js/15.eed547f1.js" as="script"><link rel="prefetch" href="/assets/js/10.f33f460f.js"><link rel="prefetch" href="/assets/js/11.a1abc765.js"><link rel="prefetch" href="/assets/js/12.d4a647c6.js"><link rel="prefetch" href="/assets/js/13.740729ce.js"><link rel="prefetch" href="/assets/js/14.78cf74bb.js"><link rel="prefetch" href="/assets/js/16.494014e0.js"><link rel="prefetch" href="/assets/js/17.8f86459e.js"><link rel="prefetch" href="/assets/js/18.88ee4a36.js"><link rel="prefetch" href="/assets/js/19.90bbd066.js"><link rel="prefetch" href="/assets/js/20.e4fe1ce3.js"><link rel="prefetch" href="/assets/js/21.6a3d0d97.js"><link rel="prefetch" href="/assets/js/22.643939a7.js"><link rel="prefetch" href="/assets/js/23.6599270d.js"><link rel="prefetch" href="/assets/js/24.d104082b.js"><link rel="prefetch" href="/assets/js/25.ae8b3509.js"><link rel="prefetch" href="/assets/js/26.4941fd91.js"><link rel="prefetch" href="/assets/js/27.94f3e385.js"><link rel="prefetch" href="/assets/js/28.050d6443.js"><link rel="prefetch" href="/assets/js/29.53dcbee4.js"><link rel="prefetch" href="/assets/js/3.9bd2565c.js"><link rel="prefetch" href="/assets/js/30.56b639b5.js"><link rel="prefetch" href="/assets/js/31.a4fab623.js"><link rel="prefetch" href="/assets/js/32.d33f13c0.js"><link rel="prefetch" href="/assets/js/33.6dfecd74.js"><link rel="prefetch" href="/assets/js/34.051228b6.js"><link rel="prefetch" href="/assets/js/35.437b425d.js"><link rel="prefetch" href="/assets/js/4.f08d96e9.js"><link rel="prefetch" href="/assets/js/5.485e1ca5.js"><link rel="prefetch" href="/assets/js/6.1d6ced8e.js"><link rel="prefetch" href="/assets/js/7.2f0e8265.js"><link rel="prefetch" href="/assets/js/8.78d19d07.js"><link rel="prefetch" href="/assets/js/9.2a3b144e.js"> |
| <link rel="stylesheet" href="/assets/css/0.styles.992cb7aa.css"> |
| </head> |
| <body> |
| <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/cn/" class="home-link router-link-active"><!----> <span class="site-name">EventMesh</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/cn/community/" class="nav-link"> |
| 社区 |
| </a></div><div class="nav-item"><a href="/cn/blog/" class="nav-link"> |
| 博客 |
| </a></div><div class="nav-item"><a href="/en/documentation/" class="nav-link"> |
| 文档 |
| </a></div><div class="nav-item"><a href="https://github.com/WeBankFinTech/EventMesh" target="_blank" rel="noopener noreferrer" class="nav-link external"> |
| Github |
| <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">选择语言</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">选择语言</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/" class="nav-link"> |
| English |
| </a></li><li class="dropdown-item"><!----> <a href="/cn/features/6-dynamic-adjust-queue.html" aria-current="page" class="nav-link router-link-exact-active router-link-active"> |
| 简体中文 |
| </a></li></ul></div></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <aside class="sidebar"><nav class="nav-links"><div class="nav-item"><a href="/cn/community/" class="nav-link"> |
| 社区 |
| </a></div><div class="nav-item"><a href="/cn/blog/" class="nav-link"> |
| 博客 |
| </a></div><div class="nav-item"><a href="/en/documentation/" class="nav-link"> |
| 文档 |
| </a></div><div class="nav-item"><a href="https://github.com/WeBankFinTech/EventMesh" target="_blank" rel="noopener noreferrer" class="nav-link external"> |
| Github |
| <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="Select language" class="dropdown-title"><span class="title">选择语言</span> <span class="arrow down"></span></button> <button type="button" aria-label="Select language" class="mobile-dropdown-title"><span class="title">选择语言</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/" class="nav-link"> |
| English |
| </a></li><li class="dropdown-item"><!----> <a href="/cn/features/6-dynamic-adjust-queue.html" aria-current="page" class="nav-link router-link-exact-active router-link-active"> |
| 简体中文 |
| </a></li></ul></div></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h2 id="自动伸缩queue"><a href="#自动伸缩queue" class="header-anchor">#</a> 自动伸缩Queue</h2> <p> |
| 在同一个消费组内,每个队列只由一个实例消费。当队列数小于消费者实例数时,会有部分消费者实例分不到队列;反之,当队列数大于消费者实例数时,每个消费者需要消费多个队列。队列数不是消费者实例数的整数倍时,则会出现部分实例需要消费比同组内的其他实例更多的队列,出现负载不均衡问题。</p> <p> |
| DeFiBus提供了队列数量自动调整的特性。当有Consumer新注册或者去注册时,Broker触发队列的自动伸缩,根据当前在线的消费者实例个数,增加或者减少队列个数,使队列个数与消费者实例数保持一致。</p> <p> |
| 当队列数需要增加时,首先调整Topic的ReadQueueNum,将可读的队列数扩增;10s之后,再调整Topic的WriteQueueNum,将可写的队列数扩增。这样使得新扩增的队列能够先被消费者感知并监听上,然后才让生产者感知到,往新队列上发送消息,是扩增操作更平滑。</p> <div align="center"><img src="/assets/img/adjust-queue-expand-p1.294f617d.png" width="500"></div> <p> |
| 当队列数需要减少时,首先调整Topic的WriteQueueNum,将可写的队列数缩减;5分钟(默认,可配置)后先检查即将被缩减的队列中是否有消息没有被消费完,如果有,则继续延迟缩减操作,使消费者能够继续消费完队列中的消息;如果没有,则调整ReadQueueNum,将可写的队列数缩减。</p> <div align="center"><img src="/assets/img/adjust-queue-shrink-p1.f794f0d9.png" width="500"></div> <p> |
| 对于多个消费组订阅相同Topic并且是集群消费模式时,在计算扩缩的队列个数时,以最大的消费组的消费者实例数为准,保证拥有最多实例数的消费组内每个消费者实例都能够分到Queue进行消费。</p> <hr> <h4 id="links"><a href="#links" class="header-anchor">#</a> Links:</h4> <ul><li><a href="/" class="router-link-active">架构介绍</a></li> <li><a href="/cn/features/docs/cn/features/1-request-response-call.html">Request-Reply调用</a></li> <li><a href="/cn/features/docs/cn/features/2-dark-launch.html">灰度发布</a></li> <li><a href="/cn/features/docs/cn/features/3-circuit-break-mechanism.html">熔断机制</a></li> <li><a href="/cn/features/docs/cn/features/4-invoke-service-nearby.html">服务就近</a></li> <li><a href="/cn/features/docs/cn/features/5-multi-active.html">应用多活</a></li> <li><a href="/cn/features/docs/cn/features/6-dynamic-adjust-queue.html">动态扩缩队列</a></li> <li><a href="/cn/features/docs/cn/features/8-fault-tolerant.html">容错机制</a></li></ul></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"></div></div> |
| <script src="/assets/js/app.a5182b3c.js" defer></script><script src="/assets/js/2.706fd1a1.js" defer></script><script src="/assets/js/15.eed547f1.js" defer></script> |
| </body> |
| </html> |