高并发系统设计 40 问
唐扬
美图公司技术专家
49013 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
高并发系统设计 40 问
15
15
1.0x
00:00/00:00
登录|注册

23 | RPC框架:10万QPS下如何实现毫秒级的服务调用?

选择合适的序列化方式
选择合适的网络模型
调试网络参数
选择高性能的I/O模型
性能变化
Web Service
RMI
设计RPC框架承载大请求量
服务治理问题
服务跨网络通信问题
建议
优化RPC框架的性能要点
选择合适的序列化方式
提升网络传输性能
RPC调用过程
RPC框架的变化
早期的RPC技术
RPC概念
解决问题的核心组件:RPC框架
服务拆分单独部署后的问题
一课一思
课程小结
优化RPC性能
RPC的原理
垂直电商系统服务化拆分
RPC框架

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

你好,我是唐扬。
21 讲22 讲中,你的团队已经决定对垂直电商系统做服务化拆分,以便解决扩展性和研发成本高的问题。与此同时,你们在不断学习的过程中还发现系统做了服务化拆分之后会引入一些新的问题,这些问题我在上节课提到过,归纳起来主要是两点:
服务拆分单独部署后,引入的服务跨网络通信的问题;
在拆分成多个小服务之后,服务如何治理的问题。
如果想要解决这两方面问题,你需要了解微服务化所需要的中间件的基本原理和使用技巧,那么本节课,我会带你掌握解决第一个问题的核心组件:RPC 框架。
来思考这样一个场景:你的垂直电商系统的 QPS 已经达到了每秒 2 万次,在做了服务化拆分之后,由于我们把业务逻辑都拆分到了单独部署的服务中,那么假设你在完成一次完整的请求时需要调用 4~5 次服务,计算下来,RPC 服务需要承载大概每秒 10 万次的请求。而你该如何设计 RPC 框架承载如此大的请求量呢?我建议你:
选择合适的网络模型,有针对性地调整网络参数优化网络传输性能;
选择合适的序列化方式,以提升封包、解包的性能。
接下来我从原理出发,让你对于 RPC 有一个理性的认识,这样你在设计 RPC 框架时就可以清晰地知道自己的设计目标是什么了。

你所知道的 RPC

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

在高QPS场景下,RPC框架的性能优化至关重要。本文从RPC的基本原理出发,讨论了在垂直电商系统服务化拆分后面临的网络通信和服务治理问题,并提出了解决方案。重点讨论了网络传输和序列化方面的优化策略,包括选择高性能的I/O模型、调试网络参数以及选择合适的序列化协议。文章还建议读者阅读成熟RPC框架的源代码,以便更好地理解实现原理和细节,提升代码能力。总之,本文为需要设计和优化RPC框架的技术人员提供了关于性能优化、网络传输和序列化优化策略的重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高并发系统设计 40 问》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(29)

  • 最新
  • 精选
  • 陈靖
    先把单服务优化到极致,比一来就上各种乱七八糟的分布式框架靠谱的多

    作者回复: 说的没错

    2019-11-16
    7
    51
  • 长期规划
    之前搞不懂为什么要搞RPC框架,后来才知道原来还是因为性能问题。我感觉RPC是随着高并发以及系统服务化之后才有了大范围的使用需求。 系统服务化后,一个前端访问会涉及到好多个后端的服务,如果服务间还是HTTP,那高并时,会成为性能的瓶颈之一。 从可维护性,可读性上来说,我感觉RESTful的HTTP协议比RPC更好。但从性能上来说,RPC更好

    作者回复: RPC使用二进制协议应该是国内互联网公司被dubbo教育的结果

    2019-12-23
    24
  • 芳菲菲兮满堂
    一直不太理解rpc和http之间差别有多大 为什么要用rpc呢

    作者回复: 两个层面的东西吧,rpc是思想,http是具体协议

    2020-03-18
    3
    4
  • 自己写,造轮子研究学习OK,一般还是使用成熟的方案,这些基本会考虑,业务开发逻辑里怎么优化通常是个大头。比如:数据加解密、数据解压缩、业务逻辑IO和什么存储设备交互、日志怎么打印、业务逻辑的编写是否最优等?

    作者回复: 写一个简单的RPC框架简单,周边的服务治理体系是关键

    2020-04-26
    3
  • longslee
    哈哈哈哈,我居然忘记了我还使用过WebService呢,好古老。 另外,如果系统交互间,纯使用 http RESTful 来调用,这算不算RPC呢

    作者回复: 广义上来看是算的

    2019-11-15
    3
    3
  • 小喵喵
    PRC框架只是针对java平台的吗?对于微软的.net平台有rpc框架吗??

    作者回复: 是有的,不过我不太熟悉

    2019-11-15
    3
    3
  • 魏春河
    老师,您文章里面插图是用什么画的?就像RPC调用过程那张图

    编辑回复: 就是苹果自带的keynote鸭~😉

    2019-11-15
    3
  • 张德
    老师为啥不推荐dubbo呢 难道是dubbo只支持java系统间的调用吗???

    作者回复: dubbo协议是支持多语言的

    2019-11-16
    2
  • 吃饭饭
    我感觉注册中心相当重要,序列化使用 Hession 也不错。文中提到建议关闭 Nagle 算法,但是我从其它地方看到是不建议这么做的,因为针对 Nagle 算法和延时 ACK 的优化已经非常成熟了,有可能在禁用 Nagle算法之后,性能问题反而更加严重

    作者回复: 可以看看RPC成熟的代码,一般是关闭Nagle算法的

    2019-11-15
    2
    2
  • 如歌
    从网络传输来优化,引出io复用,🙏,自然就想到来nginx 和 redis,老师对吗?

    作者回复: 思路是一样的

    2020-03-28
收起评论
显示
设置
留言
29
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部