RPC 实战与核心原理
何小锋
京东云混合云首席架构师
40244 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
RPC 实战与核心原理
15
15
1.0x
00:00/00:00
登录|注册

22 | 动态分组:超高效实现秒级扩缩容

解决动态分组名的调用方报错问题
动态分组解决问题
分组带来的收益
追加和替换
修改注册中心数据
处理突发流量
临时扩容机器时间长
额外给分组增加机器
计算分组机器数量
集群分组划分建议
动态分组应用
RPC引入回放
课后思考
总结
动态分组的应用
分组带来的问题
分组后容量评估
介绍
动态分组

该思维导图由 AI 生成,仅供参考

你好,我是何小锋。上一讲我们介绍了在 RPC 里面怎么支持流量回放,应用在引入 RPC 后,所有的请求都会被 RPC 接管,而我们在 RPC 里面引入回放的原因也很简单,就是想通过线上流量来验证改造后应用的正确性,而线上流量相比手动维护 TestCase 的场景更丰富,所以用线上流量进行测试的覆盖率会更广。
回顾完上一讲的重点,我们就切入今天的主题,一起看看动态分组在 RPC 里面的应用。
[第 16 讲] 我们讲过,在调用方复杂的情况下,如果还是让所有调用方都调用同一个集群的话,很有可能会因为非核心业务的调用量突然增长,而让整个集群变得不可用了,进而让核心业务的调用方受到影响。为了避免这种情况发生,我们需要把整个大集群根据不同的调用方划分出不同的小集群来,从而实现调用方流量隔离的效果,进而保障业务之间不会互相影响。

分组后容量评估

通过人为分组的方式确实能帮服务提供方硬隔离调用方的流量,让不同的调用方拥有自己独享的集群,从而保障各个调用方之间互不影响。但这对于我们服务提供方来说,又带来了一个新的问题,就是我们该给调用方分配多大的集群才合适呢?
[第 16 讲] 我们也有聊到过这样的问题,就是该怎么划分集群的分组?当然,最理想的情况就是给每个调用方都分配一个独立的分组,但是如果在服务提供方的调用方相对比较多的情况下,对于服务提供方来说要维护这些关系还是比较困难的。因此实际在给集群划分分组的时候,我们一般会选择性地合并一些调用方到同一个分组里。这就需要我们服务提供方考虑该怎么合并,且合并哪些调用方?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

动态分组是一种高效的扩缩容解决方案,能够在RPC系统中实现秒级扩缩容。文章首先介绍了动态分组在RPC系统中的应用,指出了通过分组隔离可以避免非核心业务的调用影响核心业务。随后,文章讨论了分组后容量评估的问题,提出了通过压测和历史经验总结来计算每个分组所需的机器数量。然后,文章指出了分组带来的问题,特别是在应对突发流量时的不足之处。接着,文章介绍了动态分组的应用,通过修改注册中心数据实现分组的快速扩缩容,解决了分组隔离不能为出问题的集群提供帮助的问题。最后,文章总结了动态分组的优势,强调了其能够解决突发流量问题,提高了集群的利用率,减少了整体预留的实例数量。整体而言,动态分组是一种高效的解决方案,能够帮助服务提供方实现调用方的隔离,并快速应对突发流量,提高了系统的稳定性和可靠性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《RPC 实战与核心原理》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 树洞老人
    一楼哈哈,老师,是不是对非核心组也应该有个评估,感觉核心组的流量突增的话,非核心的流量肯定也会增加

    作者回复: 非核心可以考虑直接降级

    2020-04-10
    12
  • Darren
    试着根据目前的知识储备回答下问题:不管是服务调用方还是服务提供方,其实都是定时轮训或者长链接的形式与注册中心保持联系的,可以要求服务方提供一个修改分组的接口,当注册中心修改了,调用接口更新服务提供方,或者服务提供方本身就是要定时上报心跳的,上报心跳的时候,可以把分组名称带回去。

    作者回复: 很接近了,只要请求头里面带上真实分组信息就好了

    2020-04-10
    3
    9
  • Micheal
    你好我有个疑问,一个系统有A,B,C三个服务。怎么计算这个系统的极限QPS?是三个接口的极限QPS加一起么?还有有其他的公式呢?希望老师解答下。

    作者回复: 一般都是单个算

    2020-04-29
    1
  • 花轮君
    服务提供方要实现请求方的分组标示验证,通过请求中携带分组标示进行验证的,是否可以考虑使用zk单据维护服务和分组的关系,提供方缓存该关系,监听该节点,有变化中从zk中获取变更后的分组标示进行请求验证

    作者回复: 也是一种方案

    2020-04-16
    1
  • Jxin
    如果分组名是一个数组而非str,命名检验是包含而不是等于。调用方优先调用0索引位的分组集群,在动态评估压力后,从1,2,3索引位依次追加集群,岂不美哉。

    作者回复: 会加大服务提供方运维难度

    2020-04-10
    1
  • 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-14
    3
    4
  • Geek_8c0618
    实际情况 不同的集群会有不同的环境变量 这个怎么解决?
    2021-05-07
    1
    2
  • 服务提供方会验证调用方过来的分组名跟自身的是否一样? 可以在服务提供方进行分组名验证逻辑这一块做扩展,动态分组别名有一定的格式,验证逻辑这块识别后,可以认为是OK的,分组名不一定一模一样才能验证通过。
    2020-05-17
    2
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部