1. 程式人生 > >ServiceComb梅開二度,強勢殺入的微服務開源新勢力

ServiceComb梅開二度,強勢殺入的微服務開源新勢力

【北京,2018年3月22日】在北京國家會議中心舉辦的“2018全球雲端計算開源大會”上,華為開源的微服務框架ServiceComb憑藉良好的社群生態、獨特的技術創新以及豐富的應用案例,榮獲2018“OSCAR開源技術創新”獎,該專案的負責人姜寧也榮獲2018“OSCAR開源人物獎”。

ServiceComb是華為雲於2017年6月開源的微服務框架,並於2017年12月正式進入Apache軟體基金會孵化。其包括一站式的服務註冊、服務治理、動態配置功能,具備服務化契約增強、多語言SDK支援、多通訊協議支援等優勢特性, 並提供SAGA資料最終一致性方案解決微服務架構資料一致性難題。ServiceComb 相容Spring Cloud等業界流行微服務框架,互通業界生態。ServiceComb的專案發起人和負責人姜寧為華為開源能力中心技術專家及華為PaaS領域開源專家,擁有多年參與Apache中介軟體專案的經驗並指導多個Apache孵化專案,熟悉開源社群開發流程,對微服務及SOA均有較深入研究。

ServiceComb源自華為雲企業級微服務引擎CSE,並應用在華為雲微服務雲應用管理平臺ServiceStage之上。ServiceComb作為華為微服務引擎CSE核心,已在華為流程IT、各產品線雲化、消費者雲等眾多重大專案上成功穩定商用,並幫助包括軟通動力、中軟國際、綠城盟拓、南京奇蛙智慧科技有限公司等企業完成應用微服務改造,加速其業務上雲並幫助實現高效的運維管理。

作為Apache 軟體基金會正式孵化專案, ServiceComb遵循Apache中立、開放、多樣性原則,目前已有大量開發者參與社群貢獻。希望未來有更多的企業及開發者參與ServiceComb社群,集合力量構建一個開放、高效的微服務框架,為Apache開源生態貢獻力量。

ServiceComb開源專案繼去年12月進入Apache軟體基金會孵化器後,今天梅開二度,專案獲得2018“OSCAR開源技術創新”獎,專案負責人及專家姜寧獲得2018“OSCAR開源人物獎”,CSDN 特約該專案負責人進行了專訪。

專訪嘉賓 | 姜寧
作者 | 錢曙光

伴隨著容器、雲與DevOps等技術/理論的快速發展,微服務構架在今天已然成為主流,有分析稱目前有70%的公司使用微服務方式開展專案。微服務架構通過將服務細粒度拆分,使系統演進的各個環節如應用與資料庫、開發與治理、系統與具體開發團隊之間鬆耦合,降低了複雜性,提高了開發與運維的效率。而微服務框架在這其中扮演了舉足輕重的角色,它將實現微服務架構的過程中所涉及的服務發現、熔斷容錯、通訊機制與監控等環節封裝,使得微服務架構的構建變得簡單、高效。

說起微服務框架,目前市面上除了比較知名的諸如BDF、HSF、Dubbo、Spring Boot、Spring Cloud等,還有各個公司自行研發的相關框架,數不勝數,其中開源者眾多。

2017年6月,華為正式開源其微服務框架ServiceComb,為該領域再添一員悍將,這個專案很快於12月份以全票通過的方式進入Apache軟體基金會孵化器。這也是華為繼CarbonData之後,第二個進入Apache孵化的開源專案。

在如今開源框架林立,並且分佈格局漸成的微服務市場,華為此次強勢殺入的ServiceComb有什麼底氣,它在技術上有哪些特點與亮點?對於開發者來說,為何需要去關注這麼一個新框架呢?而近期勢頭逐漸上來的微服務新模式Service Mesh吸足了技術人員的眼球,它號稱“下一代微服務架構”,那麼它在ServiceComb中是否有相應的體現?我們採訪了ServiceComb專案負責人姜寧,希望藉此為讀者分享此專案的意義,並深挖其相關技術點。

CSDN:請介紹一下ServiceComb專案的相關情況。

姜寧:微服務作為新興的架構方式已經被業界廣泛採納,大家在實踐微服務架構的過程中,或多或少會藉助一些框架或者構建基礎平臺方式來降低微服務架構的開發難度,實現自己的業務述求。ServiceComb是一個微服務框架,它能夠幫助企業快速構建雲原生應用,通過一系列解決方案幫助使用者快速開發微服務應用的同時實現對這些微服務應用的高效運維管理。

當前微服務領域的開源解決方案林立,ServiceComb會盡最大努力去和這些開源解決方案融合。現在也有越來越多的中國企業擁抱開源,成為開源社群的貢獻者和受益者。我覺得好的東西是需要分享的,技術一旦封閉就容易閉門造車;開源出來,可以在開源社群裡打磨共建,不斷演進,這也是此次我們開源ServiceComb的一些想法。

ServiceComb本身有強大的技術背景和團隊,它源於華為雲CSE微服務引擎(Cloud Service Engine)平臺。CSE在華為公司內部商用了3年多時間,沉澱了電信行業高效能、低延時能力,歷經華為VMALL商城的歷練,積累了華為公司內部微服務化架構演進的經驗。華為手機的超級應用智慧助手擁有億級使用者體量,穩定、可靠、敏捷地執行在CSE上,CSE全天候高效支援應用市場高達6500萬日活和雲端相簿每日新增相片4200萬體量,支援日均數億次請求。CSE自身的的開發模式門檻低、通用性強、服務介面規範統一、嚴格遵循微服務設計理念等特點使能智慧助手業務實現快速上下線釋出,化繁為簡,更簡單高效實現降級熔斷、彈性伸縮和故障遷移等運維治理能力,縮短迭代開發週期,使能該業務SLA提升到99.96%。ServiceComb與CSE同源,越來越多的ISV、傳統企業與CloudNative企業選擇使用ServiceComb。

目前CSE的Java開發包和Golang開發包都已經在ServiceComb專案中開源,Java 開發包部分已進入Apache軟體基金會孵化,Golang開發包部分也在不斷開發完善中,不久也將啟動Apache軟體基金會捐贈流程。CSE在Golang開發包的基礎上實現了Service Mesh以提供非侵入式的微服務方案並上線華為雲,於去年12月在ArchSubmmit大會上介紹了相關工作成果,不久的將來,Service Mesh實現也會在ServiceComb專案中開源。

由於ServiceComb和華為雲CSE的開發包同源,所以是同班人馬在進行開源版本和商業版本的開發,成員主要分佈在北京和深圳。我在來華為之前就職於紅帽軟體,先後參與了Apache CXF、Apache Camel與Apache ServiceMix的社群專案,對社群化開源開發模式比較熟悉,目前ServiceComb專案由我負責,而它的開源運作方式,完全按照Apache開源專案運作方式進行,除了專案程式碼公開在GitHub上,專案設計討論以及相關的決策都會郵件列表中公開進行。

Apache軟體基金會作為目前世界上最大的開源組織,創立20多年來除了定義了現在廣泛使用ALS2.0 開源協議,同時積累了一套開源社群發展治理的成功經驗,現在每天幫助6萬多的開發者在300多個專案中進行相關開源開發工作。ServiceComb進入Apache孵化器的主要目的也是想向Apache學習好的社群運營方式,建立健康的開源社群生態,為廣大的微服務開發者提供一套簡便易用的開源解決方案,讓雲原生應用開發和治理更簡單。

專案地址:

目前ServiceComb在Apache孵化的子專案有:

CSDN:它的整體架構是怎麼樣的?具體分析一下。

姜寧:目前ServiceComb主要包含的是Java底座(Chassis),整個語言開發包包含服務契約、程式設計模型、執行模型與通訊模型四個部分。

這裡寫圖片描述

Chassis是Chris Richardson提出一種微服務模式,它可以使使用者在構建微服務的過程中,只聚焦於業務邏輯本身,而不需要去處理日誌、外部配置、分散式追蹤等環節,Chassis將這些環節交給專門的框架來處理。

服務契約: ServiceComb通過服務契約支援Java、Go語言底座開發的服務可以相互訪問。服務契約是建立在OpenAPI基礎之上的,OpenAPI規範是Linux基金會的一個專案,通過定義一種用來描述API格式或API定義的語言,來規範RESTful服務開發。Open API提供了一套比較完整的開發工具鏈,在服務契約的基礎上我們可以自動生成服務文件,服務呼叫開發包以及服務呼叫測試程式碼。

程式設計模型: Java語言底座支援多種RESTful服務的程式設計方式,即支援應用廣泛的Spring MVC與JAXRS程式設計模型,也支援POJO + 服務契約的開發方式來描述RESTful服務。由於在Java Chassis先將這些程式設計模型轉換成為服務契約Swagger物件,然後交由內部執行模型以及通訊模型進行處理, 所以Java Chassis並不依賴Spring MVC以及JAXRS的底層實現。目前Go Chassis和Java Chassis支援RESTful級別的互聯互通。

執行模型:大家在開發應用的過程中,會有很多服務擴充套件的需求,例如根據使用者身份認證資訊,對服務呼叫進行認證。Chassis架構支援在執行時通過配置處理鏈(handler)的方式來進行服務擴充套件。ServiceComb預設提供服務發現、容錯熔斷以及呼叫鏈追蹤等處理鏈。使用者可以通過配置檔案的方式,在應用啟動的時候載入對應的處理鏈。

通訊模型:語言底座通過通訊模型對外進行互動,其中包含了訊息序列化和反序列化的模組以及底層傳輸的模組。值得一提的 Java Chassis的通訊模型是建立在Vertx基礎之上了,內部已經完全非同步化了,微服務在全非同步工作模式下有很高的效能。

CSDN:與目前市面上已經流行的各種微服務框架,如Spring Boot、Spring Cloud、Dubbo等相比,ServiceComb與它們的差異性主要體現在哪裡呢?優勢又是什麼?

姜寧:目前市面上的微服務框架的確很多,前面列舉的這些都是基於Java語言的。ServiceComb與之對應的是Java Chassis這個子專案。ServiceComb是想做成一個更加全面、橫跨多種功能與語言的框架,讓使用者可以有更多選擇的空間。我覺得一個好的框架要保證使用者在使用的過程中不喪失控制權,客戶可以根據自己的實際情況對框架進行定製。這裡我們即提供了侵入式的底座框架,也結合多語言以及歷史遺留系統改造的需要提供非侵入的Service Mesh的實現。下面從幾個部分來說明一下ServiceComb的特點:

Java Chassis——Java 底座

ServiceComb Java Chassis通過引入Vertx在內部構建非同步呼叫核心,極大地提升了系統執行效率。同時我們針對企業應用開發的管控需要引入了服務契約這個概念,通過服務契約,我們不但可以在服務開發階段對服務的消費方和提供方的服務進行管理,而且可以在服務執行維護階段對服務的請求的路由、轉發以及呼叫進行精細的控制。

ServiceComb Java Chassis並不直接依賴於Spring Boot或者 Spring Cloud,而是通過Starter的方式與Spring Boot、Spring Cloud進行整合,這樣使用者可以自由地選擇是否使用Spring Boot或者Spring Cloud來開發ServiceComb的應用。

如果使用者想在Spring Boot使用ServiceComb Java Chassis開發包的功能, 可以直接引入ServiceComb Stater並定義@EnableServiceComb的方式。在ServiceComb Java Chassis中,我們還針對Spring Cloud提供了DiscoveryClient starter,以及Configuration starter,這樣使用者只需在專案中加入相關的starter依賴就可以使用ServiceComb提供的服務註冊中心或者CSE的商業配置中心。

Service Center——服務註冊中心

ServiceComb的服務註冊中心是一個採用Go語言構建的、建立在etcd儲存基礎上的高效能、高可用的服務註冊中心。在提供服務例項註冊的基礎上,我們還針對服務契約進行相關的擴充套件,使用者不但可以通過服務中心瞭解服務例項的執行情況,還可以通過服務中心提供的監控介面對應用服務進行呼叫。

Saga——分散式事務最終一致性解決方案

ServiceComb Saga是針對微服務分散式事務最終一致性問題提供的解決方案。Saga分散式事務是由多個相關聯的的本地事務操作所組成。Saga協調器負責保證Saga事務的最終一致性。當本地事務執行出錯時,Saga協調器會自動執行相關的恢復操作保證分散式事務的最終一致性。相比其它的分散式事務一致性方案,Saga在簡化事務配置以及提供多種事務恢復機制上有很明顯的優勢。目前開發的ServiceComb Saga 0.1.0支援使用者通過Annoation的方式定義事務操作以及撤銷事務操作的服務介面, 同時Saga協調器監控追蹤事務的執行情況並負責協調事務執行者,保證事務的最終一致性。

CSDN:ServiceComb目前有什麼地方最亟待完善?

姜寧: ServiceComb專案開源出來時間並不長,但目前在積極完善中,今年會在Reactive支援、Saga以及Service Mesh等方面不斷演進。這裡也希望有越來越多的微服務志同道合者能夠加入到ServiceComb社群,一起把ServiceComb專案做得更好。

CSDN:方便預告一下近期關於ServiceComb的計劃嗎?

姜寧:我們準備在3月底釋出ServiceComb進入Apache孵化的第一個版本,其中包含了Java Chassis的自動Metric監控、面向開發者的非同步呼叫介面,以及與開源的配置中心Apollo的整合。對於Saga,我們將釋出架構調整後新一版本Pack,使用者通過定義Annotation的方式就可以進行Saga事務的描述。近期會公開公佈整個社群發展路線圖,並舉辦全方位的社群線上和線下會議,在開源社群和企業及開發者共同探討和實現微服務化演進。

ServiceComb交流

大家可以通過存檔郵件檢視,及時瞭解我們的專案進展,同時也可以給
[email protected]發郵件,然後回覆確認郵箱郵件之後就可以通過[email protected]在郵件列表中與我們交流互動了。

2018年我們也會定期舉辦線下的Meetup活動,歡迎有志於微服務專案開發的同學與我們互動,並加入到我們的社群開發中來。大家也可以通過新增ServiceComb的微信小助手(微訊號ServiceComb,或掃描以下二維碼),諮詢或加入ServiceComb微信社群:

這裡寫圖片描述

嘉賓介紹:姜寧,華為開源能力中心技術專家,華為PaaS開源領域專家,目前在華為負責Apache ServiceComb(incubating)開源專案。前紅帽軟體首席軟體工程師,十餘年企業級開源中介軟體設計開發方面經驗,豐富的Java語言經驗,函數語言程式設計愛好者。

從2006年開始一直從事Apache開源中介軟體的專案工作,先後參與Apache CXF、 Apache Camel、Apache ServiceMix以及Fuse ESB等專案,對微服務架構、WebServices、Enterprise Integration Pattern、SO與OSGi 均有比較深入的研究。