网关Spring Cloud Gateway

在分布式架构中,例如微服务,总会出现需要确保安全性、日志记录以及跟踪用户在多个服务调用中的行为等关键行为的情况。为了实现这些功能,我们希望能够在所有服务中一致地强制执行这些属性,而无需每个开发团队构建自己的解决方案。

虽然在单个服务中直接构建这些能力可能通过使用共同的库或框架来实现,但这种方法存在以下问题:

  • 在每个服务中一致地实现这些功能是一项具有挑战性的任务。开发人员通常专注于交付功能,而在日常工作的快节奏中,他们可能会轻易忘记实施服务日志记录或跟踪。

  • 在所有服务之间创建硬依赖关系可能会导致问题。随着将更多功能构建到通用框架中,要在不重新编译和重新部署所有服务的情况下更改或添加共享代码的行为变得越来越困难。对嵌入到共享库中的核心功能进行升级可能变成漫长的迁移过程。

为了解决这个问题,我们需要将这些横切关注点抽象为一个能够独立存在的服务。这个服务充当过滤器路由器,负责所有微服务调用。我们称之为网关。现在,我们的服务客户端不再直接调用微服务,而是通过服务网关进行路由。服务网关充当单一的策略执行点(Policy Enforcement Point,PEP),然后将调用路由到最终目的地。

这样一来,我们能够在整个架构中实现一致的安全性、日志记录和其他关键功能,而无需依赖各个开发团队自行实施。

Last updated