22 | 动态分组:超高效实现秒级扩缩容
何小锋
该思维导图由 AI 生成,仅供参考
你好,我是何小锋。上一讲我们介绍了在 RPC 里面怎么支持流量回放,应用在引入 RPC 后,所有的请求都会被 RPC 接管,而我们在 RPC 里面引入回放的原因也很简单,就是想通过线上流量来验证改造后应用的正确性,而线上流量相比手动维护 TestCase 的场景更丰富,所以用线上流量进行测试的覆盖率会更广。
回顾完上一讲的重点,我们就切入今天的主题,一起看看动态分组在 RPC 里面的应用。
在[第 16 讲] 我们讲过,在调用方复杂的情况下,如果还是让所有调用方都调用同一个集群的话,很有可能会因为非核心业务的调用量突然增长,而让整个集群变得不可用了,进而让核心业务的调用方受到影响。为了避免这种情况发生,我们需要把整个大集群根据不同的调用方划分出不同的小集群来,从而实现调用方流量隔离的效果,进而保障业务之间不会互相影响。
分组后容量评估
通过人为分组的方式确实能帮服务提供方硬隔离调用方的流量,让不同的调用方拥有自己独享的集群,从而保障各个调用方之间互不影响。但这对于我们服务提供方来说,又带来了一个新的问题,就是我们该给调用方分配多大的集群才合适呢?
在[第 16 讲] 我们也有聊到过这样的问题,就是该怎么划分集群的分组?当然,最理想的情况就是给每个调用方都分配一个独立的分组,但是如果在服务提供方的调用方相对比较多的情况下,对于服务提供方来说要维护这些关系还是比较困难的。因此实际在给集群划分分组的时候,我们一般会选择性地合并一些调用方到同一个分组里。这就需要我们服务提供方考虑该怎么合并,且合并哪些调用方?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
动态分组是一种高效的扩缩容解决方案,能够在RPC系统中实现秒级扩缩容。文章首先介绍了动态分组在RPC系统中的应用,指出了通过分组隔离可以避免非核心业务的调用影响核心业务。随后,文章讨论了分组后容量评估的问题,提出了通过压测和历史经验总结来计算每个分组所需的机器数量。然后,文章指出了分组带来的问题,特别是在应对突发流量时的不足之处。接着,文章介绍了动态分组的应用,通过修改注册中心数据实现分组的快速扩缩容,解决了分组隔离不能为出问题的集群提供帮助的问题。最后,文章总结了动态分组的优势,强调了其能够解决突发流量问题,提高了集群的利用率,减少了整体预留的实例数量。整体而言,动态分组是一种高效的解决方案,能够帮助服务提供方实现调用方的隔离,并快速应对突发流量,提高了系统的稳定性和可靠性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《RPC 实战与核心原理》,新⼈⾸单¥59
《RPC 实战与核心原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(17)
- 最新
- 精选
- 树洞老人一楼哈哈,老师,是不是对非核心组也应该有个评估,感觉核心组的流量突增的话,非核心的流量肯定也会增加
作者回复: 非核心可以考虑直接降级
2020-04-1012 - Darren试着根据目前的知识储备回答下问题:不管是服务调用方还是服务提供方,其实都是定时轮训或者长链接的形式与注册中心保持联系的,可以要求服务方提供一个修改分组的接口,当注册中心修改了,调用接口更新服务提供方,或者服务提供方本身就是要定时上报心跳的,上报心跳的时候,可以把分组名称带回去。
作者回复: 很接近了,只要请求头里面带上真实分组信息就好了
2020-04-1039 - Micheal你好我有个疑问,一个系统有A,B,C三个服务。怎么计算这个系统的极限QPS?是三个接口的极限QPS加一起么?还有有其他的公式呢?希望老师解答下。
作者回复: 一般都是单个算
2020-04-291 - 花轮君服务提供方要实现请求方的分组标示验证,通过请求中携带分组标示进行验证的,是否可以考虑使用zk单据维护服务和分组的关系,提供方缓存该关系,监听该节点,有变化中从zk中获取变更后的分组标示进行请求验证
作者回复: 也是一种方案
2020-04-161 - Jxin如果分组名是一个数组而非str,命名检验是包含而不是等于。调用方优先调用0索引位的分组集群,在动态评估压力后,从1,2,3索引位依次追加集群,岂不美哉。
作者回复: 会加大服务提供方运维难度
2020-04-101 - Trident何老师,每个分组是不是都有不同的防火墙策略,这个动态分组的前提是所有的分组防火墙策略要一致才行?
作者回复: rpc用于内网,很少涉及到防火墙
2020-04-26 - 雨霖铃声声慢课后思考: 可以提前计划预案,预先规划哪些集群是用于动态分组的,哪些服务需要动态扩容缩容,然后将这些服务都部署到这些集群上,这样只是没有使用到的服务只是消耗了写计算资源,不过影响到这个集群中使用的服务,比如有A,B,C三组服务部署在动态集群上,目前动态集群用于提供A服务,BC服务待命,当需要扩容B服务是,在注册中心修改集群提供B服务,这样请求B服务的请求发送到该集群上,因为B服务已经是可用状态,所以就可以无缝切换。
作者回复: 好像资源有的浪费
2020-04-10 - ple动态分组的图片没看懂, 改为B分组 然后还是画在A分组里? 调用方1和调用方2为什么都有C2?2020-12-1434
- Geek_8c0618实际情况 不同的集群会有不同的环境变量 这个怎么解决?2021-05-0712
- 钱服务提供方会验证调用方过来的分组名跟自身的是否一样? 可以在服务提供方进行分组名验证逻辑这一块做扩展,动态分组别名有一定的格式,验证逻辑这块识别后,可以认为是OK的,分组名不一定一模一样才能验证通过。2020-05-172
收起评论