螞蟻金服SOFA開源負責人魯直:不僅是中間件,將來會開源更多

近日,技術媒體Linux中國的創始人王興宇對螞蟻金服SOFA開源負責人魯直,就SOFA 五、ServiceMesh、Serverless、Seata等技術內容進行了探討,如下爲專訪文章。數據庫

雖然我和魯直在微信上已經聯繫好久了,但這仍是第一次見面。交談中,我瞭解到魯直是2009 年加入阿里巴巴工做,已經有十年了。剛開始是在1688.COM 作業務系統,對中間件技術很是感興趣,也會常常研究各類中間件的實現和功能。後來在 2013年時,爲了更深刻地學習研究中間件框架,轉到了螞蟻金服中間件團隊,從那個時候開始就一直在作 SOFA。服務器

目前魯直在SOFA的團隊主要負責的工做包括幾個部分。其中一個主要部分就是 SOFA 開源相關的工做。SOFA 的產品體系很是廣,包括已經對外開源的部分、內部整個微服務體系,以及 SOFA 框架等等——而這些開源相關的工做主要是由魯直負責推進的。微信

固然,做爲技術負責人,魯直既要帶技術團隊也要作技術工做。談及這一點,魯直說:網絡

「我以爲作技術管理,跟普通的管理不太同樣,由於技術管理最重要的一個點是除了管理以外,還要保持必定的技術判斷力和敏銳度。對一些新技術,包括團隊中遇到一些重大的技術問題,你都要有一些方向性的判斷。雖然最後不必定是你具體解決的,可是在整個團隊的技術攻堅和技術選型上,要一塊兒確立方向。」架構

我之前也作過十餘年的技術管理,我很可以感覺這種狀況,重大問題技術負責人更要迎難而上負載均衡

SOFA 5 落子 Service Mesh

就我瞭解的狀況,如今 SOFA 已經發展到了 SOFA5 了。在 SOFA4階段,主要的任務是將開源體系捋清楚了,而後開始按步驟地開源;到如今發展到了 SOFA5。我想知道從 SOFA4 發展到 SOFA5,是什麼讓螞蟻金服中間件團隊判斷 SOFA4 的階段性目標已經達成,能夠邁進到新的 SOFA5 階段了呢?框架

「從整個業界趨勢上來說,SOFA4 的架構相對來講仍是偏傳統一些,更可能是對咱們以前的技術框架的整理和梳理。在這個階段,SOFA 的代碼通過了很是多的優化和重構,才達到了對外開源的要求,從而 SOFA 走上了開源核心的模式,逐步分階段的將各個部分進行了開源。」魯直講到,「可是,從咱們對業界的總體判斷上來講,將來無疑是雲的時代,因此說要考慮怎麼讓全部的業務系統可以提供雲的能力,好比說 Serverless。」less

接着這個話題,魯直講了他對雲計算的理解:「一方面雲計算確定要爲整個業務的發展提供更加方便的基礎資源,能夠不用去關心底層的基礎設施。Serverless字面的意思就是說‘無服務器’——我不用關心服務器怎麼來的,不用關心基礎設施,只要關心業務代碼就能夠了。那反過來對於雲服務商來講,通過了這一層抽象,其資源利用率會更高,能夠有更多的利潤空間,這是一個共贏的局面。對於用戶來說,這種好處是實實在在的,能夠更少關注基礎設施,只關心代碼就能夠了。」分佈式

「咱們但願在 SOFA5 的方向上,在這個新的迭代中,去讓業務——包括讓將來咱們開源出來各類功能、各樣服務模式——都更多地去關心本身的業務代碼,而不用再過多地關心基礎設施。」魯直說,ide

在 SOFA5 中,一個重要的方向就是 Service Mesh這個方向,這將是 SOFA5 中很是重要的特性。魯直強調了其對 Service Mesh 技術的看好:「我認爲 Service Mesh 是邁向將來往前走的很是關鍵的一步,讓業務不用再關心基礎設施。經過 Service Mesh,咱們能夠將不少技術能力直接放到基礎設施裏面,而業務能夠不用感知到這一層。原來可能須要花幾個小時或者更多的時間解決的基礎設施問題,如今能夠經過 Service Mesh解決掉。」

「目前咱們咱們已經在生產環境中應用了 Service Mesh。咱們在這方面有很是大的決心,咱們但願可以在今年,在更大的範圍中去落地 Service Mesh。當前這個階段更聚焦在這種技術的內部落地上,但願用好了,再給社區作更多的貢獻。」

Service Mesh 這個詞最先是由開發 Linkerd 的 Buoyant 公司於 2016 年提出的,隨着 Linkerd 的傳入,Service Mesh 也進入國內技術社區的視野。Service Mesh 也被翻譯爲「服務網格」。Linkerd 則是業界第一個 Service Mesh。

Service Mesh是一個基礎設施層,用於處理服務間通訊,負責實現請求的可靠傳遞。在實踐中,服務網格一般實現爲輕量級網絡代理,一般與應用程序部署在一塊兒,可是對應用程序透明。

Service Mesh 的部署模型,有兩種狀況:

 對於一個簡單請求,做爲請求發起者的客戶端應用實例,會首先用簡單方式將請求發送到本地的 Service Mesh 實例。這是兩個獨立進程,它們之間是遠程調用。Service Mesh 會完成完整的服務間調用流程,如服務發現負載均衡,最後將請求發送給目標服務。這就是 Sidecar,它在原有的客戶端和服務端之間加多了一個代理。
 多個服務調用的狀況,Service Mesh 出如今全部的服務的下面,這一層被稱之爲服務間通信專用基礎設施層。Service Mesh 會接管整個網絡,把全部的請求在服務之間作轉發。在這種狀況下,上面的服務再也不負責傳遞請求的具體邏輯,只負責完成業務處理。服務間通信的環節就從應用裏面剝離出來,呈現出一個抽象層。

若是有大量的服務,Sidecar 之間的鏈接就會造成一個網絡,這個就是服務網格名字的由來。

Serverless這個概念雖然提出來已經有幾年了,可是尤爲在國內,Serverless、FaaS 這些技術的發展仍是相對比較滯後。

「咱們將以Service Mesh爲跳板再往前走。」魯直表示,「Serverless更多的仍是應該聚焦在其字面自己,其含義就是‘無服務器’,後面的技術都是爲了讓無服務器承載具體的業務。」

而目前AWS在Serverless和 FaaS方面處於比較前沿的位置,據我所知,國內的雲服務商在積極推動這方面,可是用戶普及程度彷佛不是特別高。

魯直指出,「我以爲Serverless想要成功,仍是要從覆蓋業務的整個廣度上打開,不然可能仍是停留在 FaaS 上,那場景就比較受限。」

Service Mesh 將是微服務的下一個時代,關於它還在持續進行理論研究和實踐探索。

魯直說:「坦白來說,我以爲istio的理念很是好,可是在整個工程設計上,若是放到螞蟻金服這樣體量較大的環境裏面,可能跑起來還須要作一些工做。咱們但願今年 Service Mesh 在螞蟻金服有了更大規模落地以後,能夠把咱們在 Service Mesh 方面的一些實踐經驗用到產品環境的工程中去實踐,而後貢獻出去。目前更多的一些工做,是將整個體系上進一步完善,鋪到更多業務上,而後將這些經驗反哺到整個 Service Mesh 的設計上,讓它走的更遠。」

也就是說,螞蟻金服在 Service Mesh 上跟 istio 的技術路線是一致的,可是會從工程的角度更多地推進它的發展。

魯直:「咱們但願可以在咱們進行了生產驗證以後,再慎重地推送給開源社區。這也是螞蟻作開源貢獻的一向理念——咱們但願一個東西通過了內部一段時間的成熟以後,再去開源。通過了大規模的內部驗證以後,它的穩定性上有了必定的保障,就貢獻給外部社區使用,再去拓展更多一些使用場景,包括完善和解決一些以前沒有遇到一些問題。」

協力 Seata 分佈式事務框架

2007 開始,螞蟻金服自主研發了分佈式事務中間件 XTS,在內部普遍應用並解決金融核心場景下的跨數據庫、跨服務數據一致性問題,最終以 DTX 的雲產品化展示並對外開放。

而與此同時,阿里巴巴中間件團隊發佈 TXC,爲集團內應用提供分佈式事務服務,通過多年的技術沉澱,於 2016 年產品化改造爲 GTS,經過阿里雲解決方案在衆多外部客戶中落地實施。

2019 年 1 月,基於技術積累,阿里巴巴中間件團隊發起了開源項目 Fescar,螞蟻金服也開源了本身的分佈式事務框架,並與 Fescar 合併一塊兒共建分佈式事務解決方案。這個發展既在情理之中,也在乎料以外,我確實好奇這期間發生了什麼,是如何和 SOFA 中間件團隊的發展結合的,他們下一步會有什麼計劃?

魯直說:「分佈式事務是螞蟻金服在 2007 年作的創新,是基於TCC 原理,咱們在內部實現了這個模式。TCC 理論相對仍是比較簡單的,可是它要落地,須要花費比較長的工程實現上的打磨才行。分佈式事務這個技術在螞蟻金服已經走過了12年的時間了。在螞蟻金服最核心一些業務上,包括支付、交易、帳務等等系統都在使用這套分佈式事務框架解決和孵化的。」

在分佈式事務這一塊領域上,在業界來看目前相對來講比較空白,尚未很是好的分佈式事務框架。提及來合併的初衷,魯直表示,「既然阿里巴巴和螞蟻金服都在這個方向作了一些開源的工做,因此咱們把這兩個部分的努力結合起來,取長補短,以適用於更多的分佈式事務業務場景,螞蟻金服加入 Seata 社區共建,在 Seata 0.4.0 版本中加入了 TCC 模式,爲你們提供一個更加寬泛的分佈式事務的解決方案。」

具體來講,「阿里巴巴的 Seata 提供是 AT 模式,對業務來講,不用有太多感知,可是它覆蓋的場景有限,若是能夠接受這樣的狀況,用 AT 模式更好。而螞蟻金服由於有更強的金融方面的要求,就須要採用 TCC 模式,業務接入成本更高,可是它能作到很是好的分佈式執行。將來還會提供像 XA 這樣的模式,去適應更寬泛業務場景,這在這一塊上,螞蟻金服和阿里巴巴會結合在一塊兒提供一個融合的框架。」

Seata 爲解決微服務架構下的分佈式事務問題交出了一份不同凡響的答卷。而 Seata 的願景是讓分佈式事務的使用像本地事務的使用同樣簡單和高效,但願可讓 Seata 適用於全部的分佈式事務場景。

螞蟻金服如何作開源

做爲開源核心模式的項目,我但願瞭解螞蟻金服中間件的開源通常會作哪些工做,是否有比較完善的流程和規則?

「首先,最基礎的確定是代碼,並提供對應的示例,而後咱們會提供貢獻者指南這樣的指引文檔,由於本質上咱們但願打形成一個開源社區,社區的參與度對咱們來講是很是重要的東西,有人會上來提issue,也有人來解答,有人提功能需求,有人提 PR 等等」,魯直說。

Linux中國曾經開發過一個用於測算開源項目活躍度的一個模型,咱們認爲從過去感性地看一個開源項目是否是活躍,已經開始逐漸進步到經過理性數據評估了,可是這須要排除一些數據做弊的狀況,就像以前不少人會用項目的星標數來評估項目的活躍度,這固然很粗糙。咱們今年還會繼續配合 2019年度的開源年報,而提供數據支持,到時候咱們確定會給 SOFA 相關的項目作一個考察。但願能夠切實地反映出來 SOFA 在開源方面的工做。

從以前的脈絡上看,到了 SOFA5,還會繼續沿襲開放核心的模式,即:核心部分開源,與本地業務強關聯,可是跟核心不是強關聯的部分不開源。

而對於開源核心模式,有人唱衰,也有人說好,各類觀點都有。但從螞蟻金服自身的實踐來看,他們已經切實地踐行了開源核心模式,這是我在國內第一個深刻了解過的真實落地的開源核心模式項目。

說到開源模式,魯直表示:「作開源,我以爲首先確定要作一個心理準備,就是說你要有一個核心部分,再在這個基礎上作擴展,在維護的成本上確定有必定的上升,可是你要接受這樣的成本——我以爲這種成本是能夠接受的。……項目自己要設計好,具有必定分拆的可能性。若是不具有分拆可能性,那無法作了。像微內核這樣的設計方式就會比較適合——就是開源一個核心模塊,而後再去擴展,各類模塊是可插拔的。」

而對於開源工做是如何作的,魯直說:「咱們沒有專門作開源的人,也沒有專門作內部代碼的人,咱們是把這兩部分放在一塊兒,既作開源又作內部代碼,由於這樣一個好處是,既熟悉外部的代碼,又熟悉內部的代碼,這個邊界本身能夠把握比較好。咱們更可能是制定一些規則。好比說跟業務層強相關的部分,你開源出去也沒人用;若是說跟業務不相關的,你爲何不開源?由於你開源的這個產品想要作得更好,這些能力開源出去其實沒有太大問題,因此通常咱們的標準就是看是否是跟內部系統相關,是否是跟業務強相關,若是不相關就能夠開源。」

談話中,魯直反問的「你爲何不開源?」這句話讓我印象深入,這其實表明了他們開源的初心,可是從商業者從公司的角度來講,開源有沒有給公司帶來真正的好處?這不只僅是情懷的問題,我相信每個熱愛開源的人,其實存在開源情懷或者是更理想化的想法,可是從另外一方面來講,不管是從公司的機制上,仍是公司的業績上,開源仍是要有實實在在的收益,可以推進公司業務發展才行。做爲一個開源項目的負責人,他是怎麼感覺到開源的好處呢?

對這個問題,顯然他有過成熟的思考:「第一,最直接的好處就是更長效。從眼前看,你的名聲出去了招聘是否是也容易找到更合適的人?這是最短時間的收益。長期的好處,開源社區裏面你們分享了很是多的觀點,從實踐來看,也是這樣。好比說你在一家公司裏面去作的話,公司的業務場景是有限的,雖說螞蟻金服覆蓋了各類各樣的業務,金融方面的基本上全覆蓋了。可是其餘的行業不必定都有,他們遇到這個問題,咱們可能並不會遇到,但這些問題多是將來可以遇到的,若是把一個項目以開源的方式運做,就意味着說,更大的用例場景更容易發現 bug,用的人越多,越有可能會觸發這個bug,那對於就是有了進一步完善的可能。

另外,有了這樣的一個社區化的發展,有更多人蔘與進來以後,這個項目能夠更快往前發展,而不是隻有你本身在。在一家公司裏邊,團隊的人員數量確定是有限的,而有這麼多人來參與,那對於這個項目的往前演進來講有很是大的好處,反過來對公司也會帶來更多好處——不管是潛在的仍是直接的。

最後,若是你的產品有商業化的支持,好比說其餘系統的支撐,也可以更好提供商業化的支持。」

SOFA開源以來,就我目前瞭解到的狀況,大概已經有30家左右的企業用戶在使用這套開源框架——就是直接拿開源的部分去用了。固然這主要是國內的用戶,那麼在國外影響力沒有像國內這麼大的緣由在哪兒呢?是由於咱們的項目不夠國際化呢,仍是知道這個框架的人不夠多呢?

魯直說:「我以爲多是兩方面的緣由。一方面,咱們的確在國際化方面作的並非不少,在今年咱們會去嘗試作更多的國際化工做。另一方面,更多的是文化方面的差別,你們的思惟方式可能不太同樣。固然咱們會嘗試走一下國際化的路線,由於開源原本就是不分國界的。」

進一步的 SOFA在社區治理這方面,「咱們但願可以採用和參考 Apache 基金會的方式,這是一個很完善的治理模式,咱們會嘗試採用這樣的方式去社區治理。這對於國際化產品是有不少好處的,它更多強調的是一種治理模式,是否是以社區的方式在運做,是否是在尊重整個社區等等。」魯直表示,「咱們會考慮跟 Apache基金會、CNCF進行直接接觸,若是合適的話,咱們會捐獻項目給基金會。若是隻是一家商業公司而沒有基金會的支持,你們也會有更多的顧慮。把項目捐獻給基金會,給你們更多的信心,經過基金會的託管,讓更多一些參與方參與,而不僅是有螞蟻金服,你們也會有更大的信心參與進來。」

最後,魯直但願致語開源社區,「其實螞蟻金服開源的東西,也不僅是 SOFA 中間件框架,將來會開源更多的東西,包括 AI 方面的一些技術,也但願整個社區可以多關注螞蟻金服在開源上面將來的舉措。」


原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索