IT评测·应用市场-qidao123.com
标题:
Jarslink 是一个 SOFA 方舟插件,用于管理多应用部署
[打印本页]
作者:
反转基因福娃
时间:
2025-3-23 21:29
标题:
Jarslink 是一个 SOFA 方舟插件,用于管理多应用部署
前言
大家好,我是老马。
sofastack 其实出来很久了,第一次应该是在 2022 年左右开始关注,但是一直没有深入研究。
最近想学习一下 SOFA 对于生态的设计和思索。
sofaboot 系列
SOFABoot-00-sofaboot 概览
SOFABoot-01-蚂蚁金服开源的 sofaboot 是什么黑科技?
SOFABoot-02-模块化隔离方案
SOFABoot-03-sofaboot 介绍
SOFABoot-04-快速开始
SOFABoot-05-依赖管理
SOFABoot-06-健康检查
SOFABoot-07-版本检察
SOFABoot-08-启动加快
SOFABoot-09-模块隔离
SOFABoot-10-聊一聊 sofatboot 的十个问题
Jarslink
Jarslink
是
SOFABoot
官方基于
SOFAArk
开发的功能插件,负责管理多应用在 SOFAArk 容器之上的归并部署,具备如下特性:
支持运行时动态安装和卸载应用。
支持运行时应用热替换本事,包管服务的一连性。
跨应用内部通信,支持应用发布引用 JVM 服务,跨应用既可以使用 RPC 框架,也可以走内部 JVM 服务进行通信。
支持应用健康检查。
最新的消息是项目已不再继承添加新功能,处于维护模式;本项目已有功能已被归并进 Koupleless,并作为模块化研发框架和平台 Koupleless 的本事之一, 我们保举您直接使用
Koupleless
背景
在蚂蚁金服内部,在同一个 JVM 之上部署多个应用,是一件常见的事情。这样带来的主要优势如下:
无关应用归并部署:有些应用在独立部署时,相互之间没有服务依赖,而且这些应用承担业务体量都偏小,单独启动 Java 虚拟机比较浪费资源, 将这些应用归并部署,能够节流资源。
相关应用归并部署:有些应用之间存在服务依赖,独立部署时,各应用之间使用 RPC 调用,固然使用了分布式架构,稳固性高,但依然存在网络抖动导致的延时性问题。这些应用归并部署,RPC 调用优先转为 JVM 内部调用,缩减调用开销。
不光应用间存在归并部署,近端包也有同样的诉求。
近端包是提供一系列公共服务的三方组件,一样平常由应用作为依赖引入,这种开发模式容易导致两个问题:
近端包引入的三方依赖和应用本身的依赖产生辩论,期望能做到隔离部署。
近端包由应用作为依赖引入,因此近端包的任何升级改造都需要应用共同升级。但是作为一个公共的功能组件,近端包通常会被很多业务方应用依赖,此时推动业务方改造工作量巨大,因此期望能做到近端包的动态升级。
除了归并部署,蚂蚁金服很多业务场景需要模块的热部署,即在应用运行时,需要动态替换某特定模块而不影响其他模块的正常运行。
Jarslink2.0 正是为了解决诸如此类的问题,它是基于 SOFAArk 开发的 Ark Plugin,用于管理多应用归并部署。在了解 Jarslink2.0 之前,你需要提前了解 SOFAArk 框架。关于 SOFAArk 可以访问链接获取更多具体信息。
原理
Jarslink2.0 是一款基于 SOFAArk 开发的 Ark Plugin 。
假设你已经对 SOFAArk 有一定的了解,很容易知道,应用被打包成 Ark Biz 的形式运行在 SOFAArk 容器之上。
SOFABoot 大概 Spring Boot 应用,乃至平常的模块都可以借助 SOFAArk 插件打包成一个标准的 Ark Biz 包。
Jarslink2.0 支持多个 Ark Biz 运行在 SOFAArk 容器之上,从而做到多应用的归并部署。应用可以通过注解的形式快速发布服务大概引用其他应用发布的服务,到达相互通信的目的。下图是运行时多应用归并部署布局图:
从图中可以看到,使用 Jarslink2.0 通常需要引入两个 Ark Plugin, 下面介绍这两个 Ark Plugin 的作用。
Jarslink: Jarslink2.0 核心代码,支持动态接收命令,如安装、卸载、切换等等,用于管理 Ark Biz 的生命周期。假如需要运行时动态部署应用,需要添加如下依赖:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-jarslink-ark-starter</artifactId>
<classifier>ark-plugin</classifier>
</dependency>
复制代码
SOFARuntime: SOFARuntime 是 SOFABoot 提供的功能模块,用于实现跨应用的服务调用。假如需要使用跨应用调用功能,需要添加如下依赖:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>runtime-sofa-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>runtime-sofa-boot-starter</artifactId>
<classifier>ark-plugin</classifier>
</dependency>
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4