開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

小螞蟻說:

數據、消息、微服務是螞蟻金服自主研發的金融級分佈式中間件 SOFA (Scalable Open Financial Architecture)的三大方向。

今天我們就給大家介紹下本次 SOFA 中間件開源的幾個微服務體系組件。

開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

螞蟻金服自主研發的分佈式中間件(Scalable Open Financial Architecture,以下簡稱 SOFA 中間件)包含了構建金融級雲原生架構所需的各個組件,包括微服務研發框架,RPC框架,服務註冊中心,分佈式定時任務,限流/熔斷框架,動態配置推送,分佈式鏈路追蹤,Metrics監控度量,分佈式高可用消息隊列,分佈式事務框架,分佈式數據庫代理層等組件,是一套分佈式架構的完整的解決方案,也是在金融場景裡錘鍊出來的最佳實踐。

開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

本次 SOFA 中間件將繼續開源微服務體系下的幾個組件:包括分佈式鏈路追蹤(SOFATracer)客戶端、Metrics監控度量(SOFALookout)客戶端、SOFARPC 的 Nodejs 版實現。同時還開源了 SOFABoot 下的模塊化開發框架,以及 SOFARPC 的 HTTP/2 能力等。下面將逐一進行簡單介紹。

SOFATracer

SOFATracer 是一個用於分佈式系統調用跟蹤的中間件,通過統一的 traceId 將調用鏈路中的各種網絡調用信息以日誌或者上報的方式記錄下來,以達到透視化網絡調用的目的。這些日誌可用於故障的快速發現,數據統計,服務治理等。

為了解決在實施大規模微服務架構時的鏈路跟蹤問題,SOFATracer 基於 OpenTracing(http://opentracing.io) 規範並擴展其能力,包括基於Disruptor 高性能無鎖循環隊列的異步落地磁盤的日誌打印能力,自定義日誌格式,日誌自清除和滾動能力,基於SLF4J MDC 的擴展能力,統一的配置能力等。同時 SOFATracer 也對接了開源生態,可以選擇將 Tracer 數據對接到 Zipkin 等開源產品。

SOFATracer 的 Github 的地址是:

https://github.com/alipay/sofa-tracer

歡迎大家使用反饋、貢獻代碼。(請將網址複製至瀏覽器中打開即可查看,下同。)

SOFALookout

SOFALookout 是一個利用多維度的 Metrics 對目標系統進行度量和監控的中間件。

Lookout 的多維度 Metrics 參考 Metrics 2.0(http://metrics20.org/spec)標準,提供一整套 Metrics 的處理,包括數據埋點、收集、加工、存儲與查詢等。SOFALookout 包括客戶端與服務器端服務兩部分,本次先開源客戶端部分,服務端部分代碼在整理中。

SOFALookout 客戶端提供了一套 Metrics API 標準,通過它可以方便地對 Java 應用的 Metrics 進行埋點統計。為了方便使用,SOFALookout 客戶端默認提供一些擴展模塊,它們提供 JVM,OS 等基本 Metrics 信息的統計,遵循該擴展機制,我們可以自定義或集成更多的 Metrics 數據。

另外,SOFALookout 客戶端除了支持向 SOFALookout 服務端上報數據外,還支持與社區主流的相關產品,包括Dropwizard,(SpringBoot)Actuator以及 Prometheus 等進行集成和數據適配。

SOFALookout 的 Github 的地址是:

https://github.com/alipay/sofa-lookout

歡迎大家使用反饋、貢獻代碼。(請將網址複製至瀏覽器中打開即可查看,下同。)

Eggjs 集成

每種語言都有自己最擅長的領域,跨語言友好性對於分佈式架構也是非常重要的。

在螞蟻內部還有一套 Nodejs 版本的 SOFA 中間件的實現,包含了絕大部分 Java 版本的功能,並將它們集成到已經開源的企業級 Nodejs 框架 Eggjs(https://eggjs.org)中,形成了一套完整的 Web MVC 和 BFF (Backend ForFrontend) 解決方案。

這套架構目前廣泛應用於螞蟻的 Web 開發和多端適配等場景,讓各崗位有了更清晰的職責劃分,服務端(一般是 Java)提供基於領域模型的 RPC 接口,前端調用接口拿到數據後進行剪裁和格式化,並實現人機交互。領域模型與頁面數據是兩種思維模式,通過分層可以很好地解耦,讓彼此更專業高效。後面我們也會陸續開源 SOFA 中間件的 Nodejs 版本實現,本期會先放出 SOFARPC 相關的兩個模塊:

SOFARPC Node 的 Github 的地址是:

https://github.com/alipay/sofa-rpc-node

SOFABolt Node 的 Github 的地址是:

https://github.com/alipay/sofa-bolt-node

歡迎大家使用反饋、貢獻代碼。(請將網址複製至瀏覽器中打開即可查看,下同。)

SOFABoot

在最新的 SOFABoot 2.4.0 版本中,SOFABoot 新增加了基於 Spring 上下文隔離的模塊化開發能力。

在企業級應用場景,隨著應用系統模塊的增多,每個業務模塊之間的耦合也會越來越嚴重,業務模塊的自測更加複雜,團隊之間的溝通成本增加。模塊化開發是該問題的有效解決方案,但是 Spring Boot 默認不支持模塊化開發,所有 Bean 共用一個 Spring 上下文。為此,SOFABoot 提出 SOFABoot 模塊的概念,每個業務團隊專注於開發自己的 SOFABoot 應用模塊,模塊自包含模塊的代碼和配置,擁有獨立的 Spring 上下文,便於開發及自測,減少團隊間的溝通成本。

SOFABoot 模塊間通信使用 JVM 服務進行通信,避免模塊之間的耦合;如果遠程服務在本地其它本地模塊中存在,可優先調本地提高性能。同時 SOFABoot 提供了模塊並行啟動及 Bean 異步初始化能力,大幅提高應用啟動速度。

SOFABoot 的 Github 的地址是:

https://github.com/alipay/sofa-boot

歡迎大家使用反饋、貢獻代碼。(請將網址複製至瀏覽器中打開即可查看,下同。)

SOFARPC

在最新的 SOFARPC 5.4.0 版本中,SOFARPC 基於事件擴展機制,集成了 SOFATracer 和 SOFALookout 兩個微服務體系產品,完善了自身的服務監控度量以及分佈式跟蹤功能。用戶可以通過 SOFATracer 對接到 Zipkin 查看服務調用跟蹤信息,也可以通過 SOFALookout 對接到 Prometheus 查看服務度量信息。新版本的 SOFARPC 中還增加了 HTTP/1.1 和 HTTP/2 協議的支持,在跨語言等場景下可以快速通過標準的 HTTP 協議進行通信。SOFARPC 也與 Eggjs 進行了打通了 Bolt 協議,方面用戶在 Java 和 Nodejs 之間高效通信。

SOFARPC 的 Github 的地址是:

https://github.com/alipay/sofa-rpc

歡迎大家使用反饋、貢獻代碼。(請將網址複製至瀏覽器中打開即可查看,下同。)

Jarslink 2.0

JarsLink 是螞蟻金服內部使用的一個基於 JAVA 的模塊化開發框架,它提供在運行時動態加載模塊(一個JAR包)、卸載模塊和模塊間調用的 API。

目前 Jarslink 2.0 在緊張開發之中,Jarslink2.0是在 Jarslink1.0 基礎之上,結合 SOFABoot類隔離框架,提供了更加通用的應用(模塊)隔離和通信的實現方案,敬請期待!

Jarslink 的 Github 的地址是:

https://github.com/alibaba/jarslink

歡迎大家使用反饋、貢獻代碼。 (請將網址複製至瀏覽器中打開即可查看,下同。)

附錄

附本文中提到的鏈接:

SOFATracer:

https://github.com/alipay/sofa-tracer

SOFALookout:

https://github.com/alipay/sofa-lookout

SOFABoot:

https://github.com/alipay/sofa-boot

SOFARPC Node:

https://github.com/alipay/sofa-rpc-node

SOFABolt Node:

https://github.com/alipay/sofa-bolt-node

Eggjs:

https://eggjs.org

SOFARPC:

https://github.com/alipay/sofa-rpc

JarsLink:

https://github.com/alibaba/jarslink

SOFAStack系列文章知乎專欄:

https://zhuanlan.zhihu.com/sofastack

交流社群

開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

鳴謝與福利

ScienJus

SteNicholas

liangyuanpeng

stateIs0

yangl

JoeKerouac

在此,我們將送出螞蟻金服特產樟子松一顆,以感謝各位的貢獻!

開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

哦,不好意思,圖放錯了。是這個。

開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

▲螞蟻森林樟子松-抱枕

當然,我們也歡迎更多的小夥伴加入螞蟻金服的開源生態中來!(那就從轉發這篇文章開始吧~)

開源|螞蟻金服分佈式中間件開源第二彈:豐富微服務架構體系

▲螞蟻森林能量球-抱枕(前面這個)

— END —

螞蟻金服科技,只為分享乾貨,您的轉發是對我們最大的支持,歡迎在文章下方留言與我們進行交流哦~


分享到:


相關文章: