是否有任何支持线压缩的MongoDB驱动程序?

问题描述:

可以使用此选项运行MongoDB:--networkMessageCompressors=snappy。根据文档,这压缩了mongod,mongos和mongo shell之间的网络交换。是否有任何支持线压缩的MongoDB驱动程序?

我想压缩Java应用程序和mongod之间的流量,但没有一个Java驱动程序提供此选项。

有没有人试过以下路径之一?

  • 补丁的Java驱动程序,以便它支持压缩(这将是当然我的首选解决方案,但我可以使用一些建议在方向上跟随)
  • 包,支持压缩另一个驱动程序将其暴露在Java应用程序(但我不知道是否有其他驱动程序支持此功能)

当然,任何其他方式可以帮助我压缩有效载荷将高度赞赏。

在此先感谢!

如您所知,MongoDB中3.4添加network compression feature目前仅支持对mongo壳设置一个复制品或分片簇(mongodmongos)的成员之间的群集内通信以及。从MongoDB 3.4版本开始,没有支持网络压缩的官方驱动程序。

有可以观看相关的功能要求/给予好评的MongoDB的问题跟踪客户机/驱动程序支持:SERVER-25620: Compression of wire protocol for Clients。此功能的要求也有评论提供了一些context on the lack of client support

对于一些背景,以实现有线协议压缩的决定是在MongoDB的3.4开发周期很晚。我们认为,这将有利于为客户能够利用该功能的优势,但对于3.4的MongoDB这样做会要求所有正式MongoDB的驱动程序添加支持,以及,那只是似乎并不现实给出的时间表。此外,通过仅保持集群内部的有线协议压缩,它将使我们有能力在将功能打开到客户端并有效锁定到设计之前对其进行细化。我们将在MongoDB 3.6开发期间评估是否将支持压缩扩展到客户端。

你可以考虑实现的Java驱动程序补丁,如果有您的使用情况下,显著的胜利,但也有3.6开发周期中未来可能出现的变化,它可能会更谨慎地等待官方驱动支持。

当然,任何其他方式可以帮助我压缩有效载荷将受到高度赞赏。

而不是修改驱动程序,您可以利用使用VPN或TLS/SSL压缩的网络压缩。 VPN压缩可能是更值得推荐的方法。

TLS/SSL压缩取决于许多因素,包括是否您的TLS/SSL库启用压缩或默认情况下禁用内置。由于诸如CRIME等高规格安全漏洞,许多操作系统发行版和语言/驱动程序已禁用TLS/SSL压缩功能。尽管MongoDB在理论上不容易遭受CRIME攻击(这是针对经过验证的Web会话),但许多用户认为TLS压缩是一个安全问题。