SOFA Stack
S calable O pen F inancial A rchitecture Stack 是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。为了建设更完整的 SOFAStack 微服务体系,咱们计划发起 SOFADashboard 项目,计划经过社区的方式共建,将其打造为一站式的 SOFAStack 管控平台。欢迎共建~
SOFADashboard: github.com/alipay/sofa… [1]
5 月 26 日,SOFAMeetup#2 上海站,SOFAStack 开源核心成员集体出动。本期咱们将侧重于各个落地的实际场景进行架构解析。SOFADashboard 演示、分布式事务 Seata 详解、与 Spring Cloud 生态的融合案例、使用 SOFAStack 快速构建微服务 Demo 实操、更有最新开源的《让 AI 像 SQL 同样简单 — SQLFlow Demo 》首秀,期待与你不见不散~前端
戳连接便可报名:tech.antfin.com/activities/…react
从 2018 年 4 月 19 日宣布开源至今,SOFAStack 目前已经开源了包括 SOFABoot、 SOFARPC、SOFALookout、SOFATracer、SOFARegistry 等在内的一系列微服务相关的项目,并投入分布式事务 Seata 进行重要贡献。随着 SOFAStack 架构体系的不断丰富和完善,外部对于 SOFAStack 的管控平台的需求也越发强烈。git
因为 SOFAStack 内部的管控平台依赖众多的内部基础设施,为了建设更完整的 SOFAStack 微服务体系,咱们计划发起全新的 SOFADashboard 项目,计划经过社区的方式共建,将其打造为一站式的 SOFAStack 管控平台。github
SOFADashboard 做为一站式 SOFAStack 管控台,但愿对 SOFAStack 各个组件的使用等进行统一管理。为此咱们为 SOFADashboard 规划一版能力图,包含了微服务里的一些能力点,例如应用信息管理、服务治理、配置管控、动态模块等等。见下图所示:编程
每一个能力点对应的实现咱们都作了一层抽象。例如服务查看须要从注册中心获取数据,咱们封装了一层服务列表获取接口,底层能够是从 Zookeeper 或者 SOFARegistry 等不一样的注册中心实现读取服务列表。后端
为了最大限度的下降开发成本、部署成本及运维成本,SOFADashboard 会基于开源社区优秀的产品来进行开发构建。通过讨论,最终选择社区主流的先后端分离思路,具体的组件包括:架构
4 月 30 日,咱们上传了第一个 SOFADashboard 版本,主要能力包括:应用信息、服务查看、动态模块管控等。框架
目前演示地址:dashboard.dev.sofastack.tech:8000/ [3]前后端分离
从架构图中能够看到,目前 SOFADashboard 中的服务治理、SOFAArk 管控等须要依赖于 Zookeeper 和 MySQL;它们承担的解决以下:运维
外部依赖 |
做用 |
备注 |
Zookeeper |
注册中心 |
SOFARPC 服务治理 |
配置推送 |
SOFAArk 管控 |
|
MySql |
资源存储 |
注册的 ark-biz 信息,插件与应用的关联信息,插件版本信息等 |
SOFADashboard 支持查看应用的 IP、端口、健康检查状态等基本信息,此功能依赖 SOFADashboard client。SOFADashboard client 用于向 SOFADashboard 服务端注册 IP、端口、健康检查状态等应用基本信息;SOFADashboard client 并不是是直接经过 API 调用的方式将自身应用信息直接注册到 SOFADashboard 服务端 ,而是借助于 Zookeeper 来完成。
客户端向 Zookeeper 中如上图所示的节点中写入数据,每个 ip:port 节点表明一个应用实例,应用自己信息将写入当前节点的 data 中。
若是一个应用须要将应用信息展现到 SOFADashboard 管控端,能够经过引入客户端依赖便可,具体使用参考 SOFADashboard client 快速开始 [4]。
SOFADashboard 服务治理是对 SOFARPC 的服务进行管理,服务治理管控台部分,主要包括基于服务名查询和服务信息列表展现两个基础能力。在服务治理管控台界面,能够直观的看到当前服务的一些基本元数据信息:
当点击 服务 ID 对应的超连接时,会进入到当前服务的详情页;服务提供者详情页中,能够看到当前服务全部的提供方信息列表,每一个 item 行对应一个服务提供方实例,经过此界面能够快速查看服务的 providers 信息。
服务消费者详情页中,能够看到当前服务全部的消费方信息列表。
SOFAArk [5]自己提供了多种方式来支持多应用(模块)合并部署 ,包括基于命令行的管控,基于 API 的管控等;SOFAArk 管控是 SOFADashboard 针对 API 管控的一种实现。经过面向 Zookeeper 进行命令的推送和命令的解析执行。SOFAArk 管控主要包括如下功能:
将 ark-biz 插件注册到 SOFADashboard,做为基础数据,统一管控。
插件基本信息录入:
插件列表:
将 ark-biz 插件与宿主应用进行绑定,此关联信息在 SOFAArk 多应用(模块)合并部署中做为重要的基础信息存在。在后续的操做中,能够经过此关联关系查看到某个插件下挂载的应用信息。
经过插件详情页,能够看下当前 ark-biz 插件下全部关联的宿主应用信息,以及宿主应用中的 ark-biz 状态信息,插件详情页中,能够查看全部关联此插件的应用中,插件的状态信息。
命令推送是 SOFADashboard 中提供 SOFAArk 管控的核心能力,经过面向 Zookeeper 编程的方式,将指令信息传递给各个宿主应用中的 ark-biz 模块,ark-biz 在接收到相关指令以后再进行相应的行为,如安装、切换、卸载等。
能够针对应用维度、IP 维度推送一些指令,好比 install、uninstall 等等,当这些命令被写入到 Zookeeper 的某个节点上时,全部监听此节点的宿主应用均会解析此指令,并进行相关的操做。
基于 IP 维度推送如图例所示,每一个应用实例表单默认会有对应的操做,能够经过展现的命令按钮操做当前实例行为:
点击 安装按钮,延迟 1~1.5s 以后 界面将会刷新新的状态:
基于应用维度此处再也不赘述。
SOFADashboard 做为整个 SOFA 体系的“管家”,目前在能力上还比较薄弱;与其余 SOFAStack 产品不一样的是,SOFADashboard 是一款从一开始就但愿社区共建的,自然定位开放到社区的产品。随着 SOFAStack 体系内产品的不断丰富,SOFADashboard 但愿经过社区共建的方式来锤炼和完善功能,你们能够提出不一样的需求,建设更多的能力,从而更好的服务整个 SOFAStack 技术体系。
待建设列表以下,欢迎你们参与贡献:
任务列表 |
进度 |
计划版本 |
说明 |
集成 SOFARegistry |
开发中 |
1.1.0 |
|
完善应用面板功能,支持多维度的应用信息展现 |
-- |
1.1.0 |
|
完善服务治理能力,包括权重设置,服务降级等 |
-- |
1.1.0 |
|
增长链路分析展现功能 |
-- |
1.2.0 |
|
集成 Apollo |
-- |
1.3.0 |
|
支持 Docker |
-- |
-- |
|
支持 Kubernetes |
-- |
-- |
|
前端优化 |
持续进行中 |
-- |
本文介绍了 SOFADashboard 产生的背景,并对 SOFADashboard 提供的功能进行了介绍。随着 SOFAStack 架构体系的不断完善,SOFADashboard 也将会承担更多的管控能力。在功能丰富和前端优化上,但愿能够有更多的同窗可以参与,一块儿打造一个功能完备、简单易用的 SOFADashboard。
[1] SOFADashboard:github.com/alipay/sofa…
[2] React:facebook.github.io/react/
[3] 演示地址:dashboard.dev.sofastack.tech:8000/
[4] SOFADashboard client 快速开始:github.com/alipay/sofa…
[5] SOFAArk:www.sofastack.tech/sofa-boot/d…
公众号:金融级分布式架构(Antfin_SOFA)