分布式服务框架设计

架构原理

抽象分为3层 

  • RPC层

包括底层通信框架的封装、序列化反序列化框架、屏蔽底层通信协议差异的remoting框架。

  • Filter Chain层

服务调用职责链:提供服务调用切面供框架拓展,例如:负载均衡、服务调用性能统计、超时重发等等。

  • Service层

包括动态代理,将服务提供者的接口封装成远程服务调用。

通常架构中也包括:服务治理中心、服务注册中心。前者通常包含服务治理接口和服务治理portal,对服务状态进行可视化分析与维护。后者负责服务的发布与通知。

 

功能特性 

分布式服务框架必备功能特性:

  • 服务的发布订阅
  1. 配置化发布和引用服务:需要支持xml方式发布和导入服务,减少对业务代码入侵。
  2. 服务自动发现机制:由注册中心自动推送服务地址,不需要消费者自行配置服务者地址。
  3. 服务在线注册和去注册。
  • 服务路由
  1. 默认提供常用路由策略。
  2. 粘滞路由:除非提供方挂掉,否则总是向同一个提供方发起请求。
  3. 允许路由定制。
  • 集群容错
  1. Failover:失败自动切换其他服务器。
  2. Failback:失败自动恢复。
  3. Failfast:快速失败。
  • 服务调用
  1. 同步调用:消费者阻塞等待服务方应答。
  2. 异步调用:消费者不阻塞,直接返回,待应答后通知消费者。
  3. 并行调用:批量调用,集中通知。
  • 多协议
  1. 私有协议。
  2. 共有协议。
  • 序列化方式 
  1. 二进制类序列化:例如thrift等二进制协议,提升性能。
  2. 文本类协议 :支持例如json、xml等文本类序列化方式,提升可读性。
  • 同一配置
  1. 本地静态配置。
  2. 基于配置中心的动态配置。

性能特性

  1. 高性能
  2. 低时延
  3. 性能线性增长

可靠性

为保证业务成功率,需要以下可靠性功能:

分布式服务框架设计

服务治理

服务治理需求如下:

分布式服务框架设计