理论篇:SOA/RPC/MSA—Spring Cloud
序列化和RPC框架
早期的序列化协议:COM和CORBA。其中COM仅用于Windows平台,CORBA是跨平台 跨语言的序列化协议,版本和兼容性导致主键消亡。
主流序列化协议:
- | - | 优点 | 缺点 | 应用 |
---|---|---|---|---|
XML | 序列化协议 | 跨平台、跨语言 | 冗长复杂 | 小数据量,不适合ms级性能要求 |
JSON | 序列化协议 | 跨平台、跨语言、可读性好 | 空间开销大 | 小数据量,不适合ms级性能要求 |
FackBook Thrift | 序列化协议 RPC框架 | 高性能、轻量级RPC服务框架 | Thrift框架和Thrift序列化协议强绑定 | 大数据量、分布式、跨平台和跨语言 |
Google Protobuf | 序列化协议 | 性能高,可读性好 | 仅支持Java C++ Python三种语言、支持数据类型少 | |
Apache Avro | 序列化协议 | JSON/binary两种格式,支持丰富的数据类型 | ||
Hessian | 序列化协议 | 二进制数据 |
SOAP,基于XML序列化协议和HTTP协议的结构化消息通信协议
基于SOAP的解决方案——Web Service(SOAP + WSDL和XSD + UDDI)
应用场景:小数据量和性能要求低
主流RPC框架:
- 序列化(数据格式)和网络传输
- | 序列化 | 传输协议 | 支持服务治理 | 跨语言通讯 |
---|---|---|---|---|
Dubbo | 默认Hessian | 默认TCP长连接 | 支持 | |
gRPC | Protobuf | HTTP2 | 支持 | |
Motan | 默认Hessian | TCP长连接 | 支持 | |
Apache Thrift | Thrift | 传输层 | 支持 |
SOA/MSA
概念
RPC,Remote Procedure Call,远程过程调用
SOA,Service Orienteed Architecture,面向服务的架构
Web Service:SOAP,通信协议;WSDL,描述服务;UDDI,注册和查找服务
MSA,Micro Service Architecture,微服务架构
REST,Representational State Transfer,表现层状态转换
通信协议
HTTP,TCP,SOAP
数据格式
XML,JSON,二进制
历史发展
单体架构:SSH
分布式架构:
基于SOAP协议(XML+HTTP)的Web Service
MSA:RPC(Dubbo),Spring Cloud,Kubernetes
基于HTTP REST的Spring Cloud
- 服务治理:Spring Cloud Eureka
- 服务注册与发现
- 客户端负载均衡:Spring Cloud Ribbon
- 负载均衡的调用远程服务
- 声明式Web服务客户端:Spring Cloud Feign
- 简化客户端调用
- 断路器/熔断器:Spring Cloud Hystrix
- 防止故障扩散
- 配置管理:Spring Cloud Config
- 方便:配置文件统一管理,实时更新
- 服务网关:Spring Cloud Zuul
- 方便:权限控制,负载均衡
- 服务路由
- 消息总线:Spring Cloud Bus
- 配置热更新