分布式服务框架设计
架构原理
抽象分为3层
- RPC层
包括底层通信框架的封装、序列化反序列化框架、屏蔽底层通信协议差异的remoting框架。
- Filter Chain层
服务调用职责链:提供服务调用切面供框架拓展,例如:负载均衡、服务调用性能统计、超时重发等等。
- Service层
包括动态代理,将服务提供者的接口封装成远程服务调用。
通常架构中也包括:服务治理中心、服务注册中心。前者通常包含服务治理接口和服务治理portal,对服务状态进行可视化分析与维护。后者负责服务的发布与通知。
功能特性
分布式服务框架必备功能特性:
- 服务的发布订阅
- 配置化发布和引用服务:需要支持xml方式发布和导入服务,减少对业务代码入侵。
- 服务自动发现机制:由注册中心自动推送服务地址,不需要消费者自行配置服务者地址。
- 服务在线注册和去注册。
- 服务路由
- 默认提供常用路由策略。
- 粘滞路由:除非提供方挂掉,否则总是向同一个提供方发起请求。
- 允许路由定制。
- 集群容错
- Failover:失败自动切换其他服务器。
- Failback:失败自动恢复。
- Failfast:快速失败。
- 服务调用
- 同步调用:消费者阻塞等待服务方应答。
- 异步调用:消费者不阻塞,直接返回,待应答后通知消费者。
- 并行调用:批量调用,集中通知。
- 多协议
- 私有协议。
- 共有协议。
- 序列化方式
- 二进制类序列化:例如thrift等二进制协议,提升性能。
- 文本类协议 :支持例如json、xml等文本类序列化方式,提升可读性。
- 同一配置
- 本地静态配置。
- 基于配置中心的动态配置。
性能特性
- 高性能
- 低时延
- 性能线性增长
可靠性
为保证业务成功率,需要以下可靠性功能:
服务治理
服务治理需求如下: