我们如何处理SQS事件并将其存储在DB(SQL Server)中?

问题描述 投票:0回答:1

我的服务使用 Go 编程语言,并利用适用于 Go 和 SQL Server 的 AWS SDK

在我们的架构中,我们有两个主要服务:

  • 服务A(消费者)
  • 服务 B(生产者 - 许多)
由于库的限制,我们一次只能处理 10 条消息。

我尝试同时运行轮询和摄取任务,但轮询和摄取到数据库需要花费大量时间。

目前,我一次获取 10 条消息,并为每条消息对数据库进行摄取调用。

一天之内,SQS 中累积了约

600,000 事件。

有人可以建议一种更好的方法来更快地轮询并提取到数据库中吗?

https://github.com/aws/aws-sdk-go/blob/v1.50.24/service/sqs/api.go#L7357

enter image description here

架构:

enter image description here

sql-server amazon-web-services go amazon-sqs aws-sqs-fifo
1个回答
0
投票
您应该根据队列中可见消息的数量来扩展您的

A

 服务。如果处理消息的动作很快,那么 10 个左右的工作人员应该可以轻松处理。每个工作人员应该能够轮询队列和最大消息数,一旦它拾取了集合,就应该启动一个 go 例程来并行处理每条消息。

Go服务不应该是这里的瓶颈,它应该是与DB的连接数量。为了帮助实现这一点,一旦您可以适当地扩展 A,您应该池化您的数据库连接,以便可以轻松地重用它们 - 就像 PgBouncer 一样。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.