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

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 .. 阅读详情


0ad7c42c3de903317ac9e61c482a290a.gif

fc6a7a674cbc2cd397ae66388dbbeea6.png

fc64caaeaf6057a0fb470d98d11187c2.png

吕冰洁(花名:尚之)

蚂蚁集团技术专家

“

我们团队是在做蚂蚁集团内部 Serverless 项目,深度依赖 SOFAArk。SOFAArk 作为 Serverless 项目的核心热部署组件,在无感接入、快速启动方面有很大的诉求。

因此为 SOFAArk 2.0 提供了最核心的内嵌式运行模式,同时对 1.0 版本存在的一些问题做了较多的性能优化。

”

2022 年 03 月 07 日

吕冰洁@zjulbj 被投票选为

 SOFAArk Committer

9f6aa1f76d66aada4f27643a369a825c.png

Before

我主要是负责让传统的 SOFABoot 的应用平滑迁移到 SOFAArk 上。

开始走了很多弯路,接入成本上可能需要半个月到一个月。最初选择了新建应用切流这种比较间接的方案,基于这个方案做迁移过程中的平滑迁移、切流工具。

但是没解决根本问题,只是通过工具减少了部分工作量。

过程

我们就尝试通过修改架构把这些问题解掉,推动自己深入了解底层,思考它为什么是这么设计的,为什么导致现在的问题?

通过研究之后,发现最开始 SOFAArk 是面向终态去设计的,是比较理想化的容器。但实际落地过程中,业务是逐步演进而来的。刚接入就要感知特别大的变化,涉及部署脚本、镜像、测试脚本等一系列的改造,导致业务无法快速享受 SOFAArk 带来的红利。

我们就借鉴之前的经验,比如 Tomcat 最开始是一个容器,后面往内嵌化发展。我们内部的 CloudEngine 最开始也是一个容器,后面往 SOFABoot 演进也是一个往内嵌化的发展。

After

所以从我们整个迁移和落地的角度,设计了这套方案,修改其中的相关代码。

从原来需要 2~3 周到现在的一天,降低迁移的成本,省去了大量迁移工作。也为我们后面全站规模化、商业化的一键开启 ark 奠定了基础。

提问

Qustions

&

解答

Answers

1

作为业务研发深入中间件开发底层

如何看待自己作为业务研发的身份接触到开源?

作为业务研发,深入到开源组件的底层设计,不仅对我们自己使用组件有很大的帮助,也能让我们和开源社区的组件同步节奏,不至于脱节。

另外我们解决了实际问题,其他的使用方肯定也会遇到同样的问题。那我们是不是可以把已有的经验,回馈到开源社区帮助到更多的人。我觉得这是一个良性循环的开源环境,而不是向开发者提一些需求 pr 就结束了。

你觉得解决这个问题的难点在哪里?

主要的难点还是我以业务研发的身份,参与到整个 SOFAArk 中间件的开发中。

首先我需要对它的整个设计有清晰的把握,尽管之前有半年的使用经验,也依然花费了一周的时间才搞懂了核心架构。还好 ark 的文档写得很详细,大大降低了我的理解成本。

在沟通的过程中有没有什么困难的?

沟通没有困难,毕竟大家都是技术,其实都是相通的。只要把自己的使用场景说清楚,中间过程遇到的一些具体问题说清楚。然后结合整个社区的生态,思考一下自己的需求处于什么样的定位,毕竟大家都是基于问题出发。

也是通过这次深入开发底层,让我们更清晰的认识到大家都是绑在一条船上的,也更理解开发者,毕竟大家初心都是为了共同的目标去努力。

2

业务研发和开发者的双重身份

是否有可持续性?

这个状态还会一直持续下去吗?

目前我已经成为了 SOFAArk 2.0 的核心开发人员,还会推进 SOFAArk 在蚂蚁主站大规模落地,作为开发的角色维护下去的。本身我们的 Serverless 产品它下面依赖的部署组建就是 SOFAArk,我们要去大规模落地的过程中,涉及到对 ark 的一些支持问题,所以我们可能需要深入到底层去剖析,让组件真正的更易用。

业务研发深入到中间件底层设计,在开源社区是一个普遍的现象吗?

我理解应该是都有这样的现象,比如说我们用到动态热部署的能力,那我们对启动优化的东西,后面也会把它那个反馈到 SOFABoot、 Spring Boot 社区。

在我们自己落地过程中遇到的问题,想到的创新解决方案,如果是通用的话,会往各个社区去提 pr、做一些反馈的进行同步。

比如,我们在 SOFAArk 启动加速这一块,针对 Classloader 做了启动类加载的优化,启动速度平均提升了 50% 左右。

目前这个已经在 Spring Boot 提了 pr,他们那边正在跟进;

SOFABoot 这边也有相关的同学在保持跟进,之后我们会在我们主站率先去做一个 backport 的支持。

3

业务研发专属经验分享

SOFAArk 负责人说你是一个追求细节、追求极致的同学。

我们团队是做 Serverless 产品的,产品的要求是“更快、更高效、性能更好、体验更好”。

这就要求了我们在做代码优化的过程中去追求细节、追求极致,也是我们整个团队的风格。

有了这种特殊经历后,有哪些经验可以分享给其他业务研发的吗?

作为业务研发,最开始我对 ark 也不是很了解的,刚接手 ark 的迁移的东西,也没敢想说去对 ark 做这么大的改造。

一切基于我们团队的问题出发,一步步深入了解它的原理,去尝试实践自己想法,最终做出了开源的贡献,回过头来看才发现自己做了这么多。

大部分业务研发不太愿意去参与这种开源贡献,可能就是把它想得比较难了。

大家不用担心深入底层开发是很有门槛的事情,只要你带着问题出发,其他的都不是问题!

看他不爽,就直接动手改吧!

   本周推荐阅读  

6ccc6236532a8f2ffd6b2ef213019253.png

社区文章|MOSN 路由框架详解

e112fda253c0db44ecf433ece5111d81.png

HAVE FUN | SOFARegistry 源码解析

396fc86a617d0f90a918e866d0c637b3.png

BabaSSL:支持半同态加密算法 EC-ElGamal

fa5f7035f471b75f4b809ae012c43ffa.png

恭喜 吕冰洁 成为 SOFAStack committer!

79707bba8edd158f2a1c9f33286c650b.png

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

相关推荐

alipay sofa-ark-1.1.5 各种类加载器 & 优先级

【代码】sofa-ark-1.1.5 各种类加载器 & 优先级。

~~简~~ 551

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

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

gitblog_00041的博客 994

中断向量表配置不当引发Default_Handler死循环问题解析

本文深入解析STM32开发中因中断向量表配置不当导致的Default_Handler死循环问题。以STM32F407VET6为例,详细阐述中断向量表的工作原理、常见触发场景及系统化排查方法,并提供使用STM32CubeMX的正确姿势和手动配置的注意事项,帮助开发者快速定位并解决这一常见难题。

grafana6viz的博客 179

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

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

Ntozot的博客 2612

初识colmap

COLMAP是一款开源的计算机视觉软件,主要用于从一系列二维图像中进行三维重建。它全称为“COLLISION-MAPping”,是一个高度集成的Structure-from-Motion (SfM) 和 Multi-View Stereo (MVS) 管道工具,由斯坦福大学开发和维护。COLMAP的主要功能包括特征检测与匹配、增量式SfM、多视图立体匹配以及优化。它能够从无序或有序的二维照片集合中恢复出三维场景的几何结构(点云)以及每张图像对应的相机姿态。

Hhsjehejj的博客 5551

DSP28335笔记——内部Flash中进行数据读写(Flash_API的使用)

Program时的报错返回值较为常见,对返回值30、31进行详解:返回值为30:每次操作写入16位的字节,直到Buffer中的数据全部写入,若写入的数据位超过16位时则返回值30。返回值为31:表示尝试将已有数据位上的0写成1。一般情况下,在Program操作之前,会将指定部分中的数据进行擦除;但擦除函数执行时间较久,且只能以扇区为单位进行擦除,因此也可以在已有数据的基础上再进行Program,但无法将已有数据的位中的0值写成1。

m0_46621336的博客 8750

SOFA Weekly | Committer 聊天室、SOFAJRaft 本周发布、新手任务

SOFA WEEKLY | 每周精选筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack(ScalableOpenFinancialArchitecture Stack...

金融级分布式架构 754

江科大51单片机笔记【1】单片机及开发板介绍

单片机,Micro Controller Unit,简称MCU,内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(传感器)、处理(CPU)和硬件设备(电机、LED)的控制单片机算是一个袖珍版计算机,是一个完整的计算机系统,成本低体积小结构简单单片机的使用领域:智能仪表、实时工控、通讯设备、导航系统、家用电器等。

2301_80195807的博客 833

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

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

gitblog_00772的博客 1013

金蝶ERP元数据解析:字段属性与表结构映射实战

本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。

weixin_33738555的博客 433

Android 车联网——CarAudioService介绍(六)

CarAudioService 是 Android Automotive OS 中的一个重要组件,用于管理车辆中的音频功能。它是 Android Auto 的一部分,负责处理车辆音频的播放、控制和路由。CarAudioService 使用标准的 Android 组件架构,基于 Binder 通信机制,提供了一组 API,用于管理车辆音频。它包括以下主要功能:音频路由管理:CarAudioService 可以让开发者控制音频的路由,即将音频发送到不同的输出设备,例如车辆的扬声器、耳机等。

小旭的专栏 3202

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

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

金融级分布式架构 2623

一键开关机电路

一键开关机电路

让你爱上电路设计 4180

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

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

金融级分布式架构 282

【Bug已解决】npm install -g @anthropic-ai/claude-code 出现 EACCES: permission denied 解决方案

方案适用场景推荐指数nvm 管理 Node长期开发环境,一次配置永久生效⭐⭐⭐⭐⭐修改 npm 全局目录不想引入 nvm,快速解决⭐⭐⭐⭐修复现有目录权限之前用过 sudo 装包,需要修复⭐⭐⭐Windows 管理员/改目录Windows 平台专用⭐⭐⭐⭐官方原生安装脚本想彻底避开 npm 权限问题⭐⭐⭐⭐报的本质是npm 全局安装目录的属主权限与当前执行用户不匹配,而不是 npm 或 Claude Code 本身有问题。不要用sudo"强行"解决。

一键难忘的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

weixin_42501130的博客 313

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

glmapper_2018 919

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jarslink

http://www.sofastack.tech/sofa-boot/docs/Home   简介     Jarslink 2.0 是 SOFABoot 官方基于 SOFAArk 开发的功能插件,负责管理多应用在 SOFAArk 容器之上的合并部署,具备如下特性: 支持运行时动态安装和卸载应用。 支持运行时应用热替换能力,保证服务的连续性。 跨应用内部通信,支...

qq5132834的专栏 1608

Canvas动画完全指南:Awesome Web Animation中的Canvas库与实例

Awesome Web Animation是一个精选的Web动画资源集合,包含了丰富的Canvas动画库、工具和学习资源。本指南将带你探索其中最实用的Canvas动画库,掌握从基础到进阶的Canvas动画开发技巧,让你的网页动起来! ## 为什么选择Canvas动画? Canvas是HTML5提供的强大绘图API,通过JavaScript可以创建动态、交互式的图形和动画效果。相比CSS动画,C

gitblog_00274的博客 1135

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

作者:卫恒(宋国磊) SOFATracer 以及SOFADashboard 开源负责人。本文根据 5月26日 SOFA Meetup#2上海站 《使用 SOFAStac...

金融级分布式架构 879

GoCelery AMQP深度解析:RabbitMQ集成最佳实践

GoCelery作为Celery分布式任务队列的Go语言实现,为开发者提供了轻量级且高效的任务处理解决方案。通过AMQP协议与RabbitMQ的深度集成,GoCelery实现了可靠的任务分发与执行机制,本文将详细介绍这一集成的核心原理与最佳实践。 ## 一、AMQP Broker核心实现解析 GoCelery的AMQP集成主要通过`amqp_broker.go`文件实现,该模块封装了与Rabb

gitblog_00645的博客 981

5分钟上手SOFAArk:从安装到实现类隔离的快速入门教程

SOFAArk是一款轻量级Java类隔离框架,能够帮助开发者解决应用中的类冲突问题,实现模块化部署与运行。本教程将带你快速掌握SOFAArk的核心功能,从环境搭建到实际应用,轻松实现类隔离。 ## 📌 什么是SOFAArk? SOFAArk(SOFA Ark)是蚂蚁金服开源的轻量级Java类隔离框架,基于Java的类加载机制,通过创建独立的类加载器实现不同模块间的类隔离。它可以解决大型应用中

gitblog_00890的博客 364

SOFAArk入门到精通:从环境搭建到企业级应用部署的完整路线图

SOFAArk是一款轻量级的Java模块化开发框架,专为企业级微服务架构设计,提供了插件化开发、动态部署和类隔离等核心功能。本文将带您从零基础开始,掌握SOFAArk的环境搭建、核心概念、开发流程及企业级部署技巧,助您快速构建弹性微服务系统。 ## 一、SOFAArk核心架构解析 🧩 SOFAArk采用分层架构设计,主要包含三大核心组件,它们协同工作实现模块化开发与动态部署能力: [![S

gitblog_01141的博客 705

Acra密钥管理最佳实践:保护加密密钥的完整策略

在当今数据安全日益重要的环境下,有效的密钥管理是保护敏感数据的核心环节。Acra作为一款功能强大的数据库安全套件,提供了全面的密钥管理功能,帮助用户安全地生成、存储、轮换和保护加密密钥。本文将详细介绍Acra密钥管理的最佳实践,确保您的加密密钥得到全方位的保护。 ## 一、Acra密钥管理基础 Acra的密钥管理系统是其安全架构的基石,涉及密钥的生成、存储、使用和轮换等多个方面。Acra提供了

gitblog_00742的博客 779

SOFAArk 项目常见问题解决方案

SOFAArk 是由蚂蚁集团开源贡献的一个基于 Java 实现的动态热部署和轻量级类隔离框架。该项目的主要目的是解决 Java 开发中常见的包依赖冲突问题,并提供了应用模块的动态热部署和类隔离能力。SOFAArk 可以将多个应用模块打包成一个自包含可运行的 Fat Jar,支持简单的单模块 Java 应用以及 SpringBoot/SOFABoot 应用。 ### 主要编程语言 - Java

gitblog_00757的博客 541

pixi-live2d-display API完全参考:从基础到高级用法

pixi-live2d-display是一款强大的PixiJS插件,能够在网页中无缝集成并展示各种Live2D模型,为开发者提供了丰富的API来实现模型的加载、控制和交互功能。无论是创建互动式角色、虚拟主播还是游戏角色,本指南都能帮助你快速掌握从基础到高级的全部用法。 ## 快速入门:安装与基础使用 ### 环境准备 要开始使用pixi-live2d-display,首先需要克隆项目仓库:

gitblog_01036的博客 736
上一篇: 【直播倒计时 1 天】SOFAChannel#26 解读 BabaSSL :项目概况和最新进展
下一篇: SOFA Weekly | Committer 聊天室、SOFAJRaft 本周发布、新手任务
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值