本教程记录笔者实现微服务的过程。
下图是 Spring 官网的微服务架构图:
Figure 1. Spring 的微服务架构
组件职责明确,结构清晰。以下简单介绍各组件的主要职责:
Config Server
配置中心,集中管理微服务系统中所有应用的配置。
Service Registry
注册中心,集中管理微服务系统中所有应用的运行状态。
Circuit Breaker Dashboard
断路器中心,集中监控微服务系统中所有接口的响应速率。
Spring Cloud Sleuth
链路追踪中心,集中监控微服务系统中所有请求的执行路径。Sleuth 是侦探的意思。
API Gateway
接口网关,集中管理微服务系统中所有应用的接口,向外提供一个统一门面。
Spring Boot Apps
Spring Boot 应用集群,实现具体业务功能。除了 Spring Boot Apps 是多个,其他组件都是一个,因为它们的职责很明确,负载不会太重。
微服务架构搭建完成之后,后续工作只需要新增 Spring Boot Apps 和配置网关代理。
下图是本教程构建的微服务架构图:
Figure 2. 安宁的微服务架构.png
Spring 官网的微服务架构图没有体现安全模块,实际使用需要加上。这里使用 spring-security 提供的基于 OAuth2 和 OIDC 的认证授权服务。额外提供一个 Authorization Server(认证中心),与 Config Server 平级,Spring Boot Apps 作为 Resource Server(资源服务)使用 JWT 认证。
红色连接配置中心
凡是需要使用公共配置的应用,都要连上 配置中心。上图除了 客户端-外,都要连接。
洋红连接注册中心
凡是需要使用集群的应用,都要连上 注册中心。图上重叠 1 次的应用(配置中心)只需要部署一台,即使宕机也不影响其他运行中的应用;重叠 2 次的应用(注册中心、认证中心和网关)负载较轻,部署 2 台做灾备;重叠 3 次的应用(资源服务),根据实际情况部署多台。
蓝色连接认证中心
凡是涉及到认证的应用,都要连上 认证中心。客户端从 认证中心 获取访问令牌后,调用 资源服务 的接口,资源服务 通过 认证中心 校验访问令牌是否有效。
青色连接资源服务
客户端-外通过网关调用接口,网关代理转发请求到对应资源服务。客户端-内直接调用资源服务的接口。客户端-外指外部第三方系统,客户端-内指自己内部的业务系统。
配置中心优先是指先启动配置中心,然后启动注册中心,最后启动其他服务。 除配置中心之外的服务都连上配置中心,从而实现统一管理配置; 除配置中心和注册中心之外的服务都连上注册中心,从而实现统一管理应用状态。
注册中心优先是指先启动注册中心,然后启动配置中心,最后启动其他服务。除注册中心之外的服务都连上注册中心,从而实现统一管理应用状态;除注册中心和配置中心之外的服务都连上配置中心,从而实现统一配置。
类别 | 好处 | 不足 |
---|---|---|
配置中心优先 | 统一所有配置 | 其他服务连接配置中心时需要提供绝对地址 |
注册中心优先 | 其他服务连接配置中心时可以使用应用名 | 注册中心无法使用统一配置 |
笔者这里采用配置中心优先。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。