更快的启动时间和更低的内存占用:AWS SDK for Java中的新CRT HTTP客户端

AWS宣布AWS SDK for Java 2.x中的Common Runtime (CRT) HTTP Client正式可用

AWS最近宣布了AWS SDK for Java 2.x中的Common Runtime (CRT) HTTP Client的正式可用性。这个新的异步客户端提供了更快的SDK启动时间和更小的内存占用,特别适用于Lambda无服务器工作负载。

主要特点

  • 异步HTTP客户端:新的AwsCrtAsyncHttpClient是基于Common Runtime库的Java绑定构建的异步HTTP客户端。
  • 性能提升:AWS软件工程师Zoe Wang表示,该客户端可以作为默认Netty实现的替代方案,提供更快的SDK启动时间和更小的内存占用,特别是在AWS Lambda中,还能降低P90延迟并增强连接管理。
  • 具体改进:在Lambda中,启动延迟最多可减少76%,内存使用最多可减少14%。此外,P90延迟最多可提高9%。

连接管理

  • 连接健康管理:AWS CRT HTTP客户端具有连接健康选项,确保不会重用“不健康”的连接。根据用例,可以设置吞吐量阈值来确定连接是否健康。如果连接在配置的时间内低于设定的阈值,客户端将视为不健康并关闭连接。

使用方法

  • 添加依赖:开发者需要在pom.xml文件中添加aws-crt-client依赖。

    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>aws-crt-client</artifactId>
      <version>${aws.sdk.version}</version>
    </dependency>
  • 切换客户端:可以通过S3AsyncClient.builder()指定,或在JVM启动时设置software.amazon.awssdk.http.async.service.impl属性,或直接在代码中使用客户端构建器。

其他信息

  • AWS SDK for Java 2.0:该SDK于2018年发布,包括非阻塞IO、实现HTTP/2协议的事件流API以及可插拔的HTTP实现等功能。默认情况下,SDK包含netty-nio-client依赖,但当使用新的HTTP客户端时,建议从应用程序中移除以减少包大小。
  • 版本要求aws-crt-client从Java 2 SDK的2.20.0版本开始可用。
阅读 50
0 条评论