从SOA到微服务
▶ SOA: 面向服务的架构(英语:service-oriented architecture), 即把后台系统按照功能拆分为不同的服务, 这些服务通过统一接口(RPC 或 Http)提供给调用者.
▶ 微服务: 微服务是SOA架构演进的结果。两者都是”对外提供接口的”一种架构设计方式,随着互联网架构的发展,更复杂的平台和业务的出现,导致SOA架构向更细粒度、更通用化发展,就演变成所谓的微服务了。微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式,微服务更强调去中心化分布式部署。
SOA与微服务的区别在于如下几个方面:
- 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响;
- 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;
微服务更倾向于分布式去中心化的部署方式,在互联网业务场景下更适合。
- @Ref 阿里P8架构师谈:Restful、SOAP、RPC、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)
服务治理框架演进:
- 浅谈服务治理、微服务与Service Mesh(一):Dubbo的前世今生 - DockOne.io
- 浅谈服务治理、微服务与Service Mesh(二): Spring Cloud从入门到精通到放弃 - DockOne.io
- 浅谈服务治理、微服务与Service Mesh(三): Service Mesh与Serverless - DockOne.io
各家架构简述
阿里 - Dubbo
腾讯 - Tars
- 京东 - JSF
- 微博 - Motan
- 谷歌/Lyft - istio