写点什么

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

  • 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:562576

评论

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

前端框架如何帮助开发者构建应用程序?

互联网工科生

软件开发 前端框架 应用开发 JNPF

矩阵起源荣获"深圳企业创新(国际)纪录"殊荣

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

测试开发 | 智能农业引领农业革新,人工智能携手农业改写未来

测吧(北京)科技有限公司

测试

理解 Paimon changelog producer

不在线第一只蜗牛

大数据 Data

外贸企业如何搭建适合自己的B2C外贸出口独立站

tbapi

淘宝代购系统 淘宝代购 淘宝代采系统 华人代购 华人代购系统

企业如何通过全面预算管理优化业务流程

智达方通

业务流程优化 业务流程 全面预算管理

IPQ6010 vs IPQ9574 Platform Comparison|Achieve 1588 TSN in WiFi6 WiFi7Hardware

wallyslilly

IPQ6010

MatrixOne 通过中国信通院 “可信数据库” HTAP 基础能力专项测试

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

GO编程语言:简洁、高效、强大的开源编程语言

EquatorCoco

Go 编程语言 架构编程

软件测试/测试开发/人工智能丨模型通过什么原理帮助业务解决问题

测试人

人工智能 软件测试

Python在人工智能领域的应用案例分析

技术冰糖葫芦

API

低代码助力全栈开发

这我可不懂

低代码 全栈开发

Tmall API 丨Tmall commodity list data interface丨Tmall commodity details data interface

tbapi

天猫商品详情数据接口 天猫API接口 天猫商品数据接口 tmall api

软件测试/测试开发/人工智能丨ROC 与 AUC 的含义

测试人

人工智能 软件测试

大型媒体网站霸占86.1% Google首位排名:普通网站如何突围?

九凌网络

Pinduoduo API丨Pinduoduo commodity details data interface丨Pinduoduo commodity data interface

tbapi

拼多多API接口 pinduoduo API 拼多多商品详情数据接口

Taobao purchasing system丨Taobao purchasing system丨Chinese purchasing system丨Chinese goods purchasing

tbapi

taobao agent taobao agent system 1688 agent 1688 agent system taobao buyer

汽车行业数字化转型,迎来新机遇!

优秀

数字化转型 汽车行业 汽车行业数字化转型

神州数码(Digital China)与跬智信息(Kyligence)签署合作协议

Kyligence

数字分析 数智驱动

测试开发 | AI在人工和服务领域的崭新角色

测吧(北京)科技有限公司

测试

如何给图数据库 NebulaGraph 新增一种数据类型,以 Binary 为例

NebulaGraph

数据库

聊聊kube-scheduler如何完成调度和调整调度权重

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟

数云100|神州数码X浙江联通:以算力支撑面向“互联网+”的隐私保护系统,保护用户的隐私数据安全

科技热闻

Taobao api丨Taobao API interface丨 Taobao product data interface丨Taobao product details interface

tbapi

淘宝商品详情数据接口 淘宝API接口 淘宝商品数据接口 淘宝数据采集

手把手入门MO | 如何通过通过 FineBI 实现 MatrixOne 的可视化报表

MatrixOrigin

分布式数据库 云原生数据库 MatrixOrigin MatrixOne HTAP数据库

软件测试/测试开发/人工智能丨分类,二分类和回归问题的对应场景与区别

测试人

人工智能 软件测试

测试开发 | AI与生物医学:加速医学研究的新引擎

测吧(北京)科技有限公司

测试

测试开发 | 保护数据隐私的分布式学习方法:构建安全智能未来

测吧(北京)科技有限公司

测试

关于业务转化息息相关的小程序能力

Geek_2305a8

交大安泰行研五周年,“第六届中国行业发展高峰论坛”成功举行

科技热闻

Java后端问题排查经验

WizInfo

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