大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。今天和大家一起学习架构😊
Gateway 网关模式设计是一种应用于分布式微服务架构中的设计模式。它的作用是将多个服务实例组织成一个星型架构并提供一个进入系统的唯一节点,从而方便地进行管理、保证服务的可用性、可靠性以及高性能的交付。Gateway 还能提供授权、监控、负载均衡、缓存、熔断、降级、限流等功能。
在 Gateway 方式下的架构中,可以为每一个服务的实例配置一个自己的 Gateway,也可以为一组服务配置一个,甚至可以粗到为整个架构配置一个接入的 Gateway。因此,整个系统架构的复杂度就变得简单可控起来。这样一来,通过网关,我们可以把分布式架构组织成像 Service Mesh 那样的网格架构,或仅适配某些服务的 Sidecar。
一个好的网关应该有请求路由、服务注册、负载均衡、弹性设计、授权、缓存、监控等功能。请求路由是指将调用端的请求路由到适当的服务实例中。服务注册需要后端的服务实例把其提供服务的地址注册、取消注册。负载均衡策略可以直接使用 Round-Robin 轮询,还可以设置权重进行分发,甚至做到 session 粘连。弹性设计可以包括异步、重试、幂等、流控、熔断、监视等功能。授权功能可以对请求进行授权验证,确保调用端有足够的权限去请求后端服务。缓存则可以缓存前端请求,在服务调用的时候从缓存中读取响应,减少后端的压力以及提高响应时间。监控功能可以对服务调用进行监控。
总的来说,Gateway 是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的 Facade 模式很像。Gateway 封装内部系统的架构,并提供 API 给各个客户端。它还可能有其他功能,例如熔断、降级、限流、请求分片和管理、静态响应处理等功能。在使用 Gateway 架构模式时,需要通过灵活的配置,充分发挥 Gateway 不同的设计功能,以实现服务的高性能、高可用、高效率。
此文章为3月Day25学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看