首页 > 其他分享 >《RPC实战与核心原理》学习笔记Day16

《RPC实战与核心原理》学习笔记Day16

时间:2023-02-02 23:14:06浏览次数:46  
标签:协议 调用 RPC 接口 Day16 笔记 我们 服务端

23 | 如何在没有接口的情况下进行RPC调用?

我们什么情况下需要在没有接口时进行RPC调用?
列举2个典型场景:

  1. 我们搭建一个测试平台,允许各个业务方在测试凭条上通过输入接口、分组名、方法名以及参数值,在线测试自己发布的RPC服务。
  2. 我们要搭建一个轻量级的服务网关,可以让各个业务方用HTTP的方式,通过服务网关调用其他服务。

所谓RPC调用,本质上就是调用端向服务端发送一条请求消息,服务端接收并处理,之后向调用端发送一条响应消息,调用端处理完响应消息后,一次RPC调用就完成了。

如果调用端可以将服务端需要知道的消息,例如接口名、业务分组名、方法名以及参数信息封装成请求消息发送给服务器,服务端就能够解析并处理这条请求信息,这样问题就解决了。

我们可以使用泛化接口的方式,来让RPC框架通过动态代理的方式,在没有接口的情况下,进行RPC调用,也称为泛化调用。

24 | 如何在线上环境里兼容多种RPC协议?

不同的RPC框架随着互联网技术的发展而慢慢涌现,这些框架会在不同时期被引入到不同的项目中去解决应用之间的通信问题,这样就导致了我们在线上的环境中会存在各种各样的RPC框架。

我们可以尝试通过自下而上的滚动升级方式,最终让所有的应用都切换到统一的RPC框架上,这种方法有2个局限:

  1. 这要求我们能够清楚的梳理出各个应用之间的调用关系,只有这样,我们才能按部就班地把所有应用都升级到新的RPC框架上。
  2. 这要求应用之间的关系不能存在互相调用的情况,最好是应用之间的调用关系就像一棵树,有一定的层次关系。但实际上,应用之间的调用关系往往会变成一张网。

这里的关键在于,我们要让新的RPC能同时支持多种RPC调用,当一个调用方切换到新的RPC之后,调用方和服务提供方之间就可以用新的协议完成调用,当调用方用老的RPC进行调用时,调用方和服务提供方之间就继续沿用老的协议完成调用。

RPC协议的作用是用来分割二进制数据流,不同的协议约定的数据包格式是不一样的,而且每种协议开头都有一个协议编码, 一般叫做magic number。

当RPC收到数据包之后,我们可以先解析出magic number,之后就可以找到对应协议的数据格式,然后使用相应的数据格式去解析收到的二进制数据包。

协议解析过程就是把一连串的二进制数据变成一个RPC内部对象,我们可以把和协议相关的对象转换成一个和协议无关的对象。

当完成真正的方法调用以后,RPC返回的也是一个和协议无关的通用对象,当我们向调用方回写数据时,我们还需要把通用对象转换成和协议相关的对象。

标签:协议,调用,RPC,接口,Day16,笔记,我们,服务端
From: https://www.cnblogs.com/wing011203/p/17087689.html

相关文章

  • JavaScript学习笔记—DOM:元素的添加、修改、删除
    appendChild(node):向节点添加最后一个子节点insertAdjacentHTML(position,text):把元素插入到指定位置position:beforebegin-插入到当前元素的前面,即开始标签之前a......
  • face-api.js 学习笔记
    https://www.cnblogs.com/keatkeat/p/15106226.html参考BuildRealTimeFaceDetectionWithJavaScript (youtubegetstarted)face-api.js—JavaScriptAPIforF......
  • TypeScript 入门自学笔记 — 基础类型补充(三)
    目录空值void及(与Null和Undefined的区别)任意值Any元组类型枚举类型常量枚举never类型1.函数无法到达终点2.通常校验逻辑的完整性,可以利用never类型Symbol类型BigIn......
  • 马氏距笔记
    勘误​​马氏距离与其推导​​这篇博客中所提到的:由于将数据集旋转后数据的各维度之间是不相关的这句话的意思并不是说维度之间可以线性相关(我们知道坐标系一定是线性无关的......
  • CSS系列学习笔记(二)
    font文字: font-size可以控制文字的大小后面可以放入像素(比较精准)如果未来去做网页的时候那么就使用工具量一下像素然后写上就可以了medium默认样式中等的合适的相对......
  • 《深入理解Java虚拟机》第三章读书笔记(二)——HotSpot垃圾回收算法实现(OopMap,安全点安
    系列文章目录和关于我前面《深入理解Java虚拟机》第三章读书笔记(一)——垃圾回收算法我们学习了垃圾回收算法理论知识,下面我们关注下HotSpot垃圾回收算法的实现,分为以下几......
  • 欧拉函数及其定理学习笔记
    ——bysunzz3183欧拉函数出自:筛初步欧拉函数进阶定义\[\varphi(n)=\sum\limits_{i=1}^{n}[\gcd(n,i)=1]\]筛法原理\[\varphi(n)=n\prod_{i=1}^{k}(1-\frac{......
  • Continual Learning with Lifelong Vision Transformer----阅读笔记
    ContinualLearningwithLifelongVisionTransformer----阅读笔记摘要:在本文中,我们提出了一种新的基于注意力的框架LifelongVisionTransformer(LVT),以实现更好的稳定......
  • c++语言程序设计第一章笔记
    在最开始,老师就向我们介绍了计算机语言的发展历史。也就是先前,在计算机刚开始发展的时候,那时候计算机语言与自然语言之间具有很大的鸿沟(计算机只能读懂二进制的0和1),比机器......
  • 2023.2 做题笔记
    【Baekjoon19394】EulerianOrientation选中边不好做,考虑删除边,一个删除\(x\)条边的图的权值是\((m-x)^2\),令\(k\)个合法图分别删除\(x_1,x_2,...,x_k\),答案就是\(......