博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
写给自己的 SOA 和 RPC 理解
阅读量:5242 次
发布时间:2019-06-14

本文共 940 字,大约阅读时间需要 3 分钟。

1.SOA

   SOA(Service-Oriented Architecture)面向服务架构,将应用程序不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。

   SOA 不是特定的规范,是一种技术思想,一种理念,上图为 SOA 架构的参考模型。

   SOA 是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义的接口进行通讯,不涉及底层编程接口和通讯模型。

   阿里 Dubbo 算是 SOA 架构经典实现,其中应用之间的访问又遵循下面即将描述的 RPC 思想。

2.RPC

   

   RPC(remote procedure call)远程过程调用,即本地调用一个函数或者对象方法,实际上是调用了远程机器上的函数或方法。

   个人理解 RPC 和 SOA 一样也不是规范,不是协议,是一种技术思想,一种理念,其实你日常编码中一直在接触它,只是你并没有感知到而已。

   比如耳熟能祥的 HTTP 和 WebService 就是 RPC 思想的一种很好的体现方式,HTTP 虽然有完备的体系和标准的规范,但满足不了企业内外部日益复杂的信息交互。

   就这样许多优秀的 RPC 框架应运而生,封装了一些像负载均衡、熔断降级、服务注册、服务发现等等面向对象的高级特性。

   流行的 RPC 框架有阿里的 Dubbo,微博开源的 Motan,Google 开源的 gPRC,百度开源的 bRPC,蚂蚁金服开源的 sofa-rpc 等等。

   还有一些拘谨的 RPC 框架比如 JDK 1.1 开始出现的 RMI (两端必须都使用 Java),Spring MVC 中的 HttpInvoker(两端必须都引入 Spring)。

   既然 RPC 框架需要远程去调用其他服务器上的资源,那么不可避免的需要进行网络通讯和传输,可以选择已有成熟的协议,当然也可以自定义。

   比如 Google 自研的 gRPC 使用 HTTP2 作为通讯协议,默认使用自家的 Protocol Buffers 作为传输协议。

   阿里大佬自研的 dubbo 支持九种不同的通讯协议和各自的传输定义,有兴趣的戳后面链接:

   

 

   

转载于:https://www.cnblogs.com/java-class/p/10653404.html

你可能感兴趣的文章
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
使用C#交互快速生成代码!
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>
Nginx配置文件(nginx.conf)配置详解1
查看>>
linux php编译安装
查看>>
name phone email正则表达式
查看>>
「Unity」委托 将方法作为参数传递
查看>>