继月初 HStreamDB 0.9 正式发布之后,HStreamDB 团队投入了新的 v0.10 的开发周期。本月主要新增了端到端压缩、CLI 支持 TLS 等功能,并修复了多项已知问题,同时新的 Haskell gRPC 框架以及云原生的全托管流数据库服务 HStream Cloud 也正在开发中。
之前版本的 HStreamDB 支持 HServer 端的数据压缩,即数据在发送给 HStore 之前可以被 HServer 先进行压缩,但从 client 到 HServer 的路径上尚不支持压缩。
本月我们新引入了端到端的压缩功能,即数据在写入时会在 client 端以 batch 为单位进行压缩,且压缩后的数据会被 HStore 直接进行存储。另外 client 端在消费的时候能够自动进行数据的解压,整个过程对用户无感知。
在高吞吐的场景下,通过启用端到端数据压缩能够显著缓解网络带宽瓶颈,提升读写性能,在我们的 benchmark 中显示会有 4 倍以上的吞吐提升,当然代价是会增加 client 端的 CPU 消耗。
目前此项功能尚未正式发布,但大家可以通过 HStreamDB 的 latest 镜像 抢先体验。Java Client v0.10.0-SNAPSHOT 也已经包含了对端到端压缩的支持(目前仅支持 gzip 压缩),可通过如下代码使用:
BufferedProducer producer =
client.newBufferedProducer()
.stream(streamName)
.compressionType(CompressionType.GZIP)
.batchSetting(batchSetting)
.flowControlSetting(flowControlSetting)
.build();
HServer 使用 gRPC 和 client 进行通信,目前我们使用的 Haskell gRPC 框架是通过 Haskell 的 FFI (Foreign Function Interface) 绑定到 gRPC C core lib 的。为了增强性能与稳定性,我们正在尝试开发一套新的 Haskell gRPC server 框架进行替换。
新框架受 hsthrift 的启发,将基于 C++ gRPC server 来实现,并且基本不需要对目前的 Haskell 源代码进行改动。目前新框架还在开发和测试过程中,预计将在 v0.10 正式发布。
本月 HStream CLI 也新增了对 TLS 的支持,可参考文档使用。
另外, CLI 还带来了以下新功能和改进:
withAsync
引起的内存泄漏问题我们正在开发 HStream Cloud —— 基于公有云平台的 Streaming-Database-as-a-Service 服务。Early Access 版本即将上线,用户将无需部署和运维,即可快速上手使用 HStreamDB。敬请期待。
版权声明: 本文为 EMQ 原创,转载请注明出处。