对于微服务,常用的设计模式是API-网关。我对它的实现和含义感到困惑。我的问题/疑虑如下:
根据我的理解,在理想的环境中,网关服务器会招待来自客户端的请求,并在微服务执行完应有的任务后做出响应。
此外,我正在查看Spring Cloud Gateway。我似乎正在网关服务器中寻找某种东西,但是如果它只是路由(重定向)服务而微服务将直接负责对客户端的响应,则其路由功能会使我感到困惑。
答案 0 :(得分:0)
网关模式用于为多个不同的微服务提供单个接口。如果您有多个微服务为API提供数据,则您不希望将所有这些微服务公开给客户。对于他们来说,只有一个入口点就更好了,而不必考虑要轮询哪个数据的服务。能够集中进行诸如身份验证之类的通用处理也很好。像任何设计模式一样,它可以很好地应用于某些解决方案,而不适用于其他解决方案。
如果吞吐量成为问题,则网关可扩展性强。您可以添加更多网关并对它们进行负载均衡
代理模式和API网关模式之间有一些细微的差异。我推荐这篇文章是一个非常简单的解释 https://blog.akana.com/api-proxy-or-gateway/
答案 1 :(得分:0)
在微服务领域,API-网关是一种行之有效的模式。它具有几个优点,例如:
在代理中实现所有这些功能并非易事。有几个提供所有这些功能的API网关,更像是Netflix-Zuul,Spring-Gateway或Akana Gateway。
此外,为了避免您的API网关成为瓶颈,您可以:
答案 2 :(得分:0)
1。为什么通常不讨论微服务的其他模式?如果是,那么我会错过他们吗? 不同类别下的微服务模式很多,例如数据库,服务等。这是一篇很好的文章https://microservices.io/patterns/index.html
2。如果我们部署网关服务器,这不是瓶颈吗?
是的。Q3的答案图像会回答这个问题。
3。网关服务器是否不易因单点请求过多而导致崩溃/故障?我相信,此时的负担将是巨大的(并记住Netflix正在做这样的事情)。如果我的理解有误,请纠正我。
4。流/下载/上传数据(例如文件,视频,图像)也将与其他中间件服务一起通过网关服务器传递吗? 为什么我们不能使用代理模式而不是网关?
API代理与API网关的用例取决于所需的功能类型以及API生命周期中的位置。如果您现有的API不需要API网关可以提供的高级功能,那么建议您使用API代理。
您可以节省宝贵的工程带宽,因为代理易于维护,并且性能不会受到任何损失。如果您需要代理不提供的特定功能,则还可以开发一个内部层来适应您的用例。如果您处于API生命周期的早期,或者需要API网关可以提供的其他功能,那么投资其中一项将带来很多好处。