AutoMQ 1.1.0-RC0 重磅更新:内核升级到 Apache Kafka 3.7.0

AutoMQ 在 2024.02 正式发布了基于 Apache Kafka 3.4.0 的云原生重构版本 1.0.0,AutoMQ 1.0.0 版本相比原版提供了 Serverless、自动负载均衡、秒级分区迁移和 All in 对象存储能力,让 Kafka 用户能充分利用云的弹性能力和廉价存储,实现十倍成本优势。

AutoMQ 基于 Apache Kafka 3.4.0 版本开始进行 Kafka 云原生重构,在此期间 Apache Kafka 社区在 trunk 分支上提交了 1700+ 个 Commits,版本也从 3.4.0 演进到 3.7.0,新增了大量的特性、优化和修复

AutoMQ 为了保障 100% 与 Apache Kafka 兼容,在 AutoMQ 1.0.0 版本稳定后,就立刻开始了对 Apache Kafka 最新代码的合并工作。得益于 AutoMQ 存算分离的架构,对 Apache Kafka 的修改主要限制在存储切面,存储代码仅占整个项目不到 2%,因此 AutoMQ 合并跟进 Apache Kafka 的代码成本很低。

3.7.0 代码合并后,经过评审、Chaos 测试和 500+ E2E 测试,我们很高兴宣布 AutoMQ 1.1.0-RC0 版本正式发布,内核版本从 3.4.0 升级到 3.7.0。

https://github.com/AutoMQ/automq/releases/tag/1.1.0-rc0

新特性&优化

Apache Kafka 内核从 3.4.0 升级到 3.7.0 新增重要的特性和优化如下:

Kafka Broker, Controller, Producer, Consumer

ꔷ KIP-881:消费者分区分配支持 Rack-aware,节省跨 AZ 流量费用(3.5.0)

ꔷ KIP-887:增加 EnvVarConfigProvider 支持从环境变量加载配置(3.5.0)

ꔷ KIP-900:kafka-storage.sh API 增加对 Kraft SCRAM 验证支持(3.5.0)

ꔷ KIP-890:事务消息服务端防御,避免特殊场景下的事务悬挂问题(3.6.0 / 3.7.0)

ꔷ KIP-797:IPv4/IPv6 支持绑定到相同端口(3.6.0)ꔷ KIP-863:CompletedFetch#parseRecord 内存拷贝优化(3.6.0)

ꔷ KIP-868:KRaft 支持以事务模式提交一系列 Records(3.6.0)

ꔷ KIP-714:新增多语言统一的客户端 Metrics,提供从服务端查询客户端 Metrics 的能力(3.7.0)

ꔷ KIP-848:(Early Access)下一代消费者重平衡协议(3.7.0)

ꔷ KIP-951:客户端分区 Leader 发现优化,降低发送/消费的时间(3.7.0)

ꔷ KIP-580:客户端指数退避重试(3.7.0)

Kafka Streams

ꔷ KIP-889:新增 Versioned State Stores 提升在乱序场景下的 join 准确性(3.5.0)
ꔷ KIP-923:为流表 Join 添加宽限期提升乱序处理能力(3.6.0)

ꔷ KIP-941:Range 查询上下界支持 null(3.6.0)

ꔷ KIP-925:Kafka Streams 支持 Rack aware 任务分配(3.7.0)

ꔷ KIP-954:扩展默认的 DSL 存储配置支持自定义类型(3.7.0)

ꔷ KIP-968:Versioned State Stores 新增 IQ 支持(3.7.0)

Kafka Connect

ꔷ KIP-710:MirrorMaker 2.0 支持分布式模式(3.5.0)

ꔷ KIP-898:Connect 插件服务发现能力增强(3.6.0)

ꔷ KIP-976:新增集群维度动态日志等级调节(3.7.0)

ꔷ KIP-980:支持创建停止状态的 Connectors(3.7.0)

参考资料

[1] https://archive.apache.org/dist/kafka/3.5.0/RELEASE\_NOTES.html

[2] https://archive.apache.org/dist/kafka/3.6.0/RELEASE\_NOTES.html

[3] https://downloads.apache.org/kafka/3.7.0/RELEASE\_NOTES.html

[4] https://www.confluent.io/blog/introducing-apache-kafka-3-7/

END

关于我们

我们是来自 Apache RocketMQ 和 Linux LVS 项目的核心团队,曾经见证并应对过消息队列基础设施在大型互联网公司和云计算公司的挑战。现在我们基于对象存储优先、存算分离、多云原生等技术理念,重新设计并实现了 Apache Kafka 和 Apache RocketMQ,带来高达 10 倍的成本优势和百倍的弹性效率提升。

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

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

👀 B站:AutoMQ官方账号

🔍 视频号:AutoMQ

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

<think>我们正在解决一个Maven项目(project-web)执行目标失败的问题,具体是无法解析依赖com.share:project-service:jar:1.1.0-SNAPSHOT。根据引用内容和常见Maven问题,我们可以从以下几个方面排查: 1. **检查依赖是否在仓库中存在**:确保该SNAPSHOT版本的依赖已经被正确安装到本地仓库或远程仓库(如私服)中。 2. **检查仓库配置**:确认settings.xml中配置的仓库(包括镜像)是否包含该依赖。 3. **检查相对路径和父POM**:根据引用[4],Maven在寻找父POM时有一定的顺序,如果父POM没有正确声明或位置不对,可能导致依赖解析问题。 4. **检查版本号**:确认项目中声明的版本号(1.1.0-SNAPSHOT)是否与仓库中的一致。 此外,根据引用[3],在编译过程中可能会遇到各种问题,需要多次尝试并查看详细日志。 具体步骤如下: **步骤1:确保依赖项目已正确安装** - 如果`project-service`模块是当前项目的一部分(多模块项目),请确保先执行`mvn clean install`安装整个项目。这样,当前项目的SNAPSHOT版本会安装到本地仓库。 - 如果`project-service`模块不在当前项目中,而是位于其他项目,那么需要确保该模块已经成功部署到远程仓库(如果是远程SNAPSHOT依赖)或者已经安装到本地仓库(如果是在本地开发)。 **步骤2:检查本地仓库中是否存在该依赖** - 在本地仓库中查找该依赖:默认本地仓库位置是`~/.m2/repository`(Linux/Mac)或`C:\Users\用户名\.m2\repository`(Windows)。 - 路径一般为:`com/share/project-service/1.1.0-SNAPSHOT`。如果该目录不存在或没有最新的SNAPSHOT,则需要重新安装或部署。 **步骤3:检查Maven设置(settings.xml)** - 确认settings.xml中没有配置错误的镜像或仓库。特别注意,如果使用了私服,确保私服中包含该依赖。 - 可以尝试在命令行添加`-X`参数运行Maven(如`mvn -X clean install`),这样可以输出详细的调试信息,查看依赖解析的过程。 **步骤4:检查父POM和相对路径(针对多模块项目)** - 根据引用[4],Maven在解析父POM时有一个顺序:当前项目构建目录->relativePath指定的路径->本地仓库->远程仓库。 - 如果当前项目(project-web)是子模块,那么检查其父POM的声明是否正确,特别是`<relativePath>`元素。如果父POM不在默认位置(../pom.xml),需要正确指定。 **步骤5:清理和重新构建** - 尝试执行`mvn clean install -U`,其中`-U`选项强制Maven更新SNAPSHOT依赖。这在依赖是SNAPSHOT版本时特别有用,因为Maven默认每天只更新一次SNAPSHOT。 **步骤6:检查网络和仓库访问** - 如果依赖在远程仓库,确保网络可以访问该仓库,并且没有防火墙阻止。 **步骤7:检查依赖的作用域(scope)** - 确保依赖没有声明为只在特定作用域下有效(如test),导致在编译主代码时不可用。 如果以上步骤仍然不能解决问题,请查看详细的错误日志(运行Maven时加上`-e`或`-X`参数),根据错误信息进一步分析。 相关问题: 1. 如何查看Maven依赖树以排查依赖冲突? 2. 如何使用Maven的离线模式(offline)? 3. 如何配置Maven镜像加速依赖下载? </think>针对Maven项目无法解析`com.share:project-service:jar:1.1.0-SNAPSHOT`依赖的问题,结合引用内容提供以下解决方案: ### 1. **检查依赖是否已部署到仓库** - **SNAPSHOT依赖需手动安装** 若该依赖是本地开发的模块: ```bash # 进入依赖模块目录执行安装 cd ../project-service # 假设为同级目录 mvn clean install -DskipTests ``` 成功后会在本地仓库生成`~/.m2/repository/com/share/project-service/1.1.0-SNAPSHOT/`目录[^4]。 ### 2. **验证仓库配置** - **检查私服配置** 在`pom.xml`或`settings.xml`中确认仓库地址正确(以Nexus为例): ```xml <repositories> <repository> <id>snapshots</id> <url>http://your-nexus/repository/maven-snapshots/</url> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> ``` - **强制更新SNAPSHOT版本** 执行命令时添加`-U`参数: ```bash mvn clean install -U ``` ### 3. **检查父POM继承链** - **修正相对路径** 在子模块的`pom.xml`中确认父POM路径: ```xml <parent> <groupId>com.share</groupId> <artifactId>project-parent</artifactId> <version>1.1.0-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> <!-- 确保路径正确 --> </parent> ``` 若父POM位置特殊,需调整`<relativePath>`值[^4]。 ### 4. **解决环境不一致问题** - **更新环境变量** 若升级过Maven版本(如引用[2]场景),执行: ```bash source ~/.bashrc # Linux/Mac # 或 refreshenv # Windows ``` 验证版本: ```bash mvn -version ``` - **清理本地仓库缓存** 删除有问题的依赖目录: ```bash rm -rf ~/.m2/repository/com/share/project-service/ ``` ### 5. **检查多模块构建顺序** - **按依赖顺序编译** 在根目录执行构建确保顺序正确: ```bash mvn clean install -pl project-service -am && mvn install -pl project-web ``` `-am`参数会构建依赖模块[^3]。 ### 6. **其他排查点** - **依赖作用域检查** 确认`project-service`依赖未错误声明为`<scope>test</scope>`。 - **镜像仓库配置** 在`settings.xml`中检查是否配置了覆盖中央仓库的镜像(如阿里云镜像)。 > **操作建议**:执行时添加 `-X` 参数查看详细错误日志: > ```bash > mvn clean install -X -e > ``` > 日志中的 `Could not find artifact` 会指明具体缺失的依赖路径。 --- ### 相关问题 1. Maven如何强制重新下载所有SNAPSHOT依赖? 2. 多模块项目中如何控制模块的编译顺序? 3. 如何配置Maven私有仓库解决企业级依赖管理问题? 4. 本地仓库损坏时如何安全清理缓存? [^1]: 扩展安装方式已过时,不推荐使用 [^2]: 环境变量未更新导致版本不一致 [^3]: 多模块项目构建需注意顺序和增量编译技巧 [^4]: 父POM的相对路径解析机制是依赖解析的关键
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值