7
回答
SOFA:十年锤炼自研架构,拥抱开源共建
华为云数据库免费试用   

SOFA(Scalable Open Financial Architecture)是蚂蚁金服研发的金融级分布式中间件,很多人认为这个国产自主研发项目来势汹汹,说它定义了新的金融级分布式架构。

从内部研发开始,SOFA 至今已经发展了 10 年,伴随着在金融场景中的不断锤炼,SOFA 也从最初单一的组件发展成为如今的金融级分布式架构完整解决方案,目前它包含了构建金融级云原生架构所需的各个组件,具体有微服务研发框架、RPC 框架、服务注册中心、限流/熔断框架、分布式链路追踪、分布式高可用消息队列、分布式事务框架与分布式数据库代理层等。

今年 4 月份,SOFA 宣布开源,目前已经陆续在 GitHub 上释出了 20 多个相关组件。随着 SOFA 的开源,网上关于 SOFA 的资料已经有不少,我们针对 SOFA 大生态中一些当下读者最为关注的组件功能、特性,以及其强调的所谓“自主研发”等内容采访了 SOFA 开源负责人鲁直,希望带给读者更多关于 SOFA 的技术细节与理念。

项目地址:

十年一剑,SOFA 定义新金融级分布式架构

作为⼀套云原生架构中间件,SOFA 意在帮助企业快速构建稳定的金融级云原生架构,以此为基础进行云原生应用的研发。

CNCF 对云原生应用定义了三大特征,分别是:

  • 容器化封装:以容器为基础,简化云原生应用的维护;在容器中运行应用,并将容器作为应用部署的独立单元,实现高水平的资源隔离。
  • 动态管理:通过集中式的编排调度系统动态地对容器进行管理和调度。
  • 面向微服务

这也就是说云原生架构需要具备满足这些条件的能力,在 SOFA 中,这些能力以相应的组件和各组件整合起来的能力呈现。鲁直介绍,随着近 10 年的发展,SOFA 的内容变得越来越丰富,已经成为了⼀套完整的分布式架构解决方案。项目目前已经集成了诸多功能组件:

  • 研发框架-SOFABoot
  • RPC 框架-SOFARPC
  • 服务注册中心-SOFARegistry
  • Service Mesh-SOFAMesh
  • 限流/熔断
  • 消息队列
  • 分布式链路追踪
  • 数据访问代理
  • 分布式事务
  • ……

 

目前 SOFA 已经开源了其中的部分内容,包括 SOFABoot、SOFARPC、SOFATracer、SOFAMesh 等,鲁直表示开源工作将持续下去,未来还会陆续将剩余的部分逐步开源出来。

在 SOFA 的描述中,其定义了“新的金融级分布式架构”,对于这个“新”,鲁直表示,这主要体现在 SOFA 的无限伸缩能力、⼀致性、秒级容灾和极低成本这四个点上。

他解释,无限伸缩指的是 SOFA 的整套架构,包括数据库、应用、网络都能够做到无限地伸缩;⼀致性是 SOFA 非常有特色的⼀个点,在性能和⼀致性上可以达到⼀个平衡,实现金融交易业务的分布式事务⼀致性;秒级容灾指的是遇到机房断点、断网等场景时,可以秒级恢复,现在配备上蚂蚁金服自研的 OceanBase 数据库,可以达到更好的效果;极低成本指的是每笔交易花费的 IT 成本非常低,在面对各种大促的时候,SOFA 也可以做到非常低成本地按需进行扩容。

“SOFA 中有⼀个单元化的架构(LDC),将数据进行分片,⼀个逻辑数据中心只处理部分数据分片,当容量达到瓶颈的时候,直接扩充逻辑数据中心的数量即可,从而实现了无限伸缩的能力”,鲁直举例进行说明:“在单元化的架构上,SOFA 又演化出了弹性伸缩的能力,简单地说,就是在面临双 11、双 12 与新春红包等大促活动的时候,因为每次大促活动的业务特点并不⼀样,所以通过弹性伸缩的能力,SOFA 可以根据业务维度在不同的大促活动中将不同的服务弹到云上,从而大大降低大促带来的成本开销。”

选择开源,投入社区,SOFA 需要不断完善

鲁直坦言 Dubbo 是阿里集团开源的一款非常优秀的 RPC 框架,它高性能、具有良好的扩展性。而 SOFARPC 对协议、网络、路由与可扩展性等层面都进行了大量改造和优化工作,更加满足和蚂蚁金服类似的大规模金融级业务场景。

在蚂蚁金服内部,SOFARPC 在 SOFA 的生态下,有完善的微服务技术栈支持,包括微服务研发框架、RPC 框架、服务注册中心、分布式定时任务、限流/熔断框架、动态配置推送、分布式链路追踪、Metrics 监控度量等等。

他从以下几个方面对 Dubbo 与 SOFARPC 进行了比较:

  • 性能方面,类似协议下使用的技术点都是差不多的,所以基本上可比性不高。
  • 扩展性的对比,Dubbo 和 SOFARPC 二者都具有良好的扩展性。
  • 开源领域,SOFARPC 目前还处在一个起步阶段,开源生态还在建设当中,这与 Dubbo 多年来沉淀下来的积极的开源生态没法比较。随着开源计划的推进,SOFA 也积极在进行开源社区的运营工作,后续的版本将增加各个周边组件,完善微服务技术栈。
  • 对于其它功能差异,有⼀些已经开源或者即将开源的功能点供参考:SOFARPC 协议上将支持 HTTP/2、gRPC,能力上如服务预热权重、自动故障降级、协商机制、CRC 数据校验等,结合 SOFABoot 可以实现 RPC 框架与业务的类隔离,防止类冲突等。另外 SOFARPC 在跨单元机房的路由,包括配合服务注册体系实现的对异地多活的支持也是非常有特色的。

SOFARPC 甚至 SOFA 整个项目,开源至今短短 4 个多月,其实成绩有目共睹,鲁直也期待在接下来的开源工作中,能有更多开发者加入,共同完善一个积极、稳定、功能全面的 SOFA 开源社区。

增强 Istio,Service Mesh 才是未来

Service Mesh 是最近比较火的一个主题,现在谈微服务架构很难不提到这个甚至被称为“下一代微服务架构”的技术。另外我们可以看到,近期关于微服务架构的相关话题,基本上是围绕云原生、Kubernetes 和以 Istio 为代表的 Service Mesh 解决方案展开。

Istio 主要包含 Envoy、Pilot 和 Mixer 三个部分,功能简要介绍如下:

 

  • Envoy:以 Sidecar 的形式代理应用的所有出入流量。
  • Pilot:管理和配置所有 Envoy 代理实例。
  • Mixer:提供策略控制和遥测数据收集。

SOFA 中有一个基于 Istio 的 SOFAMesh 组件,它在 Istio 的基础上做了不少改进。同样是做服务间的通信,既然已经有了 SOFARPC,那为什么 SOFA 中还需要一个 SOFAMesh 呢?鲁直直言“Service Mesh 才是未来”。

他表示,SOFAMesh 的定位和 SOFARPC 并不冲突,只是把原来 SOFARPC 中的部分能力下沉,包括服务发现、负载均衡、限流、熔断与部分的链路追踪等。而在 RPC 框架中,还需要保留例如序列化、协议封装等能力,才能够和 SOFAMesh 进行通信。“我们判断在未来 Kubernetes 的整个体系下,SOFAMesh 相比于 SOFARPC,会更加适合,针对于多语⾔ SOFAMesh 也会更加友好,并且 SOFAMesh 的 Sidecar 在 Kubernetes 下面可以独立升级,维护成本也会更低,这些对于基础设施团队会是非常大的吸引力。 ”

SOFAMesh 具体对 Istio 做了哪些改进,鲁直对此一一做出了介绍。

 

从这张 SOFAMesh 架构图中可以看到,SOFAMesh 自研了一个 Golang 版本的 Sidecar——SOFAMosn,它用来替代 Istio 体系中用 C++ 实现的 Envoy ,之所以选择用 Golang 实现,是因为 Golang 是云原生时代的首选语言,相比于 Envoy 使用的 C++,Golang 也更加容易上手,对于社区来说会更加友好。鲁直介绍,SOFAMosn 完全兼容 Envoy 的 API,可以通过 XDS 的 API 和 Istio 的 Pilot 进行通信。

除了替换 Envoy,SOFAMesh 中还把 Pilot 尝试对接到更多的服务注册中心上,鲁直介绍,目前已经增加了对 ZooKeeper 的支持,未来随着 SOFA 服务注册中心 SOFARegistry 的开源,也会增加对它的支持。

同时,在数据同步方面,未来会增加相应模块,以实现多个服务注册中心之间的数据交换。

另外,未来也会增加 Open Service Registry API,尝试提供标准化的服务注册功能。

 

与社区紧密结合,SOFA 融合开源生态

在鲁直看来,开源是一个非常大的世界,里面有非常多由优秀的程序员创造的优秀软件,包括 Istio、Spring Boot 等等。行业发展到这个阶段,完全地闭门造车是不现实的,或多或少,总得利用一些开源软件,或者是利用一些开源的基础库来做一些基础的事情,或者是在⼀些开源软件的基础上做出自己的增强。

同时他也具体解释了 SOFA 为何称得上自主研发:“SOFA 的自主研发包含了很多的内容,包括 SOFABoot 里面模块化的方案,给每一个模块生成一个独立的 Spring 上下文,解决运行时模块耦合的问题;轻量级的类隔离的方案,帮助用户更加轻松地去解决类隔离的问题;SOFAMesh 中的 Sidecar SOFAMosn 等等”,他也表示这些是已经开源的部分,此外还有大量目前尚未开源的自主研发内容,比如 SOFA 服务注册中心、分布式事务框架 DTX 等等。

总结起来,鲁直认为,我们应该抱着“即使是国产自主研发,也要拥抱开源世界”的态度来看待。

嘉宾介绍

黄挺(鲁直),SOFA 开源负责人,蚂蚁金服高级技术专家,目前在蚂蚁金服中间件团队负责应用框架与服务化相关的工作。

举报
h4cd
发帖于1周前 7回/2K+阅
顶部