本期概要
在开源的第二个双周里,作为一个成长中的开源项目,AutoMQ做了很多的优化和重构,以下是相关重点动态的总结。
AutoMQ Kafka:写链路耗时优化、快慢读隔离、Spot 实例强制回收容灾。
AutoMQ RocketMQ:历史数据冷读优化、LogCache 读写耗时优化、发布 v0.0.3-alpha 版本、发布 Helm Chart、发布文档站。
AutoMQ Kafka 精选动态
写链路耗时优化
原来所有的写入和回调都会放到一个单线程线程池去进行处理来确保数据安全,该方式存在线程上下文切换通信、单线程处理排队两个问题。本次优化将写入流程中的数据结构改造成线程并发安全模式,使得不同 stream 之间可以并发进行写入,AutoMQ Kafka 客户端平均写入耗时下降 0.3ms。 https://github.com/AutoMQ/automq-for-rocketmq/pull/728 https://github.com/AutoMQ/automq-for-rocketmq/pull/729 https://github.com/AutoMQ/automq-for-rocketmq/pull/743
快慢读隔离
隔离从 Cache 读取的快读和从 S3 的读取的慢读,避免慢读占满快读的线程池影响快读。 https://github.com/AutoMQ/automq-for-kafka/pull/472
Spot 实例强制回收容灾
在上期精选中提及进度的Spot 实例强制回收容灾已经完成。Spot(竞价实例)相比按需实例可以便宜至多 90 %,但问题是它可能不经通知就强制回收。该特性支持 Spot 实例强制回收的情况下,仍旧可以将数据卷挂载到存活的机器,进行秒级容灾恢复。 https://github.com/AutoMQ/automq-for-kafka/issues/447
AutoMQ RocketMQ 精选动态
Stream 模块性能优化
历史数据冷读优化
历史数据追赶读优化,Fetch 请求(50MB & 50 stream)冷读穿透到 S3 场景,单次 Fetch 耗时从 4s 优化到 100ms。即使是完全穿透冷读,S3 读取吞吐效率也是很高的。 https://github.com/AutoMQ/automq-for-rocketmq/pull/766
LogCache 读写耗时优化
增加上次 Cache 读取位点记录,避免每次从 LogCache 读取数据都需要二分查找定位,10W 个消息下 10W 次查询时间从 71s 优化到 86ms。https://github.com/AutoMQ/automq-for-rocketmq/pull/731 通过读写锁,将 LogCache 升级成线程并发安全的数据结构,提升 LogCache 读取并发效率。 https://github.com/AutoMQ/automq-for-rocketmq/pull/701
发布 v0.0.3-alpha 版本
这个版本包含了以下功能和优化: 1)稳定性与性能提升:修复了潜在的 OOM 问题以及提升 stream 模块性能 详见Changelog:https://github.com/AutoMQ/automq-for-rocketmq/compare/v0.0.2-alpha...v0.0.3-alpha 2)工程化建设:引入 Nightly build和 E2E test CI https://hub.docker.com/r/automqinc/automq-for-rocketmq/tags https://github.com/AutoMQ/automq-for-rocketmq/actions/workflows/build-ci.yml 3)可观测性提升:为 stream 模块引入 Metrics;为 Proxy、Store 模块引入 Trace https://github.com/AutoMQ/automq-for-rocketmq/pull/766
发布 Helm Chart
现在可以使用 Helm Chart 快速在 Kubernetes 中创建 AutoMQ RocketMQ 集群。
$ helm repo add automq https://charts.automq.com
$ helm search repo automq
NAME CHART VERSION APP VERSION DESCRIPTION
automq/automq-for-rocketmq 0.0.4 v0.0.3-alpha A Helm chart for automq-for-rocketmq
部署该 Chart 会创建一个 AutoMQ RocketMQ Broker 以及依赖的 MySQL 与 Minio 组件。后续会陆续加入可选的可观测性依赖组件。
发布文档站
介绍了 AutoMQ RocketMQ 基本使用方式,包含:本地构建、使用 docker compose 部署、在 Kubernetes 上部署。以及使用 CLI 运维集群模式,管理 Topic 等资源。 https://docs.automq.com/zh/docs/automq-rocketmq/RmuXwhb5Xi9zjCkrInRcCz0UnTe
More Things
与小红书的同学共创对象存储跨地域容灾方案 https://github.com/AutoMQ/automq-for-kafka/issues/477
以上是第二期《双周精选》的内容,欢迎关注我们的公众号,我们会定期更新AutoMQ社区的进展。同时,也诚邀各位开源爱好者持续关注我们社区,跟我们一起构建云原生消息中间件!
END
关于我们
AutoMQ 是一家专业的消息队列和流存储软件服务供应商。AutoMQ 开源的 AutoMQ Kafka 和 AutoMQ RocketMQ 基于云对 Apache Kafka、Apache RocketMQ 消息引擎进行重新设计与实现,在充分利用云上的竞价实例、对象存储等服务的基础上,兑现了云设施的规模化红利,带来了下一代更稳定、高效的消息引擎。此外,AutoMQ 推出的 RocketMQ Copilot 专家系统也重新定义了 RocketMQ 消息运维的新范式,赋能消息运维人员更好的管理消息集群。
🌟 GitHub 地址:https://github.com/AutoMQ
💻 官网:https://www.automq.com
👀 B站:AutoMQ官方账号
🔍 视频号:AutoMQ
👉 扫二维码加入我们的社区群
关注我们,一起学习更多云原生干货