微服务架构的名字里虽然有个"微",但它涉及的整体架构体系可一点也不"微",微服务架构除了业务代码的开发以外,还需要很多的支撑服务。
每个公司都有自己的微服务架构体系,虽然在细节上有很多不同,但是整体的思路是类似的,下图展示了一个比较成熟的微服务架构体系。
这个体系按照请求接入,由外到内的顺序,将整体架构分为接入层、网关层、业务服务层、支撑服务层、平台服务层和基础设施层六层。
接入层
最外层是接入层,通过负载均衡接入请求到内部平台,这些请求既有外部互联网请求,也有公司内部其它系统的请求。
网关层
网关层是微服务架构的核心层,是业务层接收外部流量的屏障。
网关层的主要作用:
- 对接入的流量进行反向路由。
- 拦截所有的请求,通过横切的方式完成熔断、限流、安全认证等功能。
- 对请求进行分类,例如内部网关、H5网关、图片网关。
业务服务层
我们常说的微服务就集中在这一层,这里包含了系统核心的业务逻辑。业务服务层可以简单的划分为聚合层与基础层。
基础层提供单一简单的基础服务,例如人员、订单、支付。聚合层则是将不同的基础层聚合在一起,完成复杂的业务处理。
支撑服务层
支撑服务层提供非业务功能,以支撑业务服务层和网关层软件的正常运行。
核心模块有服务注册发现、集中配置、容错限流、认证授权、日志聚合、监控告警、后台中间件(异步队列、缓存、数据库、任务调度)
平台服务层
平台服务层站在系统平台的角度上,处理系统发布、资源调度整合等功能。
核心模块有发布系统、资源调度、容器镜像治理、资源治理、IAM。
基础设置层
这一层与软件关系不大,主要是支撑系统需要的硬件资源,包括计算、网络、存储、监控、安全、IDC等。
纵向能力
除了横向区分的六个层次以外,微服务中还有一些纵向能力需要我们关注。
例如微服务开发框架,提供标准的开发框架规范开发过程,统一开发标准。
持续交付流水线,提供从研发到测试,再到生产的持续交付能力。
另外还有提升研发、测试效率的端到端的工具链,平常不断积累的工程实践以及规范等。
总结
微服务架构涉及功能模块众多,并不是每一个公司都有能力搭建一套完整的微服务架构。
当我们从零开始搭建微服务架构时,可以优先考虑网关层、业务服务层以及支撑服务层中的注册发现、集中配置、认证授权这些核心功能,其它的功能模块再逐步完善。
另外我们也可以选用已经比较成熟的架构来快速搭建微服务,例如SpringCloud。
最后大家可以结合文章的架构图思考一下,自己公司目前的微服务架构,已经具备了图中的哪些功能,还有哪些功能是可以进一步完善或者新增的?
博文地址
https://www.taowong.com/blog/2018/07/27/microservice-03.html