在本系列之前关于如何使用 Data API 和 AWS SDK for Java 从 Lambda 函数连接到 Amazon Aurora Serverless v2 的文章中,我们进行了基本的冷启动和热启动测量,比较了 Data API 和 JDBC 之间的冷启动和热启动并使用 SnapStart 测量有和没有启动的效果。
在本系列的这一部分中,我们将介绍冷启动和热启动的优化策略。
要在冷启动时间和热启动时间之间找到良好的平衡,您可以尝试下面介绍的优化技术。我尚未对使用 Data API 和 Amazon Aurora Serverless v2 与 PostgreSQL 数据库的测量进行任何测量,但使用 DynamoDB 数据库进行类似的场景。我会提供我的相关文章的参考。
这是在创建/构建 RdsDataClient 时使用 AWS CRT HTTP 客户端的示例。 URLConnection客户端可以类似地设置。
RdsDataClient.builder().httpClient(AwsCrtHttpClient.create()).build()
另外不要忘记将对正在使用的 HTTP 客户端的依赖项包含到 pom.xml 中,如下所示:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency>
请参阅我的文章“使用不同的同步 HTTP 客户端通过 Java 21 测量冷启动和热启动”,以获取说明、代码示例和使用 DynamoDB 进行测量。
这是在创建/构建 RdsDataAsyncClient 时使用异步 AWS CRT HTTP 客户端的示例(我们需要在使用异步 HTTP 客户端的情况下构建)。
RdsDataAsyncClient.builder().httpClient(AwsCrtAsyncHttpClient.create()).build()
另外不要忘记将对正在使用的 HTTP 客户端的依赖项包含到 pom.xml 中,如下所示:
<dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>aws-crt-client</artifactId> </dependency>
在这种情况下,我们必须使用 Java 异步编程模型(这本身就是讨论主题),因此 RDSDataAsyncClient 上的每个方法调用都将返回 Java CompletableFuture 对象。请参阅我的文章使用不同的异步 HTTP 客户端通过 Java 21 测量冷启动和热启动,以获取说明、代码示例和使用 DynamoDB 的测量。
对于所有潜在的优化策略,您可以在 Lambda 函数上启用 SnapStart,并另外测量 DynamoDB 调用启动的影响,如本系列的上一篇文章 Data API meet SnapStart 中所述。
还要注意我在文章中描述的快照分层缓存对冷启动的影响。因为我总是在部署新版本的 Lambda 函数后为前 100 次冷启动提供冷启动测量。在使用分层缓存的情况下,我测量并描述了冷启动随着更多后续调用而显着减少。经过一定数量的调用后,它对于特定的 Lambda 版本保持不变。
在本文中,我们使用适用于 Java 的 AWS 开发工具包的 Amazon Aurora Serverless v2 的数据 API 提供了冷启动和热启动的优化策略,您可以探索该策略以找出适合您的使用案例的最佳性能。
以上是适用于 Java 的 AWS 开发工具包的 Amazon Aurora Serverless 数据 API - 冷启动和热启动的部分优化策略的详细内容。更多信息请关注PHP中文网其他相关文章!