写给本身的 SOA 和 RPC 理解

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 等等。spa

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

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

   好比 Google 自研的 gRPC 使用 HTTP2 做为通信协议,默认使用自家的 Protocol Buffers 做为传输协议。

   阿里大佬自研的 dubbo 支持九种不一样的通信协议和各自的传输定义,有兴趣的戳后面连接:http://www.javashuo.com/article/p-omyijdbo-ns.html

相关文章
相关标签/搜索