Koupleless 2024 年度报告 2025 规划展望
Koupleless 2024 年度报告 & 2025 规划展望
赵真灵 (花名:有济)
Koupleless 负责人
蚂蚁集团技术专家Koupleless 社区的开发和维护者,曾负责基于 K8s 的应用研发运维平台、Node/Pod 多级弹性伸缩与产品建设,当前主要负责蚂蚁及开源社区模块化应用架构演进和 Serverless 相关工作。
本文 4389 字,预计阅读 8 分钟
时光匆匆又是一年。2024 落幕之际,我们对过去这一年做了回顾与总结,不仅是对一年以来每一位在 Koupleless 社区一起努力的同学们的答复和感谢,也是趁此机会对 25 年做个规划和展望。
Koupleless 是一个基于模块化技术的企业级解决方案,涉及的组件和功能较多,包括研发框架、运维调度、研发工具、生态治理工具链等。从 2023 年经过半年的建设到 24 年初基本框架成型发布 1.0.0 版本1,我们仍然面对一些难题:
1、研发阶段的成本仍然较高,尤其是新模块创建、模块瘦身等成本;
2、广泛的生态组件不支持模块化,体现在多个 Spring Boot 安装在一个 JVM 里、动态卸载等,需要解决其中的兼容性适配问题;
3、Koupleless 的发布运维平台建设成本很高,且不同企业的基础设施不同,很难为不同企业提供不同的集成方案。如何让更多企业能低成本集成 Koupleless 模块化发布运维能力,是 Koupleless 项目能否顺利推广的关键。
24 年除了继续在每个组件每个环节上持续迭代和演进快、省、灵活部署、平滑演进四大特性,我们还重点针对上述难题进行了攻坚。这一年,Koupleless 各个项目(包括 SOFAArk、Runtime、Adapter、Plugin、Virtual-Kubelet、Module-Controller、ArkCtl、Scanner、Koupleless-idea 等组件)共合并了 608 个 PR,完成 10 次主版本发布 (包含 79 个子项目版本),发布 228 个功能项,后面会再介绍下其中重要的进展,详细可以查看 github release 列表2。
在开发者生态上,新增 20 位 Contributor,其中 1 位优秀 Contributor,1 位晋升为 Committer。发布 13 篇原理介绍文章、4 篇企业案例,进行 6 次大会分享,社区群人员数量达到**700+**。
主项目:Koupleless


子项目:SOFAArk


以下是 Koupleless 社区 24 年参与贡献的同学:
@ToviHe,@compasty,@g-stream,@lbj1104026847,@linwaiwai,@liu-657667,@qq290584697,@yuhaiqun19892019,@suntaiming,@pmupkin,@2041951416,@loong-coder,@hadoop835,@xymak,@jyyfei,@laglangyue,@yuandongjian,@98DE9E1F,@leewaiho,@KennanYang,@Jackisome,@liufeng-xiwo,@Simon-Dongnan,@oxsean,@langke93,@XiWangWy,@Juzi-jiang,@ligure,@chenjian6824
项目功能演进
研发框架
首先在模块的研发上,为了降低模块的创建和接入成本,Koupleless 提供了:
1、基于研发工具 arkctl3的普通应用一键转换成模块;
2、开放了模块拆分插件 Koupleless-idea4,目前已有 122 次下载,帮助用户以可视化的方式将存量大应用拆分出多个小模块;
3、提供模块脚手架,快速创建出新模块。

在模块研发上线整体流程上,从上图可以看到模块创建的三种方式都已经提供有工具来降低成本。不过当前对改造成基座并没有提供工具,考虑到这部分主要工作是引入 Koupleless sdk 的 starter,参考官网实现即可✅。
模块接入和研发过程中,还有个关键且必需的步骤“模块瘦身”5,这一过程需要同步分析基座和模块的代码。由于这两部分信息比较分散,所以常常出现该瘦身的没有瘦身、不该瘦身的瘦身结果导致模块启动失败等问题。今年我们对模块瘦身做了三大重大升级:
1、提升基座与模块信息的感知度;
2、低成本的模块瘦身;
3、确保瘦身的正确性。
将模块瘦身的操作从原来的黑盒状态转变成白盒状态,可以大幅降低这部分的改造和研发成本。另外在模块打包构建上提供了 gradle 版本的打包插件6,可以让 gradle 工程也能使用 Koupleless 的所有能力。模块隔离上也新增了环境变量隔离能力。
模块化兼容性治理
Koupleless 模块化是在单个 JVM 内同时运行多个 Spring Boot,并提供动态热更新的能力,势必存在一些生态组件不完全适配问题。主要体现在三个方面:
1、共享变量的互相覆盖;
2、多 ClassLoader 切换导致的不一致;
3、部分资源未清理干净。
我们发布了系列文章来详细阐述上述问题,欢迎查阅:
进阶系列一:Koupleless 模块化的优势与挑战,我们是如何应对挑战的7
进阶系列二:Koupleless 内核系列 | 单进程多应用如何解决兼容问题8
进阶系列三:Koupleless 内核系列 | 一台机器内 Koupleless 模块数量的极限在哪里?9
进阶系列四:Koupleless 可演进架构的设计与实践|当我们谈降本时,我们谈些什么10
进阶系列五:Koupleless 内科系列 |怎么在一个基座上安装更多的 Koupleless 模块?11
同时我们也在社区将完整的生态治理工具链开放出来,包括事前的代码扫描 → 事中的低成本治理 adapter + plugin → 事后的防御集成测试框架 multiAppTest,每个组件的使用都可以查阅官网文档。

当前已完成所发现的 50 多个常用组件的兼容性治理或已提供最佳实践。
运维调度
在发布与运维调度上,Koupleless 是在原有的基座进程里动态安装卸载多个模块。由于这套模式与企业的现有基础设施有较大不同,需要在原来的基础设施上新建一层模块化的控制面,有较高的建设成本和与周边设施打通的成本,如下图:

需要建设设配的周边平台不限于:
1、应用元数据管理平台:新增模块应用元数据;
2、研发与迭代管理平台:增加模块创建、模块迭代、模块构建、发起模块发布;
3、联调平台:增加模块与基座、模块与普通应用联调;
4、可观测平台:监控与告警、trace 追踪、日志采集与查询;
5、灰度平台;
6、模块流量。
今年我们根据内部实战经验,考虑生态适配的成本问题,将模块安装调度到基座上的行为抽象等同为 Pod 安装调度到 Node 上的行为,巧妙利用 Virtual-Kubelet 将模块实例映射为 vPod,将基座 Pod 映射为 vNode。

基于 Virtual-Kubelet 的 ModuleController 方案,将原来的三层架构打平到与传统一致的两层架构,可以大量复用为普通应用建设的基础设施能力,包括直接使用基座 PaaS 平台来发布模块,达到可低成本扩展出模块化发布、运维、调度能力的目的,这套方案也在内部实际业务落地过程得到了验证。

更多能力不再一一罗列,详细可查看 github release 列表12。
企业接入与案例
当前已累计有 45 家企业(不完全统计)已经完成接入上线,其中于 24 年新增 26 家企业,包括快手、涂鸦、民生银行等,沉淀 4 个案例:
高效降本|深度案例解读 Koupleless 在南京爱福路的落地实践13
Koupleless 助力蚂蚁搜推平台 Serverless 化演进14
涂鸦智能落地 Koupleless 合并部署,实现云服务降本增效15
Koupleless 助力「人力家」实现分布式研发集中式部署,又快又省!16
这些企业在多个业务场景里落地了 Koupleless,包括“中台代码片段研发提效”、“企业内合并部署省资源”、“私有云、边缘云交付”、“长尾应用治理”等,同时也完成了一些新业务的探索落地。
新业务场景探索落地
实时计算
在蚂蚁内部的 Flink 计算引擎,原来采用业内常用的启动进程的方式编译用户提交上来的作业代码,每次占用资源且耗时较高。使用 Koupleless 中提供的动态模块与动态 plugin 能力,将每一次编译请求从进程模型调整线程模型,每一次请求实际变成安装一次模块,然后触发线程内的编译,编译完成后立即卸载模块。将编译速度提升 5 倍以上,解决了原来的三大痛点:资源消耗大、相应速度慢、处理请求有限,当前一篇专利正在申请中。

进程调度
该业务场景需要在一个 Pod 内动态开启或关闭多个子进程,并同步状态到控制平台。这个过程相当于在一个 Pod 的基座进程里安装了多个进程模块,与 Koupleless 模块化实际上非常类似,区别只是进程内模块化还是进程间模块化的区别,在运维调度上本质是相通的,需要考虑的问题如下:
1、资源的分配与调度;
2、玩法进程的启动;
3、玩法进程关闭;
4、玩法进程的状态查询与同步等。

我们基于 Virtual-Kubelet 的 ModuleController 方法,同样把基座进程映射成 vNode,把动态启停的子进程映射成 vPod,然后由 K8s 控制组件完成实例管理、调度、运维等,通过实现类似 Kubelet 的 agent 管道实现子进程的启动和关闭,最终帮助业务快速完成了运维和调度等三层能力的建设。
除了这些已有的和 24 年新增的业务场景,相信还有更多的业务场景可以使用 Koupleless,欢迎一起在社区里碰撞出更多可能,帮助更多企业实现降本增效和绿色计算!
25 年规划
24 年已经过去,不管是风和雨还是喜和乐,它都是一段不可缺少的经历。在社区的陪伴下,今年的 Koupleless 极大地成长了!
Koupleless 感谢每一位一起共建的 Contributor,你们的每一个 issue、每一次 comment、每一条 PR、每一个回复都已经成为 Koupleless 不可或缺的一部分。
也感谢每一个愿意试用的企业和开发者,你们已经踏出了关键的第一步“动手试用”,愿意去尝试和发现 Koupleless 的价值;过程可能遭遇挫折,但最终都完成了评估验证。不管是否实际落地业务,你们都为 Koupleless 的发展提供了业务基础。
更感谢最终成功落地业务的企业和开发者们,你们不光解决了 Koupleless 框架的适配问题,还克服了企业落地的困难(有不少企业因为非技术的原因停在了这一步),用你们对 Koupleless 的耐心和信心,持续努力最终顺利在企业内部落地,在这个过程中持续陪伴和滋养了 Koupleless 的成长。
因为有你们的陪伴,Koupleless 在这一年里成长了:除了进一步打磨底盘完善体验外,对于年初的三大难题也探索出了方向,实现了完整的架构和工具链或组件。不过,这些难题还待继续磨砺💪,25 年有更多的共同目标,主要集中在以下几个方面。
进一步完善模块化兼容性治理工具链
1、Adapter 虽然可以通过类覆盖的方式完成组件的治理,但因为要拷贝原来完整的类过来,可能覆盖掉某些版本的实现。需要调整为 patch 的方式完成覆盖,详见 GitHub issue#18317。
2、Plugin 当前可以帮助基座自动匹配到对应的 adapter 并引入,但是当前的匹配方式是基于 Koupleless-adapter-config里的映射关系表实现的,如果企业内部自定义的 adapter 是不在这个映射表里的,需要支持企业内部的关系表映射。
3、多应用集成测试框架还需重新设计方案,以便可以利用已有的测试的用例快速建设多应用的集成测试用例。
4、另外,当前这些工具是手动模式,无法支持更广泛的组件的扫描与治理,需要考虑自动化的能力去做好生态更广泛的治理工作。
提升 ModuleController 性能与体验
当前 ModuleController 已经提供 http 和 mqtt 两种类型的运维管道能力,但目前实现功能还需要在更复杂的运维环境里测试验证。未来:
1、ModuleController 提供更完整的运维能力和集成测试验证能力;
2、验证并提高基座与模块的同时并行运维的能力;
3、ModuleController 自身成功率达到 99%。
DevOps 平台
当前 ModuleController 只是提供了模块化发布、运维与调度能力,不具备 DevOps 的平台能力,也无法提供基座和模块的管理能力。因此需要:
1、发布 0.5 版本 DevOps 平台,提供基础的基座与模块管理能力、模块迭代与流水线能力等;
2、提供快速试用 PlayGroud。
打造 Serverless 能力
1、建设弹性能力与调度,如模块 HPA;
2、提供通用基座示例,打造 Serverless 体系。
这些能力的建设还需要更多社区同学一起努力,欢迎更多有志之士一起加入 Koupleless 社区,一起打造模块化研发体系,帮助更多企业实现降本增效和绿色计算!
参考链接
https://github.com/koupleless/koupleless/releases/tag/v1.0.0 ↩︎
https://github.com/koupleless/koupleless/releases ↩︎
https://github.com/koupleless/arkctl/releases ↩︎
https://plugins.jetbrains.com/plugin/24389-kouplelesside ↩︎
https://koupleless.io/docs/tutorials/module-development/module-slimming ↩︎
https://github.com/sofastack/sofa-ark/tree/master/sofa-ark-parent/support/ark-gradle-plugin ↩︎
https://koupleless.io/blog/2024/01/25/koupleless-内核系列模块化隔离与共享带来的收益与挑战/ ↩︎
https://koupleless.io/blog/2024/01/25/koupleless-内核系列-单进程多应用如何解决兼容问题 ↩︎
https://koupleless.io/blog/2024/01/25/koupleless-内核系列-一台机器内-koupleless-模块数量的极限在哪里 ↩︎
https://koupleless.io/blog/2024/01/25/koupleless-可演进架构的设计与实践当我们谈降本时我们谈些什么 ↩︎
https://koupleless.io/blog/2024/12/05/怎么在一个基座上安装更多的-koupleless-模块 ↩︎
https://github.com/koupleless/koupleless/releases ↩︎
https://koupleless.io/user-cases/aifulu-car/ ↩︎
https://koupleless.io/user-cases/ant-arec/ ↩︎
https://koupleless.io/user-cases/tuya/ ↩︎
https://koupleless.io/user-cases/renlijia/ ↩︎
https://github.com/koupleless/koupleless/issues/183 ↩︎
相关文章:
Koupleless 2024 年度报告 2025 规划展望
Koupleless 2024 年度报告 & 2025 规划展望 赵真灵 (花名:有济) Koupleless 负责人 蚂蚁集团技术专家 Koupleless 社区的开发和维护者,曾负责基于 K8s 的应用研发运维平台、Node/Pod 多级弹性伸缩与产品建设,当前主…...
C与C++中inline关键字的深入解析与使用指南
文章目录 引言一、历史背景与设计哲学1.1 C中的inline1.2 C中的inline 二、核心机制对比2.1 编译行为2.2 链接模型2.3 存储类说明符(详细解析)C的灵活组合C的限制原理 补充说明: 三、典型应用场景3.1 C中的使用场景3.2 C中的使用场景 四、现代…...
记录linux安装mysql后链接不上的解决方法
首先确保是否安装成功 systemctl status mysql 如果没有安装的话,执行命令安装 sudo apt install mysql-server 安装完成后,执行第一步检测是否成功。 通常初始是没有密码的,直接登陆 sudo mysql -u root 登录后执行以下命令修改密码&…...
Java 大视界 -- Java 大数据在智能金融反欺诈中的技术实现与案例分析(114)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
01_NLP基础之文本处理的基本方法
自然语言处理入门 自然语言处理(Natural Language Processing, 简称NLP)是计算机科学与语言学中关注于计算机与人类语言间转换的领域,主要目标是让机器能够理解和生成自然语言,这样人们可以通过语言与计算机进行更自然的互动。 …...
(十 六)趣学设计模式 之 责任链模式!
目录 一、 啥是责任链模式?二、 为什么要用责任链模式?三、 责任链模式的实现方式四、 责任链模式的优缺点五、 责任链模式的应用场景六、 总结 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,…...
动态规划/贪心算法
一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术,尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题,并保存这些子问题的解以避免重复计算,从而提高效率。 动态规划的核心思想 最优子结…...
PH热榜 | 2025-03-04
1. MGX 标语:第一支人工智能开发团队 介绍:MGX(MetaGPT X)是一个基于真实软件标准操作程序(SOP)的多代理人工智能平台。在这里,你可以随时与AI团队的领导、产品经理、架构师、工程师和数据分析…...
Mybatis-Plus 插件机制与自定义插件实现
1. Mybatis-Plus 插件系统概述 Mybatis-Plus 提供了一个简单而强大的插件机制,允许开发者在 MyBatis 执行 SQL 的过程中插入自定义逻辑。通过插件机制,用户可以实现对 SQL 执行过程的拦截和修改。Mybatis-Plus 插件基于 MyBatis 的拦截器模式进行实现&a…...
开源表单、投票、测评平台部署教程
填鸭表单联合宝塔面板深度定制,自宝塔面板 9.2 版本开始,在宝塔面板-软件商店中可以一键部署填鸭表单系统。 简单操作即可拥有属于自己的表单问卷系统,快速赋能业务。即使小白用户也能轻松上手。 社区版体验地址:https://demo.tduckapp.com/home 前端项目地址: tduck-fro…...
行为模式---命令模式
概念 命令模式是一种行为设计模式,它的核心思想就是将请求封装为一个对象,此对象包含与请求相关的所有信息。可以用不同的请求对客户进行参数化。命令模式通过将请求的发送者和接收者解耦,支持请求的排队、记录、撤销等操作。 使用场景 1、…...
zabbix配置邮件告警
目录 实现步骤: 实现目的: 1.在监控端操作: 2.web界面部署 实现步骤: 1、在 zabbix服务端配置邮件发送脚本和修改 zabbix服务端配置文件; 2、在 zabbix前端控制台进行相关设置。 实现目的: Zab…...
INI和CSV文件保存
INI文件 INI文件是一种配置文件格式,通常用于Windows操作系统中的应用程序中。 它是一种文本文件,由多个节和键值对组成,用于存储应用程序的配置信息。 INI文件的特点包括: INI文件是一种文本文件,易于编辑和阅读。…...
汽车智能钥匙中PKE低频天线的作用
PKE(Passive Keyless Entry)即被动式无钥匙进入系统,汽车智能钥匙中PKE低频天线在现代汽车的智能功能和安全保障方面发挥着关键作用,以下是其具体作用: 信号交互与身份认证 低频信号接收:当车主靠近车辆时…...
计算机等级考试
一、计算机等级考试——题库 (1)选择题 (2)基本操作题 (3)上网题 (4)文字题 (5)表格题 (6)演示文稿题 二、计算机等级考试——标准评…...
Geotools中获取Shapefile的属性表格字符集编码的一种方法
目录 前言 1、字符集编码的重要性 2、Geotools 在 GIS 开发中的地位 一、GeoTools的字符集知识 1、字符集的作用 2、shapefile中字符集信息 二、GeoTools中获取字符集的方法 1、默认获取 2、从DataStore中获取 3、从CPG文件中获取 4、生产字符获取实践 三、总结 前言…...
HTTP 与 HTTPS 协议:从基础到安全强化
引言 互联网的消息是如何传递的? 是在路由器上不断进行跳转 IP的目的是在寻址 HTTP 协议:互联网的基石 定义 HTTP(英文:HyperText Transfer Protocol,缩写:HTTP),即超文本传输协…...
Scrapy爬虫框架介绍
目录 什么是Scrapy Scrapy核心组件 Scrapy扩展组件 组件交互流程 安装Scrapy Scrapy项目目录结构说明 创建Scrapy项目 创建爬虫 运行爬虫 配置请求头 全局配置请求头 指定爬虫配置请求头 配置管道pipeline 全局配置pipeline 方式一:指定爬虫配置pipe…...
Stable Diffusion模型高清算法模型类详解
Stable Diffusion模型高清算法模型类详细对比表 模型名称核心原理适用场景参数建议显存消耗细节增强度优缺点4x-UltraSharp残差密集块(RDB)结构优化纹理生成真实人像/建筑摄影重绘幅度0.3-0.4,分块尺寸768px★★★★★☆皮肤纹理细腻,但高对比场景易出现…...
软考网络安全口诀
首先,我们来看第一个口诀 “防御为先,安全无小事”。这个口诀强调了网络安全中的防御意识。在软考备考过程中,我们需要深刻理解网络安全不仅仅是技术层面的问题,更是一种全面的防御思维。从网络架构设计到日常运维管理࿰…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
