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

答疑课堂 | 基础篇与进阶篇思考题答案合集

开发人员与测试人员的工作并行
业务自我保护
启动预热
异常重试
对象转成可传输的二进制
动态代理
请求与响应关联
RPC
基础篇与进阶篇思考题答案合集
答疑课堂

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

你好,我是何小锋。到今天为止,基础篇和进阶篇我们就都学习完了,在这个过程中我一直在看大家的留言,知道你可能还有很多地方存在着疑问,今天这一讲我整理了一些关注度比较高的课后思考题答案,希望能给你带来帮助。

第二讲

思考题:在 RPC 里面,我们是怎么实现请求跟响应关联的?
首先我们要弄清楚为什么要把请求与响应关联。这是因为在 RPC 调用过程中,调用端会向服务端发送请求消息,之后它还会收到服务端发送回来的响应消息,但这两个操作并不是同步进行的。在高并发的情况下,调用端可能会在某一时刻向服务端连续发送很多条消息之后,才会陆续收到服务端发送回来的各个响应消息,这时调用端需要一种手段来区分这些响应消息分别对应的是之前的哪条请求消息,所以我们说 RPC 在发送消息时要请求跟响应关联。
解决这个问题不难,只要调用端在收到响应消息之后,从响应消息中读取到一个标识,告诉调用端,这是哪条请求消息的响应消息就可以了。在这一讲中,你会发现我们设计的私有协议都会有消息 ID,这个消息 ID 的作用就是起到请求跟响应关联的作用。调用端为每一个消息生成一个唯一的消息 ID,它收到服务端发送回来的响应消息如果是同一消息 ID,那么调用端就可以认为,这条响应消息是之前那条请求消息的响应消息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文总结了基础篇与进阶篇思考题的答案合集。在RPC中,请求与响应的关联是通过消息ID实现的,以区分响应消息对应的是哪条请求消息。在没有动态代理的情况下,可以采用代码生成的Service存根来代替动态代理。在gRPC调用中,返回InputStream而不是二进制数组可以避免数据拷贝。解决服务提供者实例流量切走的方法包括调整权重、使用路由或动态分组。异常重试发生在负载均衡之前,可以减少重复操作。在启动预热时,可以考虑在非流量高峰时重启服务或分批次重启服务节点。业务自我保护可以通过限流、熔断、降级和服务治理来实现。为了避免开发人员和测试人员的应用干扰,可以配置不同的注册中心或使用RPC框架支持的“命名空间”概念。

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

全部留言(5)

  • 最新
  • 精选
  • 安排
    限流一般是在服务端做还是在调用端做呢?

    作者回复: 都能做,但最好在服务端,因为限流是对服务端的保护,如果在调用端做,不排除调用端使用不当的情况。

    2020-03-27
    4
    12
  • Dylan
    这个答疑方式我喜欢~

    作者回复: 👍

    2020-05-14
    6
  • 山顶的洞
    读老师的文章是一种享受
    2020-03-28
    1
    6
  • 老师功力深厚,化繁为简
    2020-05-16
    5
  • J.Smile
    这种答疑方式我喜欢
    2020-09-09
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部