AutoMQ 社区双周精选第五期(2024.01.01~2024.01.12)

本期概要

欢迎来到 2024 年的第一期双周精选,感谢每一位社区贡献者在过去一年中的陪伴,今年我们将继续携手探索云原生消息队列的更多可能性!
在过去的两周内,AutoMQ Kafka 最新更新包括 S3Object 新功能、StreamObject compaction 支持、数据压缩存储等,大幅提升了集群性能和存储效率。此外,引入了 7 * 24h Chaos 质量验证框架,确保 Kafka 集群在各种故障情况下的稳定性和自愈能力。

AutoMQ for Kafka 主干动态

集群支持 10w 分区 & 1 PB 存储规模

S3Object 新增DataBlockGroup 支持,DataBlockGroup 在 compact 的过程中可以通过 CopyPart 直接合并成更大的 DataBlockGroup。索引仅随 S3Object 的大小线性增长,1MB 索引块可以支持 28GB S3Object;
StreamObject compaction 支持根据 stream 的 start offset 删除过期数据。StreamObject compaction 合并上限提高到 10GB,无额外的存储放大开销。集群 1 PB 存储的 StreamObject 元数据规模预计不超过 70MB;
S3StreamSetObjectRecord 数据压缩存储,KRaft checkpoint 大小优化减少 50%;

https://github.com/AutoMQ/automq-for-kafka/issues/600

2C16G 支持 5K 分区 & 50MB 写入 & 150MB 消费 & 4.5K QPS

通过为读取链路增加追尾读预检查、last segment 读取快速路径、避免 Lambda 小对象创建、Metrics 内存优化。5K 分区 & 64MB 写入 & 192MB 消费场景下,CPU 从 92% 优化到 82%。

https://github.com/AutoMQ/automq-for-kafka/issues/621

Metrics指标JMX转OpenTelemetry

将 Kafka JMX 指标转换成 OpenTelemetry 上报,统一 Kafka 和 S3Stream 的 Metrics 采集方式,为后续在 Grafana 配置监控和报警提供数据源支持。

https://github.com/AutoMQ/automq-for-kafka/issues/666

More Things

Chaos 质量验证框架

AutoMQ Kafka 新增 7 * 24h Chaos 质量验证框架。Kafka 集群 7 * 24h 全天候运行,框架定期注入网络 10s 延迟、进程 kill -9、进程 pause 等故障,并且校验注入故障后的数据完整性、发送 & 消费 SLA 和故障自愈时间。

以上是第五期《双周精选》的内容,欢迎关注我们的公众号,我们会定期更新 AutoMQ 社区的进展。同时,也诚邀各位开源爱好者持续关注我们社区,跟我们一起构建云原生消息中间件!

END

关于我们

AutoMQ 是一家专业的消息队列和流存储软件服务供应商。AutoMQ 开源的 AutoMQ Kafka 和 AutoMQ RocketMQ 基于云对 Apache Kafka、Apache RocketMQ 消息引擎进行重新设计与实现,在充分利用云上的竞价实例、对象存储等服务的基础上,兑现了云设施的规模化红利,带来了下一代更稳定、高效的消息引擎。此外,AutoMQ 推出的 RocketMQ Copilot 专家系统也重新定义了 RocketMQ 消息运维的新范式,赋能消息运维人员更好的管理消息集群。 

🌟 GitHub 地址:https://github.com/AutoMQ/automq-for-kafka

💻 官网:https://www.automq.com

👀 B站:AutoMQ官方账号

🔍 视频号:AutoMQ 

👉 扫二维码加入我们的社区群

关注我们,一起学习更多云原生干货

08-28
Automq 是一种消息队列技术,其设计旨在解决大规模数据传输和消息处理中的性能与可靠性问题。Automq 的核心目标是提供一个高吞吐量、低延迟、可扩展性强的消息中间件,适用于各种需要高效消息传递的场景。其技术原理和实现机制主要包括以下几个方面: 1. **分片机制**:Automq 采用了分片(Partition)机制来实现水平扩展。每个主题(Topic)可以被划分为多个分片,每个分片独立处理消息的生产和消费。这种机制不仅提高了系统的吞吐能力,还增强了系统的可扩展性。通过将数据分布到不同的分片中,Automq 能够有效地处理海量消息流[^1]。 2. **日志结构存储**:Automq 使用了日志结构的存储方式,类似于 Apache Kafka 的设计。消息被追加写入到日志文件中,这种方式可以最大化磁盘的 I/O 性能。同时,Automq 支持高效的读取操作,消费者可以直接从日志文件中读取消息,而不需要频繁的随机访问磁盘。 3. **分布式一致性**:为了确保消息的可靠性和一致性,Automq 引入了分布式一致性协议。它通常依赖于 Raft 或 Paxos 等一致性算法来保证多个副本之间的数据同步。通过这种方式,即使在节点故障的情况下,系统仍然能够保持数据的完整性和可用性。 4. **消费者组管理**:Automq 支持消费者组(Consumer Group)的概念,允许多个消费者实例组成一个组来共同消费消息。每个分片的消息只会被组内的一个消费者实例消费,从而实现了负载均衡和高可用性。消费者组还支持动态的成员加入和退出,适应不断变化的工作负载。 5. **流式处理集成**:Automq 可以与流式处理框架(如 Apache Flink 或 Apache Spark Streaming)集成,提供端到端的流数据处理解决方案。这种集成使得 Automq 不仅可以作为消息队列使用,还可以作为流式数据管道的一部分,支持实时数据分析和处理。 6. **自动化运维**:Automq 提供了丰富的监控和管理工具,支持自动化的运维操作。例如,它可以自动检测节点故障并进行故障转移,自动调整分片的分布以平衡负载,以及提供详细的性能指标用于监控和调优。 7. **多租户支持**:Automq 支持多租户架构,允许不同的业务线或团队共享同一个消息队列集群。通过资源隔离和配额管理,确保各个租户之间的资源使用不会互相干扰。 ### 示例代码:Automq 生产者和消费者 以下是一个简单的 Automq 生产者和消费者的示例代码,展示了如何使用 Automq 进行消息的生产和消费。 #### 生产者代码 ```java import org.apache.automq.sdk.Producer; import org.apache.utomq.sdk.Message; public class AutomqProducer { public static void main(String[] args) throws Exception { // 创建生产者实例 Producer producer = new Producer("broker1:9092", "my-topic"); // 发送消息 for (int i = 0; i < 100; i++) { Message message = new Message("Hello Automq - Message " + i); producer.send(message); } // 关闭生产者 producer.close(); } } ``` #### 消费者代码 ```java import org.apache.automq.sdk.Consumer; import org.apache.utomq.sdk.Message; public class AutomqConsumer { public static void main(String[] args) throws Exception { // 创建消费者实例 Consumer consumer = new Consumer("broker1:9092", "my-topic", "my-group"); // 订阅主题 consumer.subscribe(); // 消费消息 while (true) { Message message = consumer.poll(1000); if (message != null) { System.out.println("Received message: " + message.getValue()); } } } } ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值