Docs 菜单

压缩网络流量

在本指南中,您可以学习;了解如何使用Java驾驶员启用网络压缩。该驾驶员提供了一个连接选项来压缩消息,从而减少了MongoDB和您的应用程序之间通过网络传递的数据量。

驱动程序支持以下压缩算法:

  • Snappy:在MongoDB Server v3.4 及更高版本中可用。

  • Zlib:在MongoDB Server v3.6 及更高版本中可用。

  • Zstandard:在MongoDB Server v4.2 及更高版本中可用。

驱动程序针对这些库的以下版本进行测试:

  • org.xerial.snappy:snappy-java:1.1.10.3

  • com.github.luben:zstd-jni:1.5.5-3

如果您指定多种压缩算法,驱动程序会选择 MongoDB 实例支持的列表中的第一个算法。

注意

需要 Snappy 或 Zstandard 压缩的应用程序必须为这些算法添加显式依赖项。要学习;了解更多信息,请参阅本指南的压缩算法依赖项部分。

您可以通过以下方式之一指定算法,为MongoDB实例的连接启用压缩:

  • 在连接字符串中使用 compressors 参数。

  • compressorList() 方法链接到 MongoClientSettings.builder() 方法。

选择 Connection StringMongoClientSettings标签页,查看相应的语法:

在连接字符串中包含以下参数以启用压缩:

选项名称
类型
说明

compressors

字符串

指定驱动程序将尝试用于压缩发送到连接的 MongoDB 实例的请求的一种或多种压缩算法。可能的值包括:zlibsnappyzstd

默认: null

zlibCompressionLevel

整型

指定 的压缩程度zlib 用于减少对已连接MongoDB 实例的请求大小。该级别的范围可以从-19 ,值越低压缩速度越快(但会产生较大的请求),值越大压缩速度越慢(但会产生较小的请求)。

默认: null

以下指定了驾驶员在发送请求之前尝试压缩请求的顺序:

ConnectionString connectionString = new ConnectionString(
"mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd");
MongoClient client = MongoClients.create(connectionString);

有关这些参数的更多信息,请参阅 ConnectionString API文档。

将以下方法链接到 MongoClientSettings 构造函数以修改驱动程序的压缩行为:

方法
说明

compressorList()

设置用于压缩发送到服务器的消息的压缩器。

MongoClientSettings settings = MongoClientSettings.builder()
.compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(),
MongoCompressor.createZlibCompressor(),
MongoCompressor.createZstdCompressor()))
.build();
MongoClient client = MongoClients.create(settings);

有关链式方法的更多信息,请参阅 MongoClientSettings.Builder API文档。

JDK 原生支持Zlib压缩。但是,Snappy 和 Zstandard 依赖于开源Java实现。要学习;了解有关这些实施的更多信息,请参阅以下 GitHub 存储库:

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: