1、RPC服务

RPC(Remote Procedure Call)— 远程过程调用,是一个很大的概念, 它是一种通过网络从远程计算机程序上跨语言跨平台的请求服务,rpc能省略部分接口代码的开发,可以跨机器之间访问对象(java rmi),可以有更方便的加密和更高效的数据传输性能, 而不需要了解底层网络技术的协议, RPC不仅可以走HTTP/HTTPS, 也可以自定义 tcp 协议, 从而省略HTTP繁杂的规则和冗余信息。

(1)RPC架构

先说说RPC服务的基本架构吧。一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根。分别说说这几个组件:

1)客户端(Client),服务的调用方。

2)服务端(Server),真正的服务提供者。

3)客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。

4)服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。

  

RPC主要是用在大型企业里面,因为大型企业里面系统繁多,业务线复杂,而且效率优势非常重要的一块,这个时候RPC的优势就比较明显了。实际的开发当中是这么做的,项目一般使用maven来管理。比如我们有一个处理订单的系统服务,先声明它的所有的接口(这里就是具体指Java中的interface),然后将整个项目打包为一个jar包,服务端这边引入这个二方库,然后实现相应的功能,客户端这边也只需要引入这个二方库即可调用了。为什么这么做?主要是为了减少客户端这边的jar包大小,因为每一次打包发布的时候,jar包太多总是会影响效率。另外也是将客户端和服务端解耦,提高代码的可移植性。

(2)同步调用与异步调用

什么是同步调用?什么是异步调用?同步调用就是客户端等待调用执行完成并返回结果。异步调用就是客户端不等待调用执行完成返回结果,不过依然可以通过回调函数等接收到返回结果的通知。如果客户端并不关心结果,则可以变成一个单向的调用。这个过程有点类似于Java中的callable和runnable接口,我们进行异步执行的时候,如果需要知道执行的结果,就可以使用callable接口,并且可以通过Future类获取到异步执行的结果信息。如果不关心执行的结果,直接使用runnable接口就可以了,因为它不返回结果,当然啦,callable也是可以的,我们不去获取Future就可以了。

(3)流行的RPC框架

目前流行的开源RPC框架还是比较多的。下面重点介绍三种:
    1)gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。 我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。 这个RPC框架是基于HTTP协议实现的,底层使用到了Netty框架的支持。
    2)Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自动生成服务代码框架。用户只要在其之前进行二次开发就行,对于底层的RPC通讯等都是透明的。不过这个对于用户来说的话需要学习特定领域语言这个特性,还是有一定成本的。

3)Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。同样 的远程接口是基于Java Interface,并且依托于spring框架方便开发。可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。

2、WebService

WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过 Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次 看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何 你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

WebService接口实际上就是RPC调用的一种实现,只考虑RPC的stub层实现, soap restfull都是固定走HTTP/HTTPS, 都有定义了自己的规则和实现(xmll和json等), 规定了server能够提供的服务(web service),也是跨语言跨平台的

RPC 与 WebService 图解:

可以看到RPC模型中多了一个stub的组件,这个是约定的接口,也就是server提供的服务, web service就是基于这一层考虑了实现的, 至于调用的协议都是固定的, 注意这里的“接口”,不是指JAVA中的interface,因为RPC是跨平台跨语言的,用JAVA写的客户端,应该能够调用用C语言提供的过程。

RPC和WebService的区别相关推荐

  1. java rpc与webservice_RPC体系,RPC和WebService的区别详解

    RPC和WebService的关系 RPC(Remote Procedure Call)- 远程过程调用,是一个很大的概念, 它是一种通过网络从远程计算机程序上跨语言跨平台的请求服务,rpc能省略部分 ...

  2. 远程通信(RPC,Webservice,RMI,JMS、EJB、JNDI的区别)对比

    总结这些概念都是易混淆,最基本概念定义复习和深入理解,同时也是架构师必备课程 RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到 ...

  3. WCF和webservice的区别

    微软论坛的斑竹回答如下: 脑内:果然是高大上啊 1.WebService:严格来说是行业标准,不是技术,使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键).微 软的Web服务实现称为ASP. ...

  4. RPC与RMI的区别

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6542811.html  一:RPC 远程过程调用 RPC(Remote Procedure Call Prot ...

  5. RPC和RESTful的区别

    文章目录 RPC 进程间通信几种解决方案: 管道(Pipe)或者具名管道(Named Pipe) 信号(Signal) 信号量(Semaphore) 消息队列(Message Queue) 共享内存( ...

  6. JAVA远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)

    RPC(Remote Procedure Call Protocol) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果.这个请求包括一个参数集和一个文本集,通常形成&qu ...

  7. python rpc webservice_关于RPC、HTTP、WebService的区别

    关于 REST 介绍的文章已经很多了,这里只对 RPC 部分做一个介绍: RPC(远程过程调用)是什么 简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数 ...

  8. Remoting 与 Webservice 的区别

    其实现的原理并没有本质的区别,在应用开发层面上有以下区别: 1.Remoting可以灵活的定义其所基于的协议,如果定义为HTTP,则与Web Service就没有什么区别了,一般都喜欢定义为TCP,这 ...

  9. rpc 调用webservice怎样传递参数_五分钟让你了解RPC原理详解

    欢迎关注专栏[以架构赢天下]--每天持续分享Java相关知识点 以架构赢天下​zhuanlan.zhihu.com 以架构赢天下--持续分享Java相关知识点 每篇文章首发此专栏 欢迎各路Java程序 ...

最新文章

  1. 剑指offer:平衡二叉树
  2. 【Matlab 控制】求函数极限
  3. 软件开发的生命周期描述
  4. mysql某个表被行锁了_一文搞懂MySQL行锁、表锁、间隙锁详解
  5. AB=C型向量分解思路思考
  6. html中的坐标从哪里开始,HTML+CSS入门 页面内跳转到相应位置的3种方法
  7. ES6 String和Number扩展
  8. html手机网页新闻模板,新浪手机新闻网站模板首页html源码
  9. 腾讯云文档数据库MongoDB怎么样?腾讯云文档数据库MongoDB有什么优点?
  10. 手机计算机都无法上网,手机能上网但win7电脑不能上网怎么回事?
  11. 腾讯云TCA运维工程师认证题库及例题示范
  12. 趣谈win10常用快捷键
  13. 日记(2007年7月3日)
  14. java网上课程_网上免费的课程能学会Java吗?
  15. Autojs脚本 最新加密工具 Autojs庖丁 3.2.0 去强制更新
  16. 餐饮店搭建会员营销系统有哪些优势?
  17. 关于po、vo、dto的概念
  18. 并查集详解,不会的同学可以来瞅瞅,转载的,不过加了一些自己的理解。
  19. 机器学习吃瓜(西瓜、南瓜书)笔记 task04-第五章神经网络
  20. [宅男福利]人人网相册批量下载器(下载红毯照ChinaJoy照神马的最方便了~!)...

热门文章

  1. VDS三个月暴涨60倍,他却宁愿摊摊手放走暴富机会
  2. 五一出行哪种蓝牙耳机最好用?蓝牙耳机良心推荐
  3. android手机像素比例,用数据说话 手机屏幕像素密度变化历程和趋势
  4. 计算机的联网管理系统,加工贸易计算机联网管理系统.doc
  5. tcpdump 常用命令
  6. IRQ与FIQ的区别
  7. 【跨境电商】疫情下做好海外跨境电商的几个技巧你知道吗?
  8. 在非金融应用中在哪里使用区块链?
  9. python读取jpg文件_python如何读jpg文件
  10. 品牌在B站如何打造爆品?虚拟IP带动品牌形象渗透B站圈层