基于 SOFAArk 和 SOFADashboard 实现动态模块管控 | Meetup#2 回顾

SOFA Ark模块化更新小Demo 创建一个工程,包含3个模块 父工程里面的配置 父工程的Pom文件,管理版本 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 .. 阅读详情

作者:卫恒(宋国磊) SOFATracer 以及 SOFADashboard 开源负责人。

本文根据 5月26日 SOFA Meetup#2上海站 《使用 SOFAStack 快速构建微服务》主题分享整理,着重分享如何使用 SOFADashboard 来管控 SOFAArk ,对于 SOFAArk 中的一些基础概念和知识不过多涉及;建议大家在阅读之前,先了解下 SOFAArk 的相关基本知识。

现场回顾视频以及 PPT 见文末链接。

640?wx_fmt=png


0前言

SOFAArk [1] 是一款基于 Java 实现的轻量级类隔离容器,主要提供类隔离和应用(模块)合并部署能力,由蚂蚁金服开源贡献。SOFAArk 在 0.6.0 版本 [2] 提供了非常丰富的功能特性,其中最核心的当属多应用(模块)合并部署这个能力。SOFAArk 本身提供了多种方式来支持多应用(模块)合并部署 ,包括基于命令行的管控,基于 API 的管控等。本篇将结合 SOFA 开源的管控端组件 SOFADashboard [3],来实现 SOFAArk 提供的合并部署和动态模块推送的功能。

案例工程地址 [4]:
https://github.com/sofastack-guides/sofa-dashbaord-samples-parent


1背景

复杂项目通常需要跨团队协作开发,各自负责不同的组件,而众所周知,协调跨团队合作开发会遇到不少问题;比如各自技术栈不统一导致的依赖冲突,又比如往同一个 Git 仓库提交代码常常导致 merge 冲突。因此,如果能让每个团队将负责的功能组件当成一个个单独的应用开发,运行时合并部署,通过统一的编程界面交互,那么将极大的提升开发效率及应用可扩展性。SOFAArk 提出了一种特殊的包结构 -- Ark Biz,用户可以使用 Maven 插件将应用打包成 Biz,允许多 Biz 在 SOFAArk 容器之上合并部署,并通过统一的编程界面交互。

640?wx_fmt=png


2案例模型

本篇所演示案例是上图的一个简化版,从整体上可以体现 SOFAArk多应用合并部署的能力。主要包括已经几个工程:

  • sofa-dashboard-ark-hostapp : 宿主应用

  • sofa-dashboard-ark-facade   : 提供接口 API

  • sofa-dashboard-ark-provider :提供接口 API 的具体实现,将发布一个 JVM 服务

sofa-dashboard-ark-hostapp 和 sofa-dashboard-ark-provider 均作为 SOFAArk 中的 ark-biz 存在;sofa-dashboard-ark-hostapp 作为宿主应用对外提供服务。

640?wx_fmt=png

上图的模型中,在宿主应用不重启的情况下,实现  provider 模块的动态替换,从而实现版本升级。

在宿主应用启动时,provider 1.0.0 以静态合并部署方式“寄宿”到宿主应用中,这部分实际上与 SOFADashboard 管控是没有什么关系的,为了案例效果,在下面的案例中,关于静态合并部署的操作也会涉及到。

最终的工程结构图如下:

640?wx_fmt=png


3环境准备

本文需要启动 SOFADashboard 服务端,具体请参考 : Quick Start [5] ;其他基础设施环境如 Zookeeper 、Mysql 等需提前准备。


4工程构建

本篇将通过 step by step 的方式来构建整个工程,为大家在实际的应用过程中提供一种简单的思路,同时也帮助大家更好的理解 SOFAArk 中的一些点。

sofa-dashboard-ark-facade

基础 API 提供模块,不需要依赖任何其他二方或者三方 JAR,这里仅提供一个接口。

public interface SofaJvmService {	
    String test();	
}

sofa-dashboard-ark-provider

这个模块是 JVM 服务的提供方,也是后面需要在宿主应用中进行替换演示的模块包,这个模块本身也是一个 Web 应用。这里就来一步步分解下,如何将一个普通的 SpringBoot 工程改造成一个 ark-biz 工程。

1、新建一个 SpringBoot 工程

新建 SpringBoot 工程推荐的方式有两种,一种是在 https://start.spring.io/  进行下载,另外一种是基于 IDEA 的 Spring 插件来生成;此处不在过多描述过程。

2、工程基本能力实现
  • 引入 sofa-dashboard-ark-facade 依赖,先将需要提供的 JVM 服务实现:

  1. @SofaService

  2. @Service

  3. public class SofaJvmServiceImpl implements SofaJvmService {

  4. @Override

  5. public String test() {

  6. return "first version biz";

  7. }

  8. }

NOTE: SofaService 的作用是将一个 Bean 发布成一个 JVM 服务, 所以这里需要加上 Spring 提供的 @Service 注解将 SofaJvmServiceImpl 标注为一个 Bean。
  • 配置文件:


  1. spring.application.name=biz-ark-test

  2. server.port=8800

  3. logging.path=./logs


3、配置打包插件,将应用打包成 ark-biz  

根据官方文档,可以使用 sofa-ark-maven-plugin 插件将一个普通的工程打包成一个 ark biz 包。这里直接给出本篇中工程的配置:


  1. <plugin>

  2. <groupId>com.alipay.sofa</groupId>

  3. <artifactId>sofa-ark-maven-plugin</artifactId>

  4. <version>0.6.0</version>

  5. <executions>

  6. <execution>

  7. <!--goal executed to generate executable-ark-jar -->

  8. <goals>

  9. <goal>repackage</goal>

  10. </goals>

  11. <!--ark-biz 包的打包配置 -->

  12. <configuration>

  13. <!--是否打包、安装和发布 ark biz,详细参考 Ark Biz 文档,默认为false-->

  14. <attach>true</attach>

  15. <!--ark 包和 ark biz 的打包存放目录,默认为工程 build 目录-->

  16. <outputDirectory>target</outputDirectory>

  17. <!--default none-->

  18. <arkClassifier>executable-ark</arkClassifier>

  19. <!-- ark-biz 包的启动优先级,值越小,优先级越高-->

  20. <priority>200</priority>

  21. <!--设置应用的根目录,用于读取 ${base.dir}/conf/ark/bootstrap.application 配置文件,默认为 ${project.basedir}-->

  22. <baseDir>../</baseDir>

  23. </configuration>

  24. </execution>

  25. </executions>

  26. </plugin>


4、工程依赖

从前面背景介绍中的设计理念图中可以看出,动态合并部署需要依赖的插件核心有两个,一个是 runtime plugin,一个是 config plugin(没有涉及到 RPC 服务相关);由于 provider 并不是作为宿主应用,其本身不需要具备动态配置的能力,因此这里仅需要引入 runtime plugin 来为当前 ark-biz 工程提供运行时环境即可。


  1. <!-- runtime plugin -->

  2. <dependency>

  3. <groupId>com.alipay.sofa</groupId>

  4. <artifactId>runtime-sofa-boot-plugin</artifactId>

  5. </dependency>

  6. <!-- 其他依赖 -->

  7. <dependency>

  8. <groupId>com.alipay.sofa</groupId>

  9. <artifactId>healthcheck-sofa-boot-starter</artifactId>

  10. </dependency>

  11. <dependency>

  12. <groupId>com.glmapper.bridge.boot</groupId>

  13. <artifactId>sofa-dashboard-ark-facade</artifactId>

  14. </dependency>


5、编译打包

执行 mvn clean package ,之后会在当前模块的 target 目录下生成 xxx-ark-biz.jar 的包。

640?wx_fmt=png

sofa-dashboard-ark-host

前面已经构建好了所需要的一些基础工程,sofa-dashboard-ark-host 作为宿主应用,期望其具备的能力有以下几个:

  • 提供可以直观的 check 模块变更后的结果

  • 提供能够给 provider 1.0.0 版本 ark-biz 包运行的宿主环境

  • 能够通过 SOFAArk 提供的状态 endpoint 查看插件状态

  • 能够支持 Zookeeper 下发指令,控制 Biz 的生命周期

基于以上几点功能,下面来分步骤实现。

1、提供一个简单的 Rest 接口来 check 结果

sofa-dashboard-ark-host 本身也是一个 Web 应用,所以在这个提供一个 Rest 接口,具体实现是通过@SofaReference 调用 provider ark-biz 包中发布的 JVM 服务。


  1. @RestController

  2. public class TestController {

  3. @SofaReference

  4. SofaJvmService sofaJvmService;

  5. @RequestMapping("test")

  6. public String test(){

  7. return sofaJvmService.test();

  8. }

  9. }


2、作为宿主应用
  • ARK 容器配置

这部分可以先参考阅读 SOFAArk 配置 [6] 。本案例中简单配置了一份 ARK 容器的配置文件。


  1. # log 日志目录

  2. logging.path=./logs

  3. # 指定zookeeper 服务地址

  4. com.alipay.sofa.ark.config.address=zookeeper://localhost:2181

  5. # 指定宿主应用名

  6. com.alipay.sofa.ark.master.biz=host-app


com.alipay.sofa.ark.master.biz 默认情况下是宿主应用的 artifactId。如果这里指定了名字,则在宿主应用的插件配置里面需要使用此名字。

  • 依赖引入

引入 sofa-ark-springboot-starter 、web-ark-plugin 以及 provider ark biz 包。


  1. <!-- 引用ark starter-->

  2. <dependency>

  3. <groupId>com.alipay.sofa</groupId>

  4. <artifactId>sofa-ark-springboot-starter</artifactId>

  5. </dependency>

  6. <!-- 引用ark web插件-->

  7. <dependency>

  8. <groupId>com.alipay.sofa</groupId>

  9. <artifactId>web-ark-plugin</artifactId>

  10. </dependency>

  11. <!-- 引入 sofa-dashboard-ark-provider ark-biz ,这里属于静态合并部署情况-->

  12. <dependency>

  13. <groupId>com.glmapper.bridge.boot</groupId>

  14. <artifactId>sofa-dashboard-ark-provider</artifactId>

  15. <version>1.0.0</version>

  16. <classifier>ark-biz</classifier>

  17. </dependency>



  • 插件配置


  1. <plugin>

  2. <groupId>com.alipay.sofa</groupId>

  3. <artifactId>sofa-ark-maven-plugin</artifactId>

  4. <version>0.6.0</version>

  5. <executions>

  6. <execution>

  7. <id>default-cli</id>

  8. <goals>

  9. <goal>repackage</goal>

  10. </goals>

  11. </execution>

  12. </executions>

  13. <configuration>

  14. <!--指定优先级-->

  15. <priority>100</priority>

  16. <!--指定baseDir-->

  17. <baseDir>../</baseDir>

  18. <!--bizName,这里需要和 bootstrap 中指定的master.biz 配置保持一致,默认为 artifactId-->

  19. <bizName>host-app</bizName>

  20. </configuration>

  21. </plugin>


3、状态查看

SOFAArk 提供了 /bizState 这样一个 endpoint 用来获取当前插件的版本及状态信息。这里就在宿主应用中引入actuator 依赖并进行相关配置。


  1. <!-- 引用 actuator -->

  2. <dependency>

  3. <groupId>org.springframework.boot</groupId>

  4. <artifactId>spring-boot-starter-actuator</artifactId>

  5. </dependency>


application.properties 中配置暴露所有端点。


  1. management.endpoints.web.exposure.include=*


4、提供动态配置插件能力

SOFAArk 提供了 config-ark-plugin 对接 Zookeeper 配置中心,用于运行时接受配置,达到控制 Biz 生命周期,引入如下依赖:


  1. <!-- 引用ark 配置推送扩展插件-->

  2. <dependency>

  3. <groupId>com.alipay.sofa</groupId>

  4. <artifactId>config-ark-plugin</artifactId>

  5. </dependency>


参考 SOFAArk 配置,在 SOFAArk 配置文件 conf/ark/bootstrap.properties 增加如下配置:


  1. com.alipay.sofa.ark.config.address=zookeeper://localhost:2181



5静态合并部署演示

基于上述所有的配置,将 host-app 打包,然后运行。

  • mvn clean install 

  • java -jar sofa-dashboard-ark-hostapp-1.0.0.jar

下面可以通过 SOFAArk 提供的 endpoint 来查看下当前应用的 biz state 信息:

640?wx_fmt=png

这里只有宿主应用自身的 ark biz 状态信息,实际上我们使用了静态合并部署。但是貌似 ark-biz 合并部署的包插件没有在 bizState 中体现出来。访问下 http://localhost:8085/test 我们的 check  rest 服务:

640?wx_fmt=png

提示出来没有可用的 JVM 服务。

这里有个点是并不会去激活里面的 ark biz 包,需要通过通过 终端或者 API 的方式来进行激活,实际上只是激活了宿主应用本身的 ark-biz。


6 SOFADashboard 命令推送

SOFADashboard 进行推送的原理可以参考前面背景介绍中的描述。下面主要来介绍如何使用 SOFADashboard 进行动态模块切换。

注册插件

将 sofa-dashboard-ark-provider 这个 ark-biz 插件注册到 SOFADashboard:

640?wx_fmt=png

填写插件的基本信息:

640?wx_fmt=png

注册成功之后,模块列表如下:

640?wx_fmt=png

增加版本

点击添加版本,弹出新增版本表单,输入版本信息及当前版本对应的 ark biz 包文件地址;支持从文件服务器(http 协议)上拉取,也支持从本地文件(File 协议)系统获取。下面为了方便,使用从文件系统中获取,配置如下:

640?wx_fmt=png

添加成功之后,插件列表如下:

640?wx_fmt=png

关联应用

640?wx_fmt=png

点击插件列表后面的 关联应用案例,将插件与应用进行关联,如下:

640?wx_fmt=png

详情查看

点击插件列表后面的详情按钮,可以查看当前插件下所有应用信息和应用实例信息。

640?wx_fmt=png

命令推送

SOFADashboard 提供两种维度的命令推送:

  • 基于应用维度,当前应用所有的实例都会监听到此命令变更;

  • 基于 IP 维度,分组维度的单 IP 场景。

下面演示基于 IP 维度的推送:

1、安装

点击安装,安装过程中,插件状态会发生变化, RESOLVED 状态为正在解析。

640?wx_fmt=png
延迟 1~3s 之后,状态变为  ACTIVATED 状态

640?wx_fmt=png

再次访问下 http://localhost:8085/test 我们的 check rest 服务:

640?wx_fmt=png
实现了在不重启宿主应用的情况下,实现了内部业务逻辑的变更。

2、版本切换

模块版本 1 运行一段时间之后,出现新的需求,希望更改下模块版本 1 中的一些逻辑。在未使用动态模块的情况下,一般就需要新拉一个迭代,然后将原有的逻辑修改,然后发布上线。可能是一个非常小的功能点,但是却需要走复杂的发布流程。

这个就可以借助动态模块的方式来实现版本的动态切换。修改 sofa-dashboard-ark-provider  模块逻辑实现,升级版本,重新打包 sofa-dashboard-ark-provider 。

在 SOFADashboard ,新增 2.0.0 版本,并且配置指定的版本 ark-biz 包的文件地址。添加成功之后如下:

640?wx_fmt=png

进入详情界面,切换版本到 2.0.0:

640?wx_fmt=png

执行安装,此时版本 2.0.0 状态将会变为非激活状态:

640?wx_fmt=png

执行点击激活按钮进行激活,延迟 1~3s 之后,状态变更为激活状态:

640?wx_fmt=png

再次访问下 http://localhost:8085/test 我们的 check  rest 服务:

640?wx_fmt=png

可以看到,版本 2.0.0 中的逻辑已经生效了;切回到 1.0.0 ,此时 1.0.0 的状态变成了非激活状态:

640?wx_fmt=png


7小结

本文分享了基于 SOFAArk 和 SOFADashboard 实现动态模块管控的能力。动态模块在实际业务中有非常丰富的场景,对主应用不发版,不重启的情况下实现具体模块的功能变更;在此基础上也可以实现版本灰度的能力。

本案例中,provider 也是一个独立的应用,其作为一个子模块在宿主应用 hostapp 中启动,因此也可以基于 SOFABoot 这种能力来实现多 Web 应用的合并部署的能力。

以上就是本次分享的全部内容。

SOFA Meetup 上海站回顾资料

现场回顾视频以及 PPT 地址:

http://t.cn/AiKlmCmE

文中涉及相关链接

[1] SOFAArk:
https://www.sofastack.tech/sofa-boot/docs/sofa-ark-readme

[2] SOFAArk 0.6.0 版本:
https://github.com/alipay/sofa-ark/releases/tag/v0.6.0

[3] SOFADashboard:
https://github.com/sofastack/sofa-dashboard

[4] 案例工程地址:
https://github.com/sofastack-guides/sofa-dashbaord-samples-parent

[5] Quick Start:
https://www.sofastack.tech/sofa-dashboard/docs/QuickStart

[6] SOFAArk 配置:
https://www.sofastack.tech/sofa-boot/docs/sofa-ark-ark-config

640?wx_fmt=png

Java隔离容器之sofa-ark使用说明及源码解析 一.使用方法及示例 简介:当引入二方依赖包或三方依赖包时,可能出现外部依赖jar包与自己的工程需要依赖的冲突,或者多个二方三方依赖包互相冲突。这时候就需要一个隔离容器对他们进行隔离,其依赖的原理就是jvm认为不同classloader加载的类即使包名类名相同,也认为他们是不同的。sofa-ark将需要隔离的jar包打成plugin,对每个plugin都用独立的classloader去加载。 ... 阅读详情

相关推荐

sofa-tracer:SOFATracer是分布式系统调用跟踪的组件。 并通过统一的traceId在调用链接中记录各种网络调用的日志。 这些日志可用于快速发现故障,服务管理等

SOFATracer SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。 一、背景 在当下的技术架构实施中,统一采用面向服务的分布式架构,通过服务来支撑起一个个应用,而部署在应用中的各种服务通常都是用复杂大规模分布式集群来实现的,同时,这些应用又构建在不同的软件模块上,这些软件模块,有可能是由不同的团队开发,可能使用不同的编程语言来实现、有可能部署了几千台服务器。因此,就需要一些可以帮助理解各个应用的线上调用行为,并可以分析远程调用性能的组件。 为了能够分析应用的线上调用行为以及调用性能,蚂蚁金服基于 提供了分布式链路跟踪 SOFATracer 的解决方案。 二、功能简介 为了解决在实施大规模微服务架构时的链路跟踪问题,SOFATr

【亲测免费】 探索阿里巴巴的SOFAArk:轻量级服务治理框架

是阿里巴巴开源的一款轻量级、高性能的服务治理框架,它源于阿里巴巴内部的微服务运行容器平台,旨在解决多框架共存、类隔离、插件化部署等问题。作为SOFA生态的一部分,SOFAArk致力于打造一个稳定、可靠、易扩展的技术基础设施。 ## 技术解析 ### 1. 类加载器体系 SOFAArk基于独特的类加载机制,实现了应用间的类隔离,有效防止了不同组件之间可能产生的类冲突问题。它的类加载器结构遵循“...

gitblog_00041的博客 994

手把手教你用Node.js模拟大麦APP下单请求(含滑块验证处理)

本文详细解析了如何使用Node.js模拟大麦APP下单请求的全流程,包括接口逆向、滑块验证处理和签名算法逆向等关键技术。通过实战案例和代码示例,帮助开发者掌握移动端API调用的核心要素,如动态参数构造、安全验证突破等,提升自动化下单的成功率和效率。

weixin_42569329的博客 353

mysql中(2) with check option能起什么作用?_基于 SOFAArk 和 SOFADashboard 实现动态模块管控 | Meetup#2 回顾...

作者:卫恒(宋国磊) SOFATracer 以及SOFADashboard 开源负责人。本文根据 5月26日 SOFA Meetup#2上海站 《使用 SOFAStack 快速构建微服务》主题分享整理,着重分享如何使用SOFADashboard 来管控SOFAArk ,对于SOFAArk 中的一些基础概念和知识不过多涉及;建议大家在阅读之前,先了解下SOFAArk 的相关基本知...

weixin_39737001的博客 135

Lumerical官方案例、FDTD时域有限差分法仿真学习(三)——环形谐振器(Ring resonator)之第一部分

环形谐振器教程的第 1 部分使用 MODE 来设计和仿真环形谐振器。 自由光谱范围 (FSR) 和品质因数 (Q 因数) 是这种面向片上通信应用的基于绝缘体上硅 (SOI) 波导设计的关键性能指标。

weixin_45719141的博客 3万+

【UE5】Vosk插件实战:离线语音识别与TTS朗读全流程解析

本文详细解析了如何在UE5中利用Vosk插件实现离线实时语音转文字功能。从环境配置、插件与模型准备,到核心C++组件封装与蓝图系统搭建,提供了完整的实战教程。重点解决了离线语音识别在游戏开发中的延迟、隐私和网络依赖问题,并演示了从语音识别到TTS朗读的完整交互闭环,为开发安全、实时的语音交互应用提供可靠方案。

weixin_29021291的博客 511

SOFADashboard:全方位微服务治理的智能伴侣

SOFADashboard:全方位微服务治理的智能伴侣 是一个由阿里巴巴开源的、强大的微服务管理控制台。它为开发者提供了可视化界面,用于监控、管理和操作分布式应用和集群,让复杂的微服务环境变得更加易于理解和管理。 技术剖析 架构设计 SOFADashboard 基于 SOFAStack(Scalable Open Financial Architecture Stack),这是一个全面的金融级分布...

gitblog_00002的博客 469

使用逻辑分析仪处理IIC信号

逻辑分析仪

xc_123的博客 4485

探秘SOFADashboard:阿里巴巴开源的微服务治理平台

探秘SOFADashboard:阿里巴巴开源的微服务治理平台 项目简介 是阿里巴巴开源的一款强大的微服务治理平台,它提供了一站式的监控、管理和诊断解决方案,帮助开发者更好地管理和运维分布式系统。作为SOFAStack(Scalable Open Financial Architecture)的一部分,SOFADashboard致力于打造易于使用的可视化界面,让复杂分布式系统的管理变得简单。 技术分...

gitblog_00016的博客 560

Deeplabcut实战:从数据标注到行为分析的全流程解析

本文详细解析了Deeplabcut从数据标注到行为分析的全流程实战技巧,包括项目创建、配置文件定制、智能帧提取、高效标注方法、模型训练优化以及多视角融合等高级应用。通过具体案例和实用参数配置,帮助研究者快速掌握这一行为分析工具,提升实验效率和准确性。

weixin_29057163的博客 246

9、眼底图像智能分析:糖尿病视网膜病变的自动化识别与分级系统

本博客介绍了一种基于深度学习的糖尿病视网膜病变(DR)自动化识别与分级系统。该系统通过视网膜图像的预处理、数据增强、集成模型的构建与优化,实现了对DR的高效识别与分级。识别系统采用二分类任务,准确率达到97.67%,而分级系统通过四分类策略取得了95.2%的准确率。系统在基层社区和医院中具有广泛的应用前景,为DR的早期筛查和精准诊断提供了有效工具。

pea55的博客 144

蚂蚁金服SOFAArk框架解决spring boot多模块包冲突

目录背景SOFAArk应用SOFAArk解决包冲突打包Ark Plugin打包 Ark 包其他配置jvm类加载双亲委派机制 背景 在菊花云上进行开发,使用它们的Hbase服务过程中,由于其版本国语古老,所使用的依赖包也是非常早期的版本,导致和目前整体程序开发框架有较大的冲突,一个个排除冲突包工作量大,效率低。灵鸡一动,考虑到国内大厂复杂的业务场景,铁定有类似的情况并且开发了相应的开源解决方案,所以搜了一下,找到了蚂蚁金服开发的SOFAArk。 SOFAArk 官网地址:https://www.sofasta

Ntozot的博客 2612

Dify使用教程3:Dify创建工作流

Dify使用教程3:Dify创建工作流 接着,我们连接下一个节点:“LLM”填入上下文变量为:result。这时候知识库就添加成功了。添加新节点:结束节点。

拥抱具身智能,昇腾Ascend C 5129

SOFAArk Committer 专访|看它不爽,就直接动手改!

吕冰洁(花名:尚之)蚂蚁集团技术专家“我们团队是在做蚂蚁集团内部 Serverless 项目,深度依赖 SOFAArk。SOFAArk 作为 Serverless 项目的核心热部署组件,在...

金融级分布式架构 761

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

【零基础入门unity游戏开发——2D篇】SpriteEditor图片编辑器

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 2330

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SOFADashboard 启动开源共建 | SOFAStack 一站式管控平台

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33976072的博客 454

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SOFAArk 开源项目安装与使用指南

SOFAArk 的仓库在 [GitHub](https://github.com/sofastack/sofa-ark.git) 上,其目录结构设计清晰,便于开发者理解和扩展。以下为核心目录的简要介绍: - **`ark-parent`** - 核心父模块,定义了项目的构建基础和依赖管理。 - **`ark-plugin`** - 插件模块,包含了各种功能插件,如日志、监控等,这些是SOFAAr

gitblog_00772的博客 1013

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

从一个例子开始体验轻量级类隔离容器 SOFAArk | SOFAChannel#11 直播整理

<SOFA:Channnel/>,有趣实用的分布式架构频道。本文根据 SOFAChannel#11 直播分享整理,主题:从一个例子开始体验轻量级类隔离容器 SOFAArk。回...

金融级分布式架构 2623

【开源之夏 2023】欢迎报名 SOFAStack 社区项目!

开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。活动联合国内外各大开源社区,针对重要开源软件的开发与维护提供项目任务,并面向全球高校学生开放报名。一▢✕开源之夏 2023Project IntroductionSOFAStack 社区项目介绍2023 年,SOFASta...

金融级分布式架构 282

spring boot 打包_蚂蚁金服轻量级类隔离框架 Maven 打包插件解析 | SOFAArk 源码解析...

SOFAStack(ScalableOpenFinancialArchitecture Stack)是蚂蚁金服自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。本文为《剖析 | SOFAArk 源码》第二篇,本篇作者盲僧,来自 OYO。《剖析 | SOFAArk 源码》系列由 SOFA 团队和源码爱好者们出品,项目代号:,文末附...

weixin_39609622的博客 661

模块耦合名词解释_蚂蚁金服 SOFAArk 0.6.0 新特性介绍 | 模块化开发容器

SOFAStackScalable Open Financial Architecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。蚂蚁金服在 SOFAStack 体系内研发了一款基于 Java 实现的轻量级类隔离容器,主要提供类隔离和应用(模块)合并部署能力--SOFAArk。本篇文章为SOFA...

weixin_42501130的博客 313

基于 SOFAArk 实现应用的动态装载和卸载

基于 SOFAArk 实现应用的动态装载和卸载案例描述操作步骤原理 本篇主要来看下蚂蚁金服开源的 SOFAArk 这个产品。SOFAArk 是一款基于 Java 实现的轻量级类隔离容器,主要提供类隔离和应用(模块)合并部署能力;本文主要基于 telnet 指令的方式进行应用 Biz 的装载和卸载操作。去年在上海 KubeCon 大会上有分享过 《SOFABoot 动态模块实践》,主要是通过 SOF...

glmapper_2018 919
上一篇: 基于 SOFAArk 和 SOFADashboard 实现动态模块管控 | Meetup#2 回顾
下一篇: (含活动报名)SOFA Weekly | 每周精选【5/27 - 5/31】
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值