答疑课堂 | 基础篇与进阶篇思考题答案合集
何小锋
该思维导图由 AI 生成,仅供参考
你好,我是何小锋。到今天为止,基础篇和进阶篇我们就都学习完了,在这个过程中我一直在看大家的留言,知道你可能还有很多地方存在着疑问,今天这一讲我整理了一些关注度比较高的课后思考题答案,希望能给你带来帮助。
第二讲
思考题:在 RPC 里面,我们是怎么实现请求跟响应关联的?
首先我们要弄清楚为什么要把请求与响应关联。这是因为在 RPC 调用过程中,调用端会向服务端发送请求消息,之后它还会收到服务端发送回来的响应消息,但这两个操作并不是同步进行的。在高并发的情况下,调用端可能会在某一时刻向服务端连续发送很多条消息之后,才会陆续收到服务端发送回来的各个响应消息,这时调用端需要一种手段来区分这些响应消息分别对应的是之前的哪条请求消息,所以我们说 RPC 在发送消息时要请求跟响应关联。
解决这个问题不难,只要调用端在收到响应消息之后,从响应消息中读取到一个标识,告诉调用端,这是哪条请求消息的响应消息就可以了。在这一讲中,你会发现我们设计的私有协议都会有消息 ID,这个消息 ID 的作用就是起到请求跟响应关联的作用。调用端为每一个消息生成一个唯一的消息 ID,它收到服务端发送回来的响应消息如果是同一消息 ID,那么调用端就可以认为,这条响应消息是之前那条请求消息的响应消息。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文总结了基础篇与进阶篇思考题的答案合集。在RPC中,请求与响应的关联是通过消息ID实现的,以区分响应消息对应的是哪条请求消息。在没有动态代理的情况下,可以采用代码生成的Service存根来代替动态代理。在gRPC调用中,返回InputStream而不是二进制数组可以避免数据拷贝。解决服务提供者实例流量切走的方法包括调整权重、使用路由或动态分组。异常重试发生在负载均衡之前,可以减少重复操作。在启动预热时,可以考虑在非流量高峰时重启服务或分批次重启服务节点。业务自我保护可以通过限流、熔断、降级和服务治理来实现。为了避免开发人员和测试人员的应用干扰,可以配置不同的注册中心或使用RPC框架支持的“命名空间”概念。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《RPC 实战与核心原理》,新⼈⾸单¥59
《RPC 实战与核心原理》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(5)
- 最新
- 精选
- 安排限流一般是在服务端做还是在调用端做呢?
作者回复: 都能做,但最好在服务端,因为限流是对服务端的保护,如果在调用端做,不排除调用端使用不当的情况。
2020-03-27412 - Dylan这个答疑方式我喜欢~
作者回复: 👍
2020-05-146 - 山顶的洞读老师的文章是一种享受2020-03-2816
- 钱老师功力深厚,化繁为简2020-05-165
- J.Smile这种答疑方式我喜欢2020-09-09
收起评论