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

SOFA Stack
S calable O pen F inancial A rchitecture Stack 是螞蟻金服自主研發的金融級分佈式架構,包含了構建金融級雲原生架構所需的各個組件,是在金融場景裏錘鍊出來的最佳實踐。

爲了建設更完整的 SOFAStack 微服務體系,咱們計劃發起 SOFADashboard 項目,計劃經過社區的方式共建,將其打造爲一站式的 SOFAStack 管控平臺。歡迎共建~

SOFADashboard: github.com/alipay/sofa… [1]


SOFADashboard 相關活動推薦

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 規劃一版能力圖,包含了微服務裏的一些能力點,例如應用信息管理、服務治理、配置管控、動態模塊等等。見下圖所示:編程

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)

相關文章
相關標籤/搜索