gpt4 book ai didi

amazon-web-services - AWS Dynamo Db on Services 的连接池

转载 作者:行者123 更新时间:2023-12-04 08:00:13 25 4
gpt4 key购买 nike

这个问题更多地是关于开发 Web 服务时的最佳实践。这可能有点模糊

假设我的服务使用 Spring 容器,它为所有请求创建标准 Controller 对象。现在,在我的 Controller 中,我注入(inject)了一个在 spring 容器中创建的 Dynamo Db 映射器实例。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.OptionalConfig.html

问题:-

我们不应该创建一个 DynamoDb 客户端对象和映射器池,以便从池中提供对服务的并行请求吗?或者我们应该为所有请求注入(inject)相同/新的 DynamoDb 映射器对象实例?为什么我们不使用 C3PO 之类的东西进行 Dynamo Db 连接?

最佳答案

关系数据库的工作方式与 DynamoDB 的工作方式之间存在相当大的差异。

使用 MySQL、PostgreSQL 或 MSSQL 等典型的关系数据库引擎,每个客户端应用程序实例都应与引擎建立少量连接,并在应用程序使用时保持连接打开。然后,当应用程序的某些部分需要与数据库交互时,它们会从池中借用一个连接,使用它进行查询,然后将连接释放回池中。这可以有效地使用连接并消除设置和拆除连接的开销,并减少因创建和释放连接对象资源而导致的抖动。

现在,切换到 DynamoDB:things look a bit different .您不再有从客户端到数据库服务器的持久连接。当您执行 Dynamo 操作(查询、扫描等)时,它是一个 HTTP 请求/响应,这意味着连接是临时建立的,并且仅持续请求的持续时间。 DynamoDB 是一项 Web 服务,它负责负载平衡和路由,无论规模如何,都能为您提供一致的性能。在这种情况下,应用程序通常最好为每个实例使用单个 DynamoDB 客户端对象,并让客户端和相关的服务端基础设施负责负载平衡和路由。

现在,您的堆栈的 DynamoDB 客户端(即 Java 客户端、.NET 客户端、JavaScript/NodeJS 客户端等)通常会使用池化的底层 HTTP 客户端,主要是为了最大限度地降低与创建和拆除这些客户端相关的成本对象。您可以调整其中的一些设置,并且在某些情况下提供您自己的 HTTP 客户端池实现,但通常不需要这样做。

关于amazon-web-services - AWS Dynamo Db on Services 的连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com