避免使用API网关对某些任务是否是一种反模式

75次阅读
没有评论

问题描述

正在为项目创建一个平台架构,并希望使用某种API网关来处理对Kubernetes集群的大多数请求(包括一些微服务)。
然而,有一个任务非常依赖性能和大量的连接(类似IoT指标的流量,大量的连接频繁发送数据,很可能是gRPC)。用户总是要访问集群中的单个服务。这个任务也不同,因为它总是来自单个物理设备(类似IoT中心),而不像其他任务(如Web浏览器、移动应用、第三方访问等)。
由于用户希望通过将这种类型的流量从API网关中卸载出来,以提供剩余流量的稳定性和性能,所以是否使用直接连接是一种反模式?或者还有其他解决方案吗?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

您可以为这种类型的流量使用单独的API网关。
可以参考以下文章的”Variation: Backends for frontends“部分:
https://microservices.io/patterns/apigateway.html
在这个方案中,您可以为这种类型的流量设置一个单独的API网关。这样可以将这种高性能和大量连接的流量与其他流量分开处理,以提供更好的稳定性和性能。

方案2

如果您不想使用API网关,还可以考虑直接连接到目标服务。但需要注意,这可能会增加一些管理和维护的复杂性。
另一种方法是直接连接到目标服务,而不使用API网关。这样可以避免API网关的性能和稳定性问题。但需要注意,这可能会增加一些管理和维护的复杂性,因为您需要直接处理与目标服务的连接和通信。
请根据您的具体需求和项目要求选择适合的解决方案。

正文完