SOFAServerless架构的意义

传统架构的痛点

资源成本高企:每个微服务,无论业务量大小,通常都需要独立的计算实例(如虚拟机或容器)来承载。这意味着即使是一个仅处理少量请求的小服务,也需要承担完整的基础设施(如 Web 服务器、运行时框架)内存开销。对于大量长尾应用,聚合起来的资源浪费(尤其是内存)非常可观,导致资源利用率低下15。

研发运维效率瓶颈:

协作阻塞 :多人协作开发同一个大型应用时,功能开发、测试、发布相互依赖,形成串行流程,任何一个环节的延迟都会阻塞整个应用的迭代速度。

反馈周期长 :传统应用启动缓慢(尤其是 Java 应用),构建和部署流程耗时数分钟甚至更长。这导致从代码提交到验证上线的周期很长,难以支持业务的快速试错和频繁发布。
架构演进僵化:在业务发展过程中,应用需要在单体、模块化、微服务等架构形态间平滑演进。但无论是将单体拆分为微服务,还是将多个微服务合并,传统的改造方式代码改动量和风险都极高,使得架构演进成本高昂,甚至难以实施

SOFAServerless

架构拆分逻辑

纵向拆分 :将传统单体应用拆分为基座模块 两个层次。基座作为稳定的底层运行时平台,负责机器资源、通用技术组件(如Web容器、数据库连接池等)和通用业务逻辑,为模块提供统一的运行环境。模块则是纯粹的业务逻辑单元,开发者只需关注业务实现,无需感知底层基础设施。
横向拆分 :在业务层,将业务横向拆分为多个独立的模块。每个模块可以独立开发、测试、部署和运维,从而实现并行迭代,解决多人协作时的阻塞问题。

核心技术原理列举

核心技术原理列举

构建与部署
模块构建加速的真相

模块需要依赖基座提供的容器、连接、rpc框架等,以确保编译通过,但基座的作用域被设置为provided。

在进行打包时,maven会将provided作用域的依赖排除在最终的模块JAR包外,使得构建产物非常轻量(可小于1MB)。

因此在模块部署时,构建那么快速的原因是"打包负担锐减"的结果,贡献了大部分时间节省。

部署模式的演进

分为基座容器和模块实例

基座容器:数量较少且稳定,像"服务器"一样提供基础运行环境。

模块实例:数量多于基座,根据业务需求动态部署到基座上,像"应用程序"一样灵活伸缩。

这种模式实现了极致的资源复用,多个模块共享一个基座的基础框架内存开销,避免了传统微服务每个应用独立部署的浪费。

且因热部署的原因,模块部署在基座上的效率远比微服务部署的速度更快,加快了发布上线的速度,提升了工程效率。

类隔离机制

SOFAArk框架是实现多模块共存的基础。SOFAArk框架为每个模块创建一个独立的SOFAArk ClassLoader

这种机制确保了:

隔离性:不同模块可以使用相同依赖库的不同版本而不会发生冲突。

共享性:模块的类加载器将基座的类加载器作为父加载器,从而可以安全地复用基座已加载的类。

通过这种机制,既实现了模块间的隔离,又避免了重复加载基础类造成的资源浪费。

热部署技术

热部署是实现秒级发布的关键。当需要更新模块时,运维平台通过热部署技术将新模块包动态安装到正在运行的基座JVM进程中。

这个过程无需重启基座,通常能在秒级完成

核心价值体现

SOFAServerless带来的核心价值可总结为以下几点

价值维度 传统应用 SOFAServerless模块 提升效果

发布效率 平均6分钟 10-30秒 10倍以上提升

资源占用 每个应用独立基础框架开销 多模块共享基座开销 资源利用率提升10倍

变更风险 影响整个应用 仅影响单个模块 变更范围大大缩小

思考与总结

SOFAServerless的核心思路,是通过"基座+模块"的架构,对传统应用进行纵向和横向拆分,旨在解决微服务架构普遍存在的资源成本高、研发运维效率低、应用拆分难度大等问题。

通过优化"构建与部署","类隔离机制","热部署技术",极大效率的节省了资源和部署的效率。通过引入基座的方式屏蔽基础设施,模块的开发者可以专注于业务逻辑,减少其他基础设施问题的干扰。

相关推荐
云烟成雨TD7 分钟前
Spring AI 1.x 系列【28】基于内存和 MySQL 的多轮对话实现案例
java·人工智能·spring
Lyyaoo.9 分钟前
【JAVA基础面经】String、StringBuffer、StringBuilder
java·开发语言
TeamDev15 分钟前
JxBrowser 8.18.2 版本发布啦!
java·前端·跨平台·桌面应用·web ui·jxbrowser·浏览器控件
亚马逊云开发者16 分钟前
Amazon Aurora PostgreSQL 快速配置实战:两次点击秒级创建无服务器数据库,告别 VPC 子网安全组配置噩梦
数据库·postgresql·serverless
晴天sir19 分钟前
Redis 在业务中的几种典型用法
java·数据库·redis
WJX_KOI24 分钟前
MemOS —— 为大语言模型 (LLMs) 和智能体打造的记忆操作系统。
java·人工智能·语言模型
倔强的胖蚂蚁26 分钟前
AI 人工智能配置管理 Nginx
运维·nginx·云原生
_日拱一卒29 分钟前
LeetCode:矩阵置零
java·数据结构·线性代数·算法·leetcode·职场和发展·矩阵
上海云盾安全满满31 分钟前
服务器如果做好日常维护,有什么作用
运维·服务器
weixin_4080996732 分钟前
【实战教程】懒人精灵如何实现 OCR 文字识别?接口调用完整指南(附可运行示例)
java·前端·人工智能·后端·ocr·api·懒人精灵