欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

程序员如何通俗易懂的理解 SOA 和 RPC ?

程序员文章站 2022-04-10 22:01:59
1.SOA SOA(Service-Oriented Architecture)面向服务架构,将应用程序不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。 SOA 不是特定的规范,是一种技术思想,一种理念,上图为 SOA 架构的参考模型。 SOA 是一种粗粒度、松耦合 ......

1.soa

程序员如何通俗易懂的理解 SOA 和 RPC ?

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

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

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

2.rpc

   程序员如何通俗易懂的理解 SOA 和 RPC ?

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

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

   比如耳熟能祥的 http 就是 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 支持九种不同的通讯协议和各自的传输定义,有兴趣的戳后面链接: