写点什么

蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

  • 2019-09-05
  • 本文字数:2715 字

    阅读完需:约 9 分钟

蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系

小蚂蚁说:

数据、消息、微服务是蚂蚁金服自主研发的金融级分布式中间件 SOFA(Scalable Open Financial Architecture)的三大方向。

一个多月前,蚂蚁金服开源了 SOFABoot 和 SOFARPC 两个组件,受到了社区的热烈欢迎,也收到了很多大家的反馈,其中大家对开源更多组件的呼声很大哦~!

今天我们就给大家介绍下本次 SOFA 中间件开源的几个微服务体系组件。



蚂蚁金服自主研发的分布式中间件(Scalable Open Financial Architecture,以下简称 SOFA 中间件),包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,限流/熔断框架,动态配置推送,分布式链路追踪,Metrics 监控度量,分布式高可用消息队列,分布式事务框架,分布式数据库代理层等组件,是一套分布式架构的完整的解决方案,也是在金融场景里锤炼出来的最佳实践。



本次 SOFA 中间件将继续开源微服务体系下的几个组件:包括分布式链路追踪(SOFATracer)客户端、Metrics 监控度量(SOFALookout)客户端、SOFARPC 的 Nodejs 版实现。同时还开源了 SOFABoot 下的模块化开发框架,以及 SOFARPC 的 HTTP/2 能力等。下面将逐一进行简单介绍。

SOFATracer

SOFATracer 是一个用于分布式系统调用跟踪的中间件,通过统一的 traceId 将调用链路中的各种网络调用信息以日志或者上报的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,数据统计,服务治理等。


为了解决在实施大规模微服务架构时的链路跟踪问题,SOFATracer 基于 OpenTracing(http://opentracing.io) 规范并扩展其能力,包括基于 Disruptor 高性能无锁循环队列的异步落地磁盘的日志打印能力,自定义日志格式,日志自清除和滚动能力,基于 SLF4J MDC 的扩展能力,统一的配置能力等。同时 SOFATracer 也对接了开源生态,可以选择将 Tracer 数据对接到 Zipkin 等开源产品。


SOFATracer 的 Github 的地址是:


https:// github. com/alipay/sofa-tracer


欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

SOFALookout

SOFALookout 是一个利用多维度的 Metrics 对目标系统进行度量和监控的中间件。


Lookout 的多维度 Metrics 参考 Metrics 2.0(http://metrics20.org/spec)标准,提供一整套 Metrics 的处理,包括数据埋点、收集、加工、存储与查询等。SOFALookout 包括客户端与服务器端服务两部分,本次先开源客户端部分,服务端部分代码在整理中。


SOFALookout 客户端提供了一套 Metrics API 标准,通过它可以方便地对 Java 应用的 Metrics 进行埋点统计。为了方便使用,SOFALookout 客户端默认提供一些扩展模块,它们提供 JVM,OS 等基本 Metrics 信息的统计,遵循该扩展机制,我们可以自定义或集成更多的 Metrics 数据。


另外,SOFALookout 客户端除了支持向 SOFALookout 服务端上报数据外,还支持与社区主流的相关产品,包括 Dropwizard,(SpringBoot)Actuator 以及 Prometheus 等进行集成和数据适配。


SOFALookout 的 Github 的地址是:


https:// github. com/alipay/sofa-lookout


欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

Eggjs 集成

每种语言都有自己最擅长的领域,跨语言友好性对于分布式架构也是非常重要的。


在蚂蚁内部还有一套 Nodejs 版本的 SOFA 中间件的实现,包含了绝大部分 Java 版本的功能,并将它们集成到已经开源的企业级 Nodejs 框架 Eggjs(https://eggjs.org)中,形成了一套完整的 Web MVC 和 BFF (Backend ForFrontend) 解决方案。


这套架构目前广泛应用于蚂蚁的 Web 开发和多端适配等场景,让各岗位有了更清晰的职责划分,服务端(一般是 Java)提供基于领域模型的 RPC 接口,前端调用接口拿到数据后进行剪裁和格式化,并实现人机交互。领域模型与页面数据是两种思维模式,通过分层可以很好地解耦,让彼此更专业高效。后面我们也会陆续开源 SOFA 中间件的 Nodejs 版本实现,本期会先放出 SOFARPC 相关的两个模块:


SOFARPC Node 的 Github 的地址是:


https:// github. com/alipay/sofa-rpc-node


SOFABolt Node 的 Github 的地址是:


https:// github. com/alipay/sofa-bolt-node


欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

SOFABoot

在最新的 SOFABoot 2.4.0 版本中,SOFABoot 新增加了基于 Spring 上下文隔离的模块化开发能力。


在企业级应用场景,随着应用系统模块的增多,每个业务模块之间的耦合也会越来越严重,业务模块的自测更加复杂,团队之间的沟通成本增加。模块化开发是该问题的有效解决方案,但是 Spring Boot 默认不支持模块化开发,所有 Bean 共用一个 Spring 上下文。为此,SOFABoot 提出 SOFABoot 模块的概念,每个业务团队专注于开发自己的 SOFABoot 应用模块,模块自包含模块的代码和配置,拥有独立的 Spring 上下文,便于开发及自测,减少团队间的沟通成本。


SOFABoot 模块间通信使用 JVM 服务进行通信,避免模块之间的耦合;如果远程服务在本地其它本地模块中存在,可优先调本地提高性能。同时 SOFABoot 提供了模块并行启动及 Bean 异步初始化能力,大幅提高应用启动速度。


SOFABoot 的 Github 的地址是:


https:// github. com/alipay/sofa-boot


欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

SOFARPC

在最新的 SOFARPC 5.4.0 版本中,SOFARPC 基于事件扩展机制,集成了 SOFATracer 和 SOFALookout 两个微服务体系产品,完善了自身的服务监控度量以及分布式跟踪功能。用户可以通过 SOFATracer 对接到 Zipkin 查看服务调用跟踪信息,也可以通过 SOFALookout 对接到 Prometheus 查看服务度量信息。新版本的 SOFARPC 中还增加了 HTTP/1.1 和 HTTP/2 协议的支持,在跨语言等场景下可以快速通过标准的 HTTP 协议进行通信。SOFARPC 也与 Eggjs 进行了打通了 Bolt 协议,方面用户在 Java 和 Nodejs 之间高效通信。


SOFARPC 的 Github 的地址是:


https:// github. com/alipay/sofa-rpc


欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

Jarslink 2.0

JarsLink 是蚂蚁金服内部使用的一个基于 JAVA 的模块化开发框架,它提供在运行时动态加载模块(一个 JAR 包)、卸载模块和模块间调用的 API。


目前 Jarslink 2.0 在紧张开发之中,Jarslink2.0 是在 Jarslink1.0 基础之上,结合 SOFABoot 类隔离框架,提供了更加通用的应用(模块)隔离和通信的实现方案,敬请期待!


Jarslink 的 Github 的地址是:


https:// github. com/alibaba/jarslink


欢迎大家使用反馈、贡献代码。


本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。


原文链接:


https://mp.weixin.qq.com/s/_hMOjFkDCC7AVvgFdmTtkA


2019-09-05 22:562727

评论

发布
暂无评论
发现更多内容

5月券商App行情刷新及交易体验评测报告,四家券商综合评级上升

博睿数据

智能运维 博睿数据 券商排行

vue生命周期

小恺

6月月更

GetxController 生命周期详解

岛上码农

flutter ios 前端 安卓 6月月更

力扣每日一练之二维数组下篇Day5

京与旧铺

6月月更

级联层与层叠上下文了解下?

转转技术团队

CSS JavaScript 前端

Open the World:第七届中国开源年会(COSCon'22)正式启动~

开源社

第七届中国开源年会 COSCon'22

AntDB数据库与强网科技完成产品互认证,积极探索办公自动化领域

亚信AntDB数据库

从市场需求目标看数据分析演进方向

华为云开发者联盟

人工智能 华为云

一文带你认识CSS

未见花闻

6月月更

鲲鹏云开发者分论坛:发挥鲲鹏的潜力,加速云上创新

科技热闻

Vue3 响应性原理

转转技术团队

JavaScript Vue 前端

dp练习

工程师日月

6月月更

挑战最全 Apache Doris 学习资料,你想要的都在这里了!

SelectDB

数据库 Doris apache doris 技术干货

python逆序输出和进制转化(小白也能看懂)

写代码两年半

Python 6月月更

云安全是什么样子的?其工作原理是什么?

wljslmz

云安全 6月月更

科创人·数智未来私董会第4期:转型的实证-幸存者偏差与盲人摸象

科创人

智慧园区效果不满意?请收下ThingJS这份秘籍

ThingJS数字孪生引擎

智慧园区 数字孪生

如何编写一份简单易用的在线产品手册

小炮

产品宣传手册 产品说明手册

HTTP接口性能测试中池化实践

FunTester

音视频处理三剑客之 ANS:噪声产生原因及噪声抑制原理解析

ZEGO即构

音视频课程 噪声抑制 ANS

图搜的应用场景

Geek_e369a5

图像检测 图像搜索 图搜的应用场景

自己实现一个大文件切片上传+断点续传

转转技术团队

JavaScript 前端 文件上传

GCC 为龙芯 CPU的预定义宏

mazhen

c++ RocksDB GCC 龙芯

JMeter集成底座项目压测心得

agileai

压力测试 集成底座 企业服务总线 统一身份管理平台 主数据管理平台

一起认识下浏览器的5种观察器

转转技术团队

JavaScript 前端 浏览器

如何通过事件可视化分析?

清林情报分析师

数据分析 事件分析 可视化分析 时间分析

2022-06微软漏洞通告

火绒安全

微软 漏洞 安全漏洞

InfoQ 极客传媒 15 周年庆征文| 聊聊 Go 语言与云原生技术

宇宙之一粟

云原生 6月月更 InfoQ极客传媒15周年庆

低代码如何“拯救”企业?

优秀

低代码 企业管理

2022年中国Robotaxi行业发展洞察

易观分析

智能汽车

在 Pisa-Proxy 中,如何利用 Rust 实现 MySQL 代理

SphereEx

MySQL 数据库 rust

蚂蚁金服分布式中间件开源第二弹:丰富微服务架构体系_文化 & 方法_Geek_6ae1e1_InfoQ精选文章