压缩网络流量
Overview
在本指南中,您可以学习;了解如何使用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 String 或 MongoClientSettings标签页,查看相应的语法:
在连接字符串中包含以下参数以启用压缩:
选项名称 | 类型 | 说明 |
---|---|---|
| 字符串 | 指定驱动程序将尝试用于压缩发送到连接的 MongoDB 实例的请求的一种或多种压缩算法。可能的值包括: 默认: |
| 整型 | 指定 的压缩程度zlib 用于减少对已连接MongoDB 实例的请求大小。该级别的范围可以从 默认: |
以下指定了驾驶员在发送请求之前尝试压缩请求的顺序:
ConnectionString connectionString = new ConnectionString( "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"); MongoClient client = MongoClients.create(connectionString);
有关这些参数的更多信息,请参阅 ConnectionString API文档。
将以下方法链接到 MongoClientSettings
构造函数以修改驱动程序的压缩行为:
方法 | 说明 |
---|---|
| 设置用于压缩发送到服务器的消息的压缩器。 |
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 文档
要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: