功能结构
既然是服务化架构,那么肯定会包含服务提供方和调用方,即provider和consumer。那么作为分布式的服务化架构,需要有一个地方存储provider的信息,便于consumer调用,那么这个角色就是注册中心(registry)。
另外,鉴于分布式系统的复杂性和状态多样性,我们需要对provider、consumer、registry进行管理,比如服务依赖管理、权限管理、配置管理、版本管理、流量控制、服务上下线等,那么管理端(administrator)也就成了标配。
所以综上所述,一个完整的分布式服务化架构,应该包含4部分:
- 注册中心Registry
- 服务提供端Provider
- 服务消费端Consumer
- 管理端Administrator
其中,Provider将自己能够提供的服务信息登记到注册中心,同时通过心跳的方式定时更新自己的状态。Consumer从Registry获取可用服务信息后,直接与Provider建立连接进行交互。
这种架构,基于RPC的服务框架如dubbo/dubbox,JSF都是采用这种机制。
另外,一些基于REST的服务框架(比如Spring Cloud)会增加服务路由的组件,也就是说Consumer需要经过服务路由才能请求Provider,这种方式下,其架构就是由5部分组成:
- 注册中心Registry
- 服务提供端Provider
- 服务消费端Consumer
- 服务路由Router
- 管理端Administrator
经由服务路由调用的方式,典型的代表是Spring Cloud,如下图: