【发布时间】:2021-10-22 06:15:03
【问题描述】:
假设我有两个服务 book service 和 order service。
图书服务提供有关图书的信息 - 名称、ID、出版社、摘要、作者等 - 基本上是根据一些查询为用户查找图书,它也可能使用机器学习。它有一个端点 /books/search,它接受一些查询并给出结果。
订单服务有助于使用用户 ID 和图书 ID 创建订单。它也有一个端点 /order/create。
有一个关系数据库,其中包含书籍、订单和用户。它还具有一些只读副本,可以更快地查询图书服务。我有一个 book 服务的 books.js 文件,我部署在 EC2 实例上,还有一个 order.js 文件,我部署在另一个 EC2 实例上。
有一个 api 网关将请求转发到适当的 EC2 实例。
假设图书服务的流量急剧增加,如何以编程方式扩展图书服务? AWS API Gateway 在这方面有帮助吗?
如果我从一开始就部署了多个图书服务实例,比如说 3 个实例,它们是否可以具有相同的地址和端口,以便 API 网关轻松转发用户请求,或者它们需要具有不同的地址和端口。 API 网关是否能够对预订服务 EC2 实例的请求进行负载平衡,还是我还需要添加负载平衡器?
我了解如何通过异步通信进行扩展 - 基本上,您有一个来自 SQS 的队列,有一个 EC2 实例监控队列并根据队列的大小启动或关闭 EC2 实例。有一些地方可以存储 EC2 实例的状态,监控实例根据该状态缩小实例。创建的实例从 SQS 队列中获取消息,进行处理,将结果存储在某处,将通知(如电子邮件)发送给用户。
然而,在这种情况下,用户不会立即得到响应。我希望用户立即得到响应。
请不要使用 lambda 之类的函数服务或 ECS 之类的 docker 服务来回答问题,因为我不完全了解它们。
另外,任何人都可以指出一些好的资源来了解使用 nodeJS 和 AWS 的微服务。当我试图找到这样的资源时,我发现它们的水平很高,并没有真正按部就班地说话。
【问题讨论】:
-
point to some good resources to learn..这超出了单个问题的范围,并且不鼓励在 SO 上要求查找资源。请尝试将您的问题集中在一个特定的编程/技术问题上
标签: node.js amazon-web-services microservices