api – GraphQL是否有单个端点成为瓶颈?

我试图理解GraphQL是否是大型应用程序的一个很好的架构决策.

引起我注意的一件事是它为所有请求使用单个端点.

http://graphql.org

Access the full capabilities of your data from a single endpoint.

这是瓶颈吗?所有请求都通过单个API网关(单个端点)?

问朋友.谢谢.

编辑:指出我任何解决这个问题的文档会有所帮助.

最佳答案
最简洁的答案是不.

最好检查瓶颈可能在哪里,并向自己证明它实际上并不是瓶颈.

首先,当您提出请求时,您会对您的域进行DNS查找,例如www.myapi.com.这将返回1个或多个IP地址.基本上,您选择一个并将您的请求发送到该地址.到目前为止,这与实际端点无关,例如/ graphql,但这是第一步.

您提到了API Gateway,这让我相信您正在谈论在AWS上部署GraphQL API.

其次,您的请求到达您的负载均衡器.如果您使用的是API Gateway,那就是您的负载均衡器.如果您在AWS上而不使用API​​网关,则可能正在使用ELB.在任何一种情况下,负载均衡器的工作都是查看端点,查看哪些服务器负责处理该端点并将请求转发给其中一个端点.无论是单个端点还是100个端点,此作业都完全相同.事实上,在GraphQL的情况下只有一个端点实际上使这项工作更容易.

值得一提的是,负载均衡器不仅仅是一台机器.有许多机器构成单个API网关或ELB,它们都在做同样的工作.这不仅是为了可扩展性,也是为了实现高可用性.

接下来,服务器接收到负载均衡器选择并处理的请求.同样,有许多相同的服务器为其他请求执行相同的工作.如果您使用AWS Lambda处理请求,则您的服务器基本上在容器中运行,AWS将为您水平扩展和缩小.

此时,端点不再相关,因此不再是导致任何瓶颈的因素.

我希望这足以令人信服,不仅单个端点不是瓶颈,而且它使负载平衡器的工作变得更容易.

转载注明原文:api – GraphQL是否有单个端点成为瓶颈? - 代码日志