开源 |蚂蚁金服启动分布式中间件开源计划,用于快速构建金融级云原生架构

简介: 蚂蚁金服将逐步向社区开源 SOFA 中的各个组件,助力更多机构和合作伙伴完成金融分布式转型!

我们很高兴地宣布,今天蚂蚁金服启动分布式中间件(Scalable Open Financial Architecture,以下简称 SOFA 中间件)的开源计划!


2424a767014f626ac957d423058c68248ca3cee0


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


蚂蚁金服期望通过逐步向社区开源 SOFA 中各个组件,来帮助更多机构和合作伙伴完成金融分布式转型,帮助大家更加快速构建稳定的金融级云原生的架构,也期望 SOFA 在蚂蚁体系之外的更大场景下去应用,来进一步锻造改进这套体系,使其更加完善和稳固,并具备更多金融级的属性。所以我们也非常欢迎社区的伙伴和各行业的伙伴能够参与共同探讨、交流和共建。


Why(为什么要做)

SOFA 中间件在蚂蚁内部经历了十年的发展和四代架构的演进,被广泛应用在包括支付,借贷,信用,基金,保险等全金融场景,支撑着蚂蚁平稳度过历次双十一,双十二,新春红包等大考,创造了25.6 w/s 的交易记录,并还在不断刷新这个记录。


从 2015 年开始,蚂蚁金服开启了金融科技对外输出的战略,SOFA 也走出了蚂蚁,甚至跨越了国界,被更多金融机构与合作伙伴所使用,如天弘基金,信美互信,南京银行,PayTM、DANA钱包等。


在与合作伙伴以及客户的沟通、合作过程中,我们发现了 SOFA 的理念和能力也正是很多金融行业的企业所需要的,大家或多或少正在规划或者已经在做类似的东西,但缺乏像蚂蚁金服这么大的流量来提供考验,也缺乏专业团队的长期投入,更缺乏丰富的金融场景和严苛的业务压力来驱动技术持续发展。


随着近几年蚂蚁金服在生态构建上不断完善,以及不断地有更多的公司加入到蚂蚁金服的金融生态中,我们也发现了整个金融生态地复杂性和多样性,SOFA 中间件也需要在更多地场景下被打磨、被完善、被增强。因此,我们选择将 SOFA 逐步开源出来,在贡献给社区的同时,也期待社区、合作伙伴甚至客户,都能够一起参与共建,形成行业标准和最佳实践。


How(怎么做)

为了让 SOFA 能够开源出来,我们投入了大量的重构工作,以可扩展化的方式来层层构建 SOFA 的能力,保证 SOFA 的内部版本和开源的版本采用的是同一个内核。所以 SOFA 的内部版本就是在开源版本之上扩展了内部逻辑和历史版本的兼容逻辑。开源版本的核心逻辑,内外是一致的,并在蚂蚁金服的生产环境中被广泛使用的,同时会随着蚂蚁自身业务诉求的驱动,不断的演进。

 

开源社区有非常多优秀的技术和丰富的生态,为了更好的能融入和对接现有技术体系,尊重并遵守一些社区标准,SOFA 在设计过程中就充分考虑了兼容性和架构分层,充分兼容适配社区标准,实现组件化、可扩展、可替换。


所有的 SOFA 中间件中的组件组合起来可以发挥更大的能力,但是每一个组件都是可以被替换的,比如用户可以选择用 Dubbo 来替换 SOFARPC,或者跟 SOFARPC 对接互通;可以选择 Zookeeper 来作为服务注册发现,也可以选择 SOFA 的服务注册中心来做服务发现;分布式链路追踪组件遵守 OpenTracing 的规范,可以直接和 Zipkin 进行对接等等;Metrics组件会遵循 Metrics2.0 标准,适配 Prometheus 体系等等。


What(要做什么)

本次 SOFA 中间件开源的内容包含了 SOFABoot  SOFARPC 两个组件。


SOFABoot 是蚂蚁金服基于 Spring Boot 构建一个研发框架,整体架构上类似于蚂蚁金服之前开源的Egg框架,遵守微内核,可插拔的理念,我们以标准 Spring Boot Starter的方式,扩展了很多企业级特性,以解决大规模团队开发云原生微服务系统中会遇到的问题,如类隔离,ReadinessCheck,日志隔离等等能力,后续会开放更多内部实践过的特性,如 Spring 上下文隔离,合并部署,动态模块,Tracing、Metrics、Streaming、测试框架等。


同时,蚂蚁的很多技术团队和阿里的技术团队也开放了很多类库和组件,我们都会提供原生的集成能力和 Demo,方便大家更好的整合使用。SOFABoot 100% 兼容 Spring Boot,和 Spring Boot 并非是替代的关系,所有 Spring Boot 中的能力也都可以在 SOFABoot 中使用。


SOFABoot 的 Github 的地址是:https://github.com/alipay/sofa-boot ,欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

 

SOFARPC 是一个高效,可靠,可扩展的 RPC 的框架,是蚂蚁金服服务化架构的基石。SOFARPC 最早源于阿里内部的 HSF,经过了蚂蚁金服内部多年的发展,在协议,网络,路由,可扩展性等层面都进行了大量的改造和优化的工作,适配了更多金融级的场景。


SOFARPC 在蚂蚁金服内部是被所有在线应用的使用的服务调用框架,截止 2017 年双十一,SOFARPC 已经被蚂蚁 2000 多个系统所使用,生产环境发布的服务数量超过了 23000 个。


SOFARPC 提供了多协议的支持,包括在蚂蚁金服内部被广泛采用,并且高度优化的 Bolt 协议,以及 REST,Dubbo,gRPC 等等主流的协议;也针对内部网关,测试等等场景提供了泛化调用能力;为了解决超大规模流量的预热的问题,提供了服务预热的能力;用户也可以根据 SOFARPC 的扩展机制扩展自己需要的能力。


在后续的版本中,SOFARPC 将会加上分布式链路追踪,Metrics,更多的服务注册中心的支持,CRC 校验等等能力。


SOFARPC 的 Github 的地址是:https://github.com/alipay/sofa-rpc ,欢迎大家使用反馈、贡献代码。(请将网址复制至浏览器中打开即可查看,下同。)

 

除了以上的两个 SOFA 中间件中的组件,在接下来,我们将会陆续开源 SOFA 中间件中的其他的组件,目前这些组件正在进行一定程度地重构中,为开源做准备,敬请大家期待~

 

附本文中提到的链接:


Egg:http://eggjs.org/

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

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

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


彩蛋

最后,我们也为对 SOFA 中间件感兴趣的小伙伴们准备了一个微信交流群欢迎感兴趣的同学扫描下方二维码联系加群小助手加入我们 SOFA 交流群哦。

d3bdf54ab5c1d8d79296cfa510a15674518506d9


目录
相关文章
|
7月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
4980 97
|
8月前
|
存储 Kubernetes 微服务
Dapr:用于构建分布式应用程序的便携式事件驱动运行时
Dapr 是一个可移植、事件驱动的运行时,简化了分布式应用程序的开发。它支持多语言、多框架,适用于云和边缘计算环境,提供服务调用、状态管理、消息发布/订阅等构建模块。通过 sidecar 模式,Dapr 帮助开发者轻松应对微服务架构的复杂性,实现弹性、可扩展的应用部署。
512 9
Dapr:用于构建分布式应用程序的便携式事件驱动运行时
|
9月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1338 3
|
12月前
|
消息中间件 存储 Kafka
分布式消息中间件设计与实现
本文深入探讨了消息中间件的核心功能实现与高并发、高可用设计。在生产者设计中,涵盖消息构造、序列化、路由策略及可靠性保障(如ACK机制)。消费者部分分析了拉取/推送模式、分区分配与消息确认机制。同时,Broker作为核心组件,负责消息路由、存储和投递,并通过索引技术实现快速检索。 高并发设计方面,重点讨论了文件存储(顺序写入、分段存储)、日志结构存储及负载均衡策略(如哈希分区、轮询分区)。为确保高可用性,文章详细解析了主从复制、故障转移机制以及同城/异地多活容灾方案。
431 13
|
7月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
8月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
9月前
|
数据采集 存储 NoSQL
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
|
12月前
|
消息中间件 存储 中间件
分布式消息中间件基础
消息中间件是一种基于异步消息传递的分布式系统通信工具,核心功能包括消息传输、存储、路由与投递,能够实现系统解耦、异步处理和流量削峰。其主要组件包括生产者、消费者、Broker、主题/队列等,支持点对点和发布-订阅两种消息模型。主流中间件如Kafka(高吞吐)、RabbitMQ(灵活路由)、RocketMQ(事务支持)各有特色,适用于不同场景。此外,中间件还涉及多种协议(AMQP、MQTT等)、可靠性传输机制(持久化、确认机制)、顺序性与重复性问题解决以及事务支持(两阶段提交、本地消息表等)。选择中间件需根据业务需求权衡性能、功能和运维成本。
555 6
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。

热门文章

最新文章