我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
宣布适用于 Java 的 亚马逊云科技 开发工具包 2.x 中的 亚马逊云科技 CRT HTTP 客户端上线
我们很高兴地宣布,适用于
亚马逊云科技 CRT HTTP 客户端是一个异步、非阻塞 HTTP 客户端,亚马逊云科技 服务客户端可以使用它来调用 亚马逊云科技 API。你可以用它来代替 sdka
更快的启动时间和更小的内存占用
亚马逊云科技 CRT HTTP 客户端建立在 A
我们观察到,从 Netty 异步 HTTP 客户端切换到 亚马逊云科技 CRT HTTP 客户端时,Lambda 的启动延迟提高了多达 76%,内存使用量减少了多达 14%。请注意,结果可能会因应用程序配置(例如 Lambda 函数内存设置)而异。
降低 P90 请求延迟
除了冷启动方面的改善外,在将 亚马逊云科技 CRT HTTP 客户端与 Netty 异步 HTTP 客户端进行比较时,我们还观察到 P90 延迟提高了多达 9%。
下图比较了 亚马逊云科技 CRT HTTP 客户端和 Netty 异步 HTTP 客户端之间的 P90 延迟。测试应用程序使用 S3AsyncClient 发送了一个 getObject 请求来下载一个小的 S3 对象。
增强的连接管理
亚马逊云科技 CRT HTTP 客户端具有连接运行状况选项,可确保 “不正常” 的连接不会被重复使用。根据您的用例,您可以简单地设置吞吐量阈值来确定连接是否正常。如果连接在配置的时间段内低于设定的阈值,亚马逊云科技 CRT HTTP 客户端会将该连接视为运行状况不佳并在处理中的请求完成后将其关闭。如果您的应用程序访问的网络路径导致吞吐量大大降低,则此选项将通过关闭慢速连接并为新请求建立新的连接来帮助应用程序恢复。
此外,亚马逊云科技 CRT HTTP 客户端还提供增强的 DNS 负载平衡支持。它有一个异步 DNS 解析器,可以定期轮询每个请求的 DNS 地址,并平衡多个端点之间的流量,这允许在极少数情况下出现缓慢的端点或服务器中断时自动进行故障转移。
入门
要使用 亚马逊云科技 CRT HTTP 客户端,请先将 aws-crt-client 依赖项添加到您的 pom.xml 中。在
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>aws-crt-client</artifactId>
<version>${aws.sdk.version}</version>
</dependency>
然后,将您的应用程序配置为通过以下方式之一使用 亚马逊云科技 CRT HTTP 客户端。
选项 1(首选):通过客户端生成器指定 CRT HTTP 客户端
这是首选选项。它允许您根据用例自定义选项,例如最大并发性。
// Creating an asynchronous S3 client with a CRT HTTP client that is managed by the SDK
S3AsyncClient.builder()
.httpClientBuilder(AwsCrtAsyncHttpClient.builder()
.maxConcurrency(100))
.build();
默认情况下,SDK 包含
。如果您选择在应用程序中加入 亚马逊云科技 CRT HTTP 客户端,建议 从应用程序中删除
netty-nio-client
以减小软件包的大小。以下是在类路径中只有 CRT HTTP 客户端的应用程序的示例 POM 文件。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>${aws.java.sdk.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<exclusions>
<exclusion>
<groupId>software.amazon.awssdk</groupId>
<artifactId>netty-nio-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>aws-crt-client</artifactId>
</dependency>
</dependencies>
选项 2:在 JVM 启动时使用系统属性配置 HTTP 客户端
以下选项将使用默认配置创建 亚马逊云科技 CRT HTTP 客户端。
# Specify the default asynchronous HTTP client as AwsCrtAsyncHttpClient
java -Dsoftware.amazon.awssdk.http.async.service.impl=\
software.amazon.awssdk.http.crt.AwsCrtSdkHttpService \
MyService.jar
选项 3:使用 Java 代码中的系统属性配置 HTTP 客户端。
与选项 2 类似,以下选项将使用默认配置创建 亚马逊云科技 CRT HTTP 客户端。
System.setProperty("software.amazon.awssdk.http.async.service.impl",
"software.amazon.awssdk.http.crt.AwsCrtSdkHttpService");
局限性
在此版本中,亚马逊云科技 CRT
结论
在这篇博客文章中,我们向您展示了如何开始使用 亚马逊云科技 CRT HTTP 客户端。要了解有关如何配置客户端的更多信息,请访问我们的
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。