本文主要介绍微服务API网关的整体设计,分为两个方面:
- 逻辑架构
- 调用关系
目录 Table of Contents
逻辑架构
- 下图是微服务API网关的整体逻辑架构图,展示了微服务API网关的组成部分和逻辑功能。微服务API网关由管理模块和核心模块两个微服务提供主要功能,同时还依赖服务注册与服务发现中心提供服务的注册和发现,以及数据库层提供数据的缓存和持久化。
- 微服务API网关管理模块,内置了UI界面层提供可视化的管理平台,请求经由API接口层可以访问用户登录、用户登出、管理服务、管理应用、管理用户和数据统计等功能,实现一站式的网关配置管理。
- 微服务API网关核心模块,由协议接入中间件识别请求和匹配配置,权限认证、请求重写、流量统计和流量控制中间件进行公共业务逻辑处理,负载均衡中间件从服务注册与服务发现中心发现可用服务列表并应用负载均衡算法找出合适的响应实例,反向代理根据负载均衡地址将请求转发至服务端服务并返回响应给客户端应用。
- 服务注册与服务发现中心,技术选型为开箱即用的
Consul
,主要提供服务注册和服务发现的功能。对服务端服务而言,提供服务注册的统一存储位置,保存服务的名称、地址、端口和标签等元数据信息,还可以对已注册的服务进行自定义的周期性健康检查。对于微服务API网关而言,负载均衡中间件可以根据服务名发现可用的服务实例地址,并动态监听这些地址的可用情况和状态变化,及时更新负载均衡的地址列表。 - 数据库层,包括
MySQL
关系型数据库和Redis
非关系型数据库。MySQL
用于持久化用户、服务和应用的信息,是业务数据存放的位置和缓存数据同步的来源。Redis
用作缓存和计数器,加快微服务API网关处理客户端应用请求的速度,实现系统流量的统计和监控,并根据策略控制流量的进出。
调用关系
- 下图是微服务API网关的整体调用关系图,展示了微服务API网关各模块及其依赖作为一个整体如何与客户端和服务端进行交互的过程。其中客户端由管理员用户、
Web/App
应用组成,微服务API网关由管理模块、核心模块、MySQL
、Redis
和Consul
组成,服务端由微服务组成。
- 第1步,服务端的微服务先在服务注册与服务发现中心
Consul
中注册该微服务的名称和地址。 - 第2步,客户端的管理员用户在管理模块中配置服务和应用。
- 第3步,配置成功写入
MySQL
关系型数据库和Redis
非关系型数据库中。 - 第4步,客户端的
Web
应用或App
应用即可通过核心模块请求服务端的微服务。 - 第5步,核心模块在
Redis
缓存中读取服务和应用的配置。 - 第6步,核心模块在服务注册与服务发现中心
Consul
中获取可用的地址列表。 - 第7步,经过核心模块的一系列公共业务逻辑中间件处理后,请求被反向代理到已注册的微服务,服务端的微服务接收到请求并处理后返回响应给核心模块,核心模块再返回响应给客户端的应用。