服务化架构-组成

功能结构

既然是服务化架构,那么肯定会包含服务提供方和调用方,即provider和consumer。那么作为分布式的服务化架构,需要有一个地方存储provider的信息,便于consumer调用,那么这个角色就是注册中心(registry)。

另外,鉴于分布式系统的复杂性和状态多样性,我们需要对provider、consumer、registry进行管理,比如服务依赖管理、权限管理、配置管理、版本管理、流量控制、服务上下线等,那么管理端(administrator)也就成了标配。

所以综上所述,一个完整的分布式服务化架构,应该包含4部分:

  1. 注册中心Registry
  2. 服务提供端Provider
  3. 服务消费端Consumer
  4. 管理端Administrator

其中,Provider将自己能够提供的服务信息登记到注册中心,同时通过心跳的方式定时更新自己的状态。Consumer从Registry获取可用服务信息后,直接与Provider建立连接进行交互。

这种架构,基于RPC的服务框架如dubbo/dubbox,JSF都是采用这种机制。

另外,一些基于REST的服务框架(比如Spring Cloud)会增加服务路由的组件,也就是说Consumer需要经过服务路由才能请求Provider,这种方式下,其架构就是由5部分组成:

  1. 注册中心Registry
  2. 服务提供端Provider
  3. 服务消费端Consumer
  4. 服务路由Router
  5. 管理端Administrator

经由服务路由调用的方式,典型的代表是Spring Cloud,如下图: