螞蟻金服 SOFADashboard 啟動開源共建 | SOFAStack 一站式管控平臺

螞蟻金服分散式架構發表於2019-05-06
SOFAStack
Scalable Open Financial Architecture Stack 是螞蟻金服自主研發的金融級分散式架構,包含了構建金融級雲原生架構所需的各個元件,是在金融場景裡錘鍊出來的最佳實踐。
為了建設更完整的 SOFAStack 微服務體系,我們計劃發起 SOFADashboard 專案,計劃通過社群的方式共建,將其打造為一站式的 SOFAStack 管控平臺。歡迎共建~
SOFADashboard:github.com/alipay/sofa… [1]

背景

從 2018 年 4 月 19 日宣佈開源至今,SOFAStack 目前已經開源了包括 SOFABoot、 SOFARPC、SOFALookout、SOFATracer、SOFARegistry 等在內的一系列微服務相關的專案,並投入分散式事務 Seata 進行重要貢獻。隨著 SOFAStack 架構體系的不斷豐富和完善,外部對於 SOFAStack 的管控平臺的需求也愈加強烈。

由於 SOFAStack 內部的管控平臺依賴眾多的內部基礎設施,為了建設更完整的 SOFAStack 微服務體系,我們計劃發起全新的 SOFADashboard 專案,計劃通過社群的方式共建,將其打造為一站式的 SOFAStack 管控平臺。

能力大圖

SOFADashboard 作為一站式 SOFAStack 管控臺,希望對 SOFAStack 各個元件的使用等進行統一管理。為此我們為 SOFADashboard 規劃一版能力圖,包含了微服務裡的一些能力點,例如應用資訊管理、服務治理、配置管控、動態模組等等。見下圖所示:

image.png

每個能力點對應的實現我們都做了一層抽象。例如服務檢視需要從註冊中心獲取資料,我們封裝了一層服務列表獲取介面,底層可以是從 Zookeeper 或者 SOFARegistry 等不同的註冊中心實現讀取服務列表。

技術棧選擇

為了最大限度的降低開發成本、部署成本及運維成本,SOFADashboard 會基於開源社群優秀的產品來進行開發構建。經過討論,最終選擇社群主流的前後端分離思路,具體的元件包括:

  • Ant Design:基於 React [2] 封裝的一套 Ant Design 的元件庫,主要用於研發企業級中後臺產品。從產品成熟度、社群活躍度、框架上手難易程度等各個方面均有很好的表現。
  • SOFABoot:螞蟻金服開源的基於 Spring Boot 的研發框架,它在 Spring Boot 的基礎上,提供了諸如 Readiness Check,類隔離,日誌空間隔離等能力。在增強了 Spring Boot 的同時,SOFABoot 提供了讓使用者可以在 Spring Boot 中非常方便地使用 SOFA 中介軟體的能力。
  • MyBatis:Mybatis 相對於 JPA 來說,上手難度略低,JPA 更加傾向於結合 DDD 使用(業務越複雜,對於DDD 的需求越高);對於簡單的增刪改查業務操作,Mybatis 相對來說更靈活和可控。

v1.0 釋出

4 月 30 日,我們上傳了第一個 SOFADashboard 版本,主要能力包括:應用資訊、服務檢視、動態模組管控等。

目前演示地址:dashboard.dev.sofastack.tech:8000/ [3]

image.png

詳細設計圖

image.png

基礎依賴

從架構圖中可以看到,目前 SOFADashboard 中的服務治理、SOFAArk 管控等需要依賴於 Zookeeper 和 MySQL;它們承擔的解決如下:

外部依賴

作用

備註

Zookeeper

註冊中心

SOFARPC 服務治理

配置推送

SOFAArk 管控

MySql

資源儲存

註冊的 ark-biz 資訊,外掛與應用的關聯資訊,外掛版本資訊等

應用皮膚

SOFADashboard 支援檢視應用的 IP、埠、健康檢查狀態等基本資訊,此功能依賴 SOFADashboard client。SOFADashboard client 用於向 SOFADashboard 服務端註冊 IP、埠、健康檢查狀態等應用基本資訊;SOFADashboard client 並非是直接通過 API 呼叫的方式將自身應用資訊直接註冊到 SOFADashboard 服務端 ,而是藉助於 Zookeeper 來完成。

image.png

客戶端向 Zookeeper 中如上圖所示的節點中寫入資料,每一個 ip:port 節點代表一個應用例項,應用本身資訊將寫入當前節點的 data 中。

如果一個應用需要將應用資訊展示到 SOFADashboard 管控端,可以通過引入客戶端依賴即可,具體使用參考 SOFADashboard client 快速開始 [4]。

服務治理

SOFADashboard 服務治理是對 SOFARPC 的服務進行管理,服務治理管控臺部分,主要包括基於服務名查詢和服務資訊列表展示兩個基礎能力。在服務治理管控臺介面,可以直觀的看到當前服務的一些基本後設資料資訊:

image.png

當點選 服務 ID 對應的超連結時,會進入到當前服務的詳情頁;服務提供者詳情頁中,可以看到當前服務所有的提供方資訊列表,每個 item 行對應一個服務提供方例項,通過此介面可以快速檢視服務的 providers 資訊。

image.png

服務消費者詳情頁中,可以看到當前服務所有的消費方資訊列表。

image.png

SOFAArk 管控

SOFAArk [5]本身提供了多種方式來支援多應用(模組)合併部署 ,包括基於命令列的管控,基於 API 的管控等;SOFAArk 管控是 SOFADashboard 針對 API 管控的一種實現。通過面向 Zookeeper 進行命令的推送和命令的解析執行。SOFAArk 管控主要包括以下功能:

  • 外掛註冊

將 ark-biz 外掛註冊到 SOFADashboard,作為基礎資料,統一管控。

image.png

外掛基本資訊錄入:

image.png

外掛列表:

image.png

  • 關聯應用

將 ark-biz 外掛與宿主應用進行繫結,此關聯資訊在 SOFAArk 多應用(模組)合併部署中作為重要的基礎資訊存在。在後續的操作中,可以通過此關聯關係檢視到某個外掛下掛載的應用資訊。

image.png

  • 外掛詳情

通過外掛詳情頁,可以看下當前 ark-biz 外掛下所有關聯的宿主應用資訊,以及宿主應用中的 ark-biz 狀態資訊,外掛詳情頁中,可以檢視所有關聯此外掛的應用中,外掛的狀態資訊。

image.png

  • 命令推送

命令推送是 SOFADashboard 中提供 SOFAArk 管控的核心能力,通過面向 Zookeeper 程式設計的方式,將指令資訊傳遞給各個宿主應用中的 ark-biz 模組,ark-biz 在接收到相關指令之後再進行相應的行為,如安裝、切換、解除安裝等。

可以針對應用維度、IP 維度推送一些指令,比如 install、uninstall 等等,當這些命令被寫入到 Zookeeper 的某個節點上時,所有監聽此節點的宿主應用均會解析此指令,並進行相關的操作。

基於 IP 維度推送如圖例所示,每個應用例項表單預設會有對應的操作,可以通過展示的命令按鈕操作當前例項行為:

image.png

點選 安裝按鈕,延遲 1~1.5s 之後 介面將會重新整理新的狀態:

image.png

基於應用維度此處不再贅述。

社群共建

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] Reactfacebook.github.io/react/

[3] 演示地址:dashboard.dev.sofastack.tech:8000/

[4] SOFADashboard client 快速開始github.com/alipay/sofa…

[5] SOFAArkwww.sofastack.tech/sofa-boot/d…

公眾號:金融級分散式架構(Antfin_SOFA)


相關文章