sofastack / sofa-jarslink

Jarslink is a sofa ark plugin used to manage multi-application deployment
Apache License 2.0
3.05k stars 705 forks source link
ark-plugin multi-application-deployment sofaark

简介

Build Status Coverage Status license maven

This project is no longer in active development, and is currently in maintenance mode. All the existing features have been merged into SOFAArk as part of modular development framework Koupleless, and we highly recommend that you use Koupleless instead.

本项目已不再继续添加新功能,处于维护模式;本项目已有功能已被合并进 Koupleless,并作为模块化研发框架和平台 Koupleless 的能力之一, 我们推荐您直接使用 Koupleless


Jarslink 2.0 是 SOFABoot 官方基于 SOFAArk 开发的功能插件,负责管理多应用在 SOFAArk 容器之上的合并部署,具备如下特性:

背景

在蚂蚁金服内部,在同一个 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 容器之上,从而做到多应用的合并部署。应用可以通过注解的形式快速发布服务或者引用其他应用发布的服务,达到相互通信的目的。下图是运行时多应用合并部署结构图:

undefined

从图中可以看到,使用 Jarslink2.0 通常需要引入两个 Ark Plugin, 下面介绍这两个 Ark Plugin 的作用。

贡献

文档