在本系列之前關於如何使用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 版本保持不變。
在本文中,我們使用Amazon Aurora Serverless v2 的資料API 和適用於Java 的AWS 開發工具包提供了冷啟動和熱啟動的最佳化策略,您可以探索該策略以找出適合您的使用案例的最佳性能。
以上是適用於 Java 的 AWS 開發工具包的 Amazon Aurora Serverless 資料 API - 冷啟動和熱啟動的部分最佳化策略的詳細內容。更多資訊請關注PHP中文網其他相關文章!