一篇文章读懂微服务与网关技术( 三 )


一篇文章读懂微服务与网关技术

文章插图
 
上图展示的是 SIA-GateWay 去中心化的网关架构 。当然除了微服务网关模式 ,  目前下一代微服务架构 ServiceMesh 技术也是典型的去中心化架构 , ServiceMesh 是从 SideCar 边车模式演进而来 , 是一种通过将服务治理能力下沉到业务节点的方式 , 通过控制面(control plane)和数据面(data plane)的处理解耦分离实现服务通信更加快速 , 便捷 , 智能 。
然而目前来看 ,  从技术上及各大公司的实践中 , ServiceMesh 在落地上还存在诸多复杂性及不可控性 , 这种模式会给运维带来极大的成本 , 如果贸然使用会给本就复杂的分布式系统带来更多的复杂和难度 。所以从目前来讲 , GateWay 网关的模式在组织粒度上可以调整 , 在实现方式上更加简单可控 , 是目前的微服务架构中比较适合采用的模式 。
网关如何保证高可用
作为一个微服务网关系统 ,  因为所有流量都会经过网关 ,  网关必须成为一个高可用的中间件服务 , 网关系统的稳定性及可用性直接决定了所用下游服务的稳定性 。因此 SIA-GateWay 在架构设计上主要做了如下几点:
集群化
在生产环境中 , 所用网关节点至少保证有 2 个节点组成集群同时提供服务 , 目前 SIA-GateWay 在公司内部主要使用容器化部署 ,  避免单点故障 。
健康检查
在容器环境下 , SIA-GateWay 会暴露一个 HTTP 健康检查接口 , 通过 Kubernetes 的健康检查机制 , 定期检查 HTTP 访问是否可用 ,  如果不可用 , 利用 Kubernetes 的服务编排能力可以做容器的切换;在 Zstack 环境下 ,  通过后台启动一个 Crontab 作为守护进程检查进程的状态 , 保证网关的稳定可用和进程重启机制 。
一篇文章读懂微服务与网关技术

文章插图
 
备份机制
SIA-GateWay 提供了一种备份网关机制 , 在 Zstack 上会启动一个备份网关 API-GATEWAY-CORE , 所有在容器环境(Kubernetes )中启动的网关节点 , 都会将自己的路由信息同步到备份网关中 , 另外 ,  利用 Nginx 的高可用性和健康检查机制 ,  当 Kubernetes 集群出现问题时所有容器流量无法响应时 ,  会将 Nginx 上的流量自动切换到 API-GATEWAY-CORE 备份节点 。API-GATEWAY-CORE 在工作时也会触发预警 , 提示目前有不可用的 K8s 网关节点 。
提供机制而不是策略
Unix 编程哲学里 , 一个重要的概念就是:“提到机制而不是策略” , 通俗的讲“机制”就是接口 ,  “策略”就是具体的实现 。SIA-GateWay 提供的组件集成能力正是基于这样的理念 。
SIA-GateWay 将架构的可扩展性作为重要的对外输出能力 , 第三方插件机制主要支持 JAVA 语言的 Filter 组件动态加载机制 。Filter 机制是 JAVA 工程师最为熟悉的标准组件 , 所以对于业务方集成自己的业务逻辑提供了极大的便利 , 第三方业务组件加载到网关平台大体有如下几个步骤:
  • 根据 SIA-GateWay 提供的模板类及注解 ,  实现动态业务逻辑
  • 将实现好的动态组件通过 Maven 打包 。
  • 在组件管理界面 , 通过组件上传按钮将组件上传到 Admin- 组件管理器 。
  • 组件管理器执行文件存储逻辑 。
  • 组件管理器执行组件下发操作 , 将组件分发到对应网关组 。
  • 网关节点通过 ClassLoader 反射解析组件并动态加载到内存 。
  • 网关节点通过异步信号量机制响应组件加载状态 。
  • 组件管理器同步插件 Plugin 状态 。
  • 下图是 SIA-GateWay 组件加载机制的执行逻辑图:

一篇文章读懂微服务与网关技术

文章插图
 
强化可视化和微服务治理能力
俗话说流水的架构 ,  铁打的监控 ,  任何架构都需要软件监控 。微服务应用本身 RPC 的交互方式和带来了对监控系统了解系统运行状态的难题 。SIA-GateWay 对微服务监控主要做了如下方面增强:
全局的集群状态查看和容器状态 DashBoard 统计
一篇文章读懂微服务与网关技术

文章插图


推荐阅读