RPC接口简介「建议收藏」

RPC接口简介「建议收藏」什么是RPCRPC(RemoteProcedureCallProtocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC的特点:RPC是协议。只是协议,而非实现。RPC实现包括:Dubbo、Thri…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

什么是RPC

RPC(Remote Procedure Call Protocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

RPC的特点:

  1. RPC是协议。只是协议,而非实现。RPC实现包括:Dubbo、Thrift、GRPC、Hetty等。
  2. 网络协议和网络IO模型对其透明。RPC的客户端认为自己是在调用本地对象,因此其对使用的网络协议(HTTP协议等)以及网络IO模型,是不关心的。
  3. 信息格式对其透明。调用方法是需要传递参数的,对于远程调用来说,传递过程中参数的信息格式是怎样构成,以及提供者如何使用这些参数,都是不用关心的。
  4. 有跨语言能力。因为调用方实际上也不清楚远程服务器的应用程序是使用什么语言运行的。那么对于调用方来说,无论服务器方使用的是什么语言,本次调用都应该成功,并且返回值也应该按照调用方程序语言所能理解的形式进行描述。

常用的RPC框架:

  1. Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发,包括 C++, Java, Python等多种编程语言。
  2. Dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。
  3. Spring Cloud:提供了搭建分布式系统及微服务常用的工具,满足了构建微服务所需的所有解决方案。
  4. gRPC: 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。

RPC接口与HTTP对比

  1. 传输协议。RPC:可以基于TCP协议,也可以基于HTTP协议;HTTP:基于HTTP协议
  2. 传输效率。RPC:使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率;HTTP:如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装下是可以作为一个RPC来使用的。
  3. 性能消耗。RPC:可以基于thrift实现高效的二进制传输;HTTP:大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能。
  4. 负载均衡。RPC:基本都自带了负载均衡策略;HTTP:需要配置Nginx,HAProxy来实现。
  5. 服务治理。RPC:能做到自动通知,不影响上游;HTTP:需要事先通知,修改Nginx/HAProxy配置。

https://cloud.tencent.com/developer/article/1353110

https://blog.csdn.net/k_x_sh/article/details/88837410

RPC调用过程

https://www.cnblogs.com/FG123/p/10261676.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182343.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java数组的三种初始化方式

    java数组的三种初始化方式2018年4月3日Java语言中数组必须先初始化,然后才可以使用。所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值。注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值:           基本数据类型的整数类型(byte、short、int、long)默认值是0;           基本数据类型的浮点类型(float、double)默认值是0.0; …

    2022年5月5日
    46
  • jenkins自定义构建参数_git怎么切换分支

    jenkins自定义构建参数_git怎么切换分支前言当我们的自动化项目越来越多的时候,在代码仓库会提交不同的分支来管理,在用jenkins来构建的时候,我们希望能通过参数化构建git仓库的分支。下载安装GitParameter插件系统管理-

    2022年7月31日
    61
  • Xshell学习–菜鸟篇

    Xshell学习–菜鸟篇

    2021年9月25日
    36
  • 原创小说:城与兽 第一篇章在线阅读_有兽星七十二城的小说

    原创小说:城与兽 第一篇章在线阅读_有兽星七十二城的小说一名身材健壮的男子走在黄昏的海滩上。伴随着夕阳,和阵阵吹拂的海风,男子边双手抱头走边想:“这下完了呀,这是个什么地方呀,我要怎么回家呀,爸妈要怎么办呀。”他无聊的边走边踢着海滩上的石子,时不时往着被夕阳映射得泛红的天空,时不时又看看一望无际的大海,这海平面让它觉得很绝望。踢着踢着,踢到了一颗他踢不动的。“好痛呀。”男子坐在地上揉起了自己的脚。“真是衰到透顶了。衰起来连石子都…

    2022年8月29日
    0
  • 商城数据库表设计介绍怎么写_商城数据库设计

    商城数据库表设计介绍怎么写_商城数据库设计前言  一个商城系统,需要有,用户表,商品表,商品分类表,购物车表,订单表,订单明细表,支付信息表,以及物流信息表。  使用PowerDesigner对数据表以及他们之间的关系进行了粗略的设计得出了如下E-R图:  1.用户表2.商品表3.商品类别表4.购物车表5.订单表6.订单明细表7.支付信息表8.收货信息表SQL实例SETFOREIGN_KEY_CHECKS=0;———-…

    2022年9月12日
    0
  • Tomcat优化详细教程

    Tomcat是我们经常使用的servlet容器之一,甚至很多线上产品都使用Tomcat充当服务器。而且优化后的Tomcat性能提升显著,本文从以下几方面进行分析优化。      一、内存优化    默认情况下Tomcat的相关内存配置较低,这对于一些大型项目显然是不够用的,这些项目运行就已经耗费了大部分内存空间,何况大规模访问的情况。即使是本文中的这个只有

    2022年4月3日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号