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)