SOA & RPC & 微服务

从SOA到微服务

SOA: 面向服务的架构(英语:service-oriented architecture), 即把后台系统按照功能拆分为不同的服务, 这些服务通过统一接口(RPC 或 Http)提供给调用者.

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

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

RPC

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

  • 传输协议: RMI、Dubbo、Hessian、Http、JSON
  • 传输框架:Netty、Mina
  • 序列化:Hessian、Protobuf、dubbo、JSON、SOAP

RPC框架

Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift基于自己的传输协议和序列化协议。

gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。

Dubbo-RPC是服务治理框架Dubbo的子模块,提供了灵活的配置方式,支持常见的传输协议RMI、Dubbo、Hessain、WebService、Http 等,序列化支持Hessian2、dubbo、JSON、SOAP 等。

RPC-传输协议

常见RPC协议有: Dubbo/RMI(socket实现), Hessian/WebService(HTTP实现) 以及Redis, Memcached等

RPC-序列化类库

包括gRPC使用的ProtoBuf、Thrift序列化协议、Avro协议

服务治理(Service Governance)

服务治理框架演进:

各家架构简述

  1. 阿里 - Dubbo

  2. 腾讯 - Tars

  1. 京东 - JSF
  1. 微博 - Motan
  1. 谷歌/Lyft - istio

服务网格(Service Mesh)