| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 【RPC项目-理论篇】 -> 正文阅读 |
|
[网络协议]【RPC项目-理论篇】 |
理论知识1、什么是RPC?
通俗点: 就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据 2、为什么使用RPC1.可以做到分布式,现代化的微服务 2.部署灵活 3.解耦服务 4.扩展性强RPC的目的是让你在本地调用远程的方法,而对你来说这个 调用是透明的,你并不知道这个调用的方法是部署哪里。通过RPC能解耦服务,这才是使用RPC的真正目的。 单台服务器处理能力有限,RPC可提升系统处理能力和吞吐量,也是实现分布式计算的基础。 3、工作原理
但在通过sockets进行传输之前,有一个重要的步骤,需要第2步的序列化(把传输的对象转成可传输的二进制数据)。假设此时server的sockets拿到了数据,需要第4步的反序列化(将拿到的二进制数据反序列化为对象),在这个对象中包含了这个客户端要调用的服务端的信息(像它调用的是那个接口,也即它调用的是哪个存根,接口里面的什么方法, 方法里面参数的类型,以及返回值的类型等) 之后server回去找到这个接口的具体实现类的对象。通常这个对象为了性能考虑,一般会做成单例模式。这个server stub找到这个对象之后会通过反射来调用这个方法,方法调用完成后可以拿到计算的结果 拿到结果后又通过第7步的序列化成二进制,然后通过网络传输8响应给client,client拿到这个数据之后也会通过9将其序列化为对象,然后得到结果10. 那么本次调用结束调用关键点:
附加一张图,帮助理解: 4、RPC解决了什么问题?
5 技术栈
6、RPC vs HTTP 远程调用方式常见的远程调用方式有以下几种: RPC服务
HTTP服务
两者比较
补充:
从图上可以看出,二者其实都可以看出在进行实现RPC的时候,底层的通信协议是可以使用HTTP协议的,另外单独的使用HTTP协议也是可以直接的实现调用的功能,理论上,HTTP的请求也是一种方法的调用,通过get或者post方法和url去调用方法,但是HTTP为了更高的可读性将请求头变得非常的臃肿,传输效率比较低,而RPC则是牺牲了可读性使得效率更高。 换句话说其实二者是一种功能,只不过应用的场景不同,而且针对点不同,HTTP是针对Client和Server ;而 RPC是针对 Server 与Server之间的调用,另外RPC之间的调用效率更加的高,而且增加了ZK进行服务的自动配置与管理。 换句话说,上层的协议还是都是依赖于TCP/IP协议,总的来说就是基于字节流来进行编码。 6、交互模式-现有框架对比服务提供端 Server 向注册中心注册服务,服务消费者 Client 通过注册中心拿到服务相关信息,然后再通过网络请求服务提供端 Server。(注: 注册中心可无.) Dubbo
gRPC
参考资料
|
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 1:41:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |