传统架构的痛点
资源成本高企:每个微服务,无论业务量大小,通常都需要独立的计算实例(如虚拟机或容器)来承载。这意味着即使是一个仅处理少量请求的小服务,也需要承担完整的基础设施(如 Web 服务器、运行时框架)内存开销。对于大量长尾应用,聚合起来的资源浪费(尤其是内存)非常可观,导致资源利用率低下15。
研发运维效率瓶颈:
● 协作阻塞 :多人协作开发同一个大型应用时,功能开发、测试、发布相互依赖,形成串行流程,任何一个环节的延迟都会阻塞整个应用的迭代速度。
● 反馈周期长 :传统应用启动缓慢(尤其是 Java 应用),构建和部署流程耗时数分钟甚至更长。这导致从代码提交到验证上线的周期很长,难以支持业务的快速试错和频繁发布。
架构演进僵化:在业务发展过程中,应用需要在单体、模块化、微服务等架构形态间平滑演进。但无论是将单体拆分为微服务,还是将多个微服务合并,传统的改造方式代码改动量和风险都极高,使得架构演进成本高昂,甚至难以实施
SOFAServerless
架构拆分逻辑
纵向拆分 :将传统单体应用拆分为基座 和模块 两个层次。基座作为稳定的底层运行时平台,负责机器资源、通用技术组件(如Web容器、数据库连接池等)和通用业务逻辑,为模块提供统一的运行环境。模块则是纯粹的业务逻辑单元,开发者只需关注业务实现,无需感知底层基础设施。
横向拆分 :在业务层,将业务横向拆分为多个独立的模块。每个模块可以独立开发、测试、部署和运维,从而实现并行迭代,解决多人协作时的阻塞问题。
核心技术原理列举
核心技术原理列举
构建与部署
模块构建加速的真相
模块需要依赖基座提供的容器、连接、rpc框架等,以确保编译通过,但基座的作用域被设置为provided。
在进行打包时,maven会将provided作用域的依赖排除在最终的模块JAR包外,使得构建产物非常轻量(可小于1MB)。
因此在模块部署时,构建那么快速的原因是"打包负担锐减"的结果,贡献了大部分时间节省。
部署模式的演进
分为基座容器和模块实例
基座容器:数量较少且稳定,像"服务器"一样提供基础运行环境。
模块实例:数量多于基座,根据业务需求动态部署到基座上,像"应用程序"一样灵活伸缩。
这种模式实现了极致的资源复用,多个模块共享一个基座的基础框架内存开销,避免了传统微服务每个应用独立部署的浪费。
且因热部署的原因,模块部署在基座上的效率远比微服务部署的速度更快,加快了发布上线的速度,提升了工程效率。
类隔离机制
SOFAArk框架是实现多模块共存的基础。SOFAArk框架为每个模块创建一个独立的SOFAArk ClassLoader
这种机制确保了:
隔离性:不同模块可以使用相同依赖库的不同版本而不会发生冲突。
共享性:模块的类加载器将基座的类加载器作为父加载器,从而可以安全地复用基座已加载的类。

通过这种机制,既实现了模块间的隔离,又避免了重复加载基础类造成的资源浪费。
热部署技术
热部署是实现秒级发布的关键。当需要更新模块时,运维平台通过热部署技术将新模块包动态安装到正在运行的基座JVM进程中。
这个过程无需重启基座,通常能在秒级完成

核心价值体现
SOFAServerless带来的核心价值可总结为以下几点
价值维度 传统应用 SOFAServerless模块 提升效果
发布效率 平均6分钟 10-30秒 10倍以上提升
资源占用 每个应用独立基础框架开销 多模块共享基座开销 资源利用率提升10倍
变更风险 影响整个应用 仅影响单个模块 变更范围大大缩小
思考与总结
SOFAServerless的核心思路,是通过"基座+模块"的架构,对传统应用进行纵向和横向拆分,旨在解决微服务架构普遍存在的资源成本高、研发运维效率低、应用拆分难度大等问题。
通过优化"构建与部署","类隔离机制","热部署技术",极大效率的节省了资源和部署的效率。通过引入基座的方式屏蔽基础设施,模块的开发者可以专注于业务逻辑,减少其他基础设施问题的干扰。