Swoft微服务架构简图

    如上图所示,一个主流的微服务架构会由流量代理层、网关、注册中心、服务层(业务复杂时,为了职责清晰通常会拆为基础服务层和聚合服务两层)、配置中心、数据层等几个主要部分构成。

    通常,我们的系统中的部分聚合服务接口是需要暴露给外界使用的,这就不可避免的会遇到一些通用性的诉求比如:某些接口需要登录后才能调用(认证/鉴权),某些借口又需要限制调用频次(限流),还有一些情况下新老版本的多个接口要同时使用(A/B Test)…这时候怎么办呢?聪明的你肯定想到了,如果在单体应用的情况下,你可以借助Facade模式作为整个系统的门面,对全部请求进行统一的调度或者过滤,这不但可以使得外部调用方心智负担降低,还可以在一定程度上增强系统的安全性。有很多优秀的通用开源网关实现,如:Kong、Orang,以及目前比较新的Ingress Gateway等等。

    当我们还是一个单体应用时,我们可以把常用的配置项保存在本地配置文件中。但是当我们的服务实力运行在成百上千的节点中的时候,人工维护这些配置的正确的复杂度则会变得很高。这时候我们需要引入配置中心来统一管理所有服务的配置。开源的配置中心实现有很多,如K8S的ConfigMap,携程开源的Apollo、Spring Cloud Config等等。