【问题标题】:how does microservice architecture with sync communication scales? [closed]具有同步通信的微服务架构如何扩展? [关闭]
【发布时间】: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


【解决方案1】:

假设图书服务的流量急剧增加,我如何以编程方式扩展图书服务?

您不需要以编程方式扩展服务。默认方式是将服务实例放入autoscaling group,并在自动伸缩组前面放置一个内部负载均衡器。现在的任务是找到合适的指标来扩展服务。

https://aws.amazon.com/about-aws/whats-new/2020/03/api-gateway-private-integrations-aws-elb-cloudmap-http-apis-release/

AWS API Gateway 对此有帮助吗?

实际上它可能取决于.. API GW 可以提供您可以用来扩展服务的其他指标,但我不确定这些指标对您的情况有多大用处

https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-metrics.html

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2017-08-28
    • 2017-01-28
    • 2020-11-07
    • 2021-02-16
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多