我的服务使用 Go 编程语言,并利用适用于 Go 和 SQL Server 的 AWS SDK。
在我们的架构中,我们有两个主要服务:
我尝试同时运行轮询和摄取任务,但轮询和摄取到数据库需要花费大量时间。
目前,我一次获取 10 条消息,并为每条消息对数据库进行摄取调用。
一天之内,SQS 中累积了约
600,000 事件。
有人可以建议一种更好的方法来更快地轮询并提取到数据库中吗?
https://github.com/aws/aws-sdk-go/blob/v1.50.24/service/sqs/api.go#L7357
架构:
A
服务。如果处理消息的动作很快,那么 10 个左右的工作人员应该可以轻松处理。每个工作人员应该能够轮询队列和最大消息数,一旦它拾取了集合,就应该启动一个 go 例程来并行处理每条消息。Go服务不应该是这里的瓶颈,它应该是与DB的连接数量。为了帮助实现这一点,一旦您可以适当地扩展 A,您应该池化您的数据库连接,以便可以轻松地重用它们 - 就像 PgBouncer 一样。