RPC.01-从SOA到微服务

从SOA到微服务

SOA: 面向服务的架构(英语:service-oriented architecture), 即把后台系统按照功能拆分为不同的服务, 这些服务通过统一接口(RPC 或 Http)提供给调用者.
比较容易实现SOA的架构是Web Service, 有几种主流的实现SOA的 Web Service: XML-RPC, SOAP, REST, 其中 XML-RPC 和 SOAP都是通过 “HTTP协议传输XML内容”的方式

参考: [[RESTful]]

REST: 把对外提供的服务抽象为某种资源(User/Order), 通过HTTP的 GET/POST/DELETE/PUT方法对资源对象进行操作, 满足这几个条件的服务, 可以称为 #RESTful 的 (Representional State Transfer)

微服务: 微服务是SOA架构演进的结果。两者都是”对外提供接口的”一种架构设计方式,随着互联网架构的发展,更复杂的平台和业务的出现,导致SOA架构向更细粒度、更通用化发展,就演变成所谓的微服务了。微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式,微服务更强调去中心化分布式部署

SOA与微服务的区别在于如下几个方面:

  • 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
  • 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
  • 微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。

@ref:

RPC

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

微服务和RPC的区别: RPC是一种进程远程调用的方式,更强调的是异构平台之间进程通信的机制。SOA是一种产品架构的理念,以服务为中心,松耦合,通过定义严谨明确的接口进行通信。有比较完善的服务管理机制。两者并不是一个层面上的概念,可以说RPC是SOA架构的一种实现。

RPC用到的技术栈:

  • 传输协议: RMI(👉🏻[[../@project/Java-RMI]])、Dubbo、Hessian、Http、JSON
  • 传输框架:Netty、Mina
  • 序列化:Hessian、Protobuf、dubbo、JSON、SOAP