【ServiceComb】紮實做微服務,認真做開源
5 問ServiceComb
微服務 ServiceComb 是誰?
ServiceComb取名寓意蜂巢,是微服務開源專案,Apache軟體基金會孵化專案,其源自ServiceComb商業版華為雲微服務引擎CSE,於2017年5月開源開放。原主體程式碼於2007年12月由華為捐贈給Apache,是全球首個進入Apache軟體基金會孵化的微服務開源專案。其提供一站式開源微服務解決方案,融合SDK框架級、0侵入ServiceMesh場景並支援多語言。
ServiceComb目前擁有三個主要的子專案,分別為:
Java chassis
https://github.com/apache/incubator-servicecomb-java-chassis
開箱即用Java語言 微服務SDK,含服務契約、程式設計模型、執行模型與通訊模型四個部分,具備負載均衡、容錯熔斷、限流降級、呼叫鏈追蹤等全面微服務治理能力,服務治理能力與業務邏輯隔離。
Service Center—服務註冊中心
https://github.com/apache/incubator-servicecomb-service-center
基於Etcd的高效能、高可用、無狀態的Golang版分散式服務註冊與發現中心,可實時服務例項註冊、實時服務例項推送和服務間契約測試等。
Saga—分散式事務解決方案
https://github.com/apache/incubator-servicecomb-saga
ServiceComb Saga是提供了分散式事務最終一致性解決方案,使用者只需要通過註解方式定義事務的執行方法以及撤銷方法,Saga框架會自動保證分散式事務執行的最終一致性。
微服務 ServiceComb 為何要開源?
不得不說,ServiceComb在開源之前,業界就已有多個流行的開源微服務/RPC框架,ServiceComb從開源之前,就一直面臨華為內外部的一個挑戰問題:業界已有RPC/微服務框架,為何還要開源多一個微服務專案出來?
最終大家歸結到ServiceComb當前的願景:致力於幫助企業、使用者和開發者將企業應用輕鬆微服務化上雲,並實現對微服務應用的高效運維管理。
ServiceComb是華為微服務的事實標準。自家的降落傘自己先跳,華為從2012年開始就已在許多創新專案裡使用微服務技術,在往後的幾年時間裡,技術在自身的業務磨鍊下愈加成熟,工具愈加完善,開始在華為的各大產品線大規模推廣開。至今,華為消費者雲、華為雲核、華為雲EI、華為雲安全等都使用ServiceComb作為微服務場景的開發框架。ServiceComb在開源之前就已經商用了3年+時間,該商用版本承載了多年華為自身業務進行雲化轉型的技術沉澱和歷史經驗。
隨著雲化和網際網路技術發展,“天下武功,唯快不破”—需求和業務快速上線交付到客戶手中,成為企業的核心競爭力, 遊戲等生活娛樂類應用的普及使業務流量的波峰波谷差距愈加明顯,微服務架構的彈性伸縮和適合Devops等特點,使微服務化成為企業雲化轉型的第一步。然而,微服務也無不例外具有它的兩面性,華為在自身的微服務化過程中,歷經了諸多考驗,總結了微服務化的系列挑戰,如,服務粒度細導致團隊協作困難,常規微服務化手段效能低導致整體資源利用率低,問題定位困難導致運維成本高,等等,華為將這些總結經驗都沉澱到了ServiceComb。開源ServiceComb,最基礎的想法是它是一個經過華為內部業務廣泛驗證的微服務轉型利器,希望捐出來能對企業、使用者和開發者貢獻一點自己的力量;其次是如今的微服務生態發展較好,希望可以聯合眾多開源愛好者和微服務開發者一起將微服務這個生態完善得更好。
微服務 ServiceComb 有哪些技術優勢?
ServiceComb基於自身的願景,一直堅持“將複雜扔給自己,將極簡留給使用者”,在設計上不斷追求能最簡單化為使用者帶來價值,如下粗略地總結了幾點:
開箱即用
(一)開箱即用:集服務註冊、發現、通訊和微服務治理能力為一體,並預設提供集中化配置,結合腳手架能力,實現微服務治理能力0編碼,開發人員簡單配置即可使能微服務常見功能。
ServiceComb java-chassis-dependencies集中管理了所有必須的依賴,start.servicecomb.io生成出來的專案既包含示例程式碼,也包含必要配置的以及微服務治理所需的配置,批量生成所有的微服務後,使用者只需要專注於填充業務程式碼。完成開發後,部署ServiceCenter,啟動微服務,一個良好的微服務業務系統就運轉起來了,之後只需要專注於運維,後期也可通過動態配置,隨時修改配置值調整治理能力。
ServiceComb內建覆蓋了微服務下絕大多數場景的流量控制、容錯熔斷、限流降級、故障注入等治理和管控能力。內建支援包括RoundRobin、Random、WeightedResponseTime、SessionStickiness在內的豐富的負載均衡策略,與服務中心ServiceCenter配合,實時感知微服務例項的狀態變化,靈敏調節負載。
ServiceComb內建輕量級高效能邊緣服務,支援Producer端治理,結合擴充套件路由能力和動態配置能力能輕鬆實現灰度釋出、A/B測試等關鍵特性,在業務實測中,在同等資源使用下吞吐能力是業界常規方案的2.8倍。
在奇蛙智慧科技無人機業務的實踐中,基於ServiceComb的開箱即用能力,團隊開發效率提升1倍,節點擴充套件部署效率提升2倍+。
第一個實現純非同步核心
(二)第一個實現純非同步核心的微服務框架:實現超低呼叫時延和高吞吐能力,高效能。ServiceComb底層基於vertx,但在vertx之上進行了進一步封裝,同時支援非同步及同步模型。
非同步模型下,業務邏輯直接在eventloop中執行,整個業務流程中沒有執行緒切換,所有的等待邏輯都是非同步的,只要有任務,則不會讓執行緒停下來,充分、有效地利用系統資源。
同步模型下,一個微服務程序中,為transport建立了一個獨立的vertx例項;Eventloop是vertx中的網路、任務執行緒;一個vertx例項預設的Eventloop數為:
2*Runtime.getRuntime().availableProcessors()。
此外,ServiceComb還通過不斷優化,提供了多執行緒池和隔離倉等相關技術,可在微服務、介面和方法三個維度上進行執行緒配置並實現不同業務之間的互相隔離。
華為消費者雲使用ServiceComb實現1500+叢集節點規模的微服務以支援4億手機使用者線上,QPS提升2倍+,時延降低45%,從而節省大量硬體資源。
兩種微服務化方式並存
(三)同時支援框架式SDK和Service Mesh 0侵入微服務化兩種方式,實現兩種微服務化方式運維管控統一,降低使用者運維管控成本。
梅斯醫學的業務在架構選型上選擇了Java作為其新業務軟體開發的語言,而其卻擁有大量的PHP存量業務應用,使用ServiceComb的這種能力實現了不同業務的混合部署並協同治理,以實現其基於存量業務的快速業務創新和多語言支援。
唯一一個實現契約和程式碼雙向自動生成
(四)基於Swagger實現契約和程式碼雙向自動生成
ServiceComb是目前全球唯一 一個基於Swagger實現通訊模型與程式設計模型分離的微服務專案,程式碼自動生成契約可以實現微服務治理能力與業務程式碼隔離以使能應用開發人員僅需專注業務邏輯,契約自動生成程式碼以更好地支援Devops實踐和團隊協同。
微服務化不是一個單點的技術問題,而是涉及到技術、組織和流程變革。在團隊協作上,不論是程式碼先行還是介面先行,都使用統一標準,通過Swagger線上管理API,服務端和客戶端各自基於API定義介面生成程式碼和模型,實現客戶端和服務端鬆耦合,測試根據API生成測試用例,以防止開發人員繞過線上API定義私自修改介面,設計、開發和測試遵循統一線上API,保證介面、程式碼、文件的一致性,進而使能基於Devops的流水線團隊協作開發效率大大提升。
分散式事務最終一致性聯合創新
(五)分散式事務最終一致性:ServiceComb聯合京東金融 雲和中國人保進行創新,提供分散式事務最終一致性解決方案,解決微服務場景下不能依靠單一資料庫來實現跨服務事務一致性的難題。使用者只需要通過註解方式定義事務的執行方法以及撤銷方法,Saga框架會自動保證分散式事務執行的最終一致性。
微服務ServiceComb 開放度如何?
華為微服務沉澱程式碼無保留地開源到ServiceComb,ServiceComb由華為微服務ServiceComb開源已近一年半,進入Apache孵化已近10個月時間,孵化期間堅持“Apache Way”,堅持開放、中立、標準、多樣化等原則,月均Release1個Apache孵化器軟體版本的速度發行版本,8個月共Release 8個軟體版本。
ServiceComb與業界流行生態互通:Zipkin、Skywalking、Prometheus等Tracing/APM生態,Apollo配置中心生態,Istio生態,K8S生態,Spring、SpringCloud等流行開源框架。
開源以來,ServiceComb社群在IT大咖說、Spring Summit、ArchSummit、kubecon、Qcon、LC3、開源中國源創會、Devops沙龍、OSCAR峰會等各類會議中都進行了多次宣講,並多次舉辦主體Meetup,完全公開技術路線和細節。
ServiceComb更是中國微服務行業標準制定的核心框架參考,ServiceComb 團隊作為核心成員深度參與了此次業界首個微服務行業標準意見稿的撰寫,已由信通院於8月份釋出,ServiceComb也將繼續參與該標準規範終稿制定,從而進一步深化微服務在行業中的應用,促進行業健康發展。
誰在做 微服務ServiceComb?
ServiceComb始終保持初心,希望能協同開源和業界的力量,在自己的技術積累基礎上繼續將微服務行業發展壯大,為企業、使用者、和開發者做些實事,在推廣 ServiceComb 社群的過程中,不僅僅推廣技術,更是堅持同時佈道微服務理念、微服務方法論和Apache開源文化,希望能竭盡所能在吸取業界智慧的同時為業界儘可能地多做貢獻。
ServiceComb 秉持著赤誠之心,許多企業使用者陸續選擇使用ServiceComb,覆蓋了覆蓋IOT、生物醫藥、金融保險、網際網路、地產、教育、高校等行業,華為消費者雲使用其實現1500+叢集節點規模的微服務以支援4億手機使用者線上,同濟大學使用其作為AI人臉識別基礎框架,中國人保使用其作為數字化轉型的基礎框架,教育培訓機構傳智播客使用其作為微服務教程,新型企業奇蛙智慧科技基於其實現無人機智慧控制大腦,梅斯醫學使用其實現混合部署協同治理能力實現快速業務創新......
ServiceComb社群也日漸活躍,近8個月時間共接收來自各企業的貢獻者們的3300+個提交。
在各開源愛好者和微服務開發者的支援下,在Apache導師們的指導和Apache社群志願者的幫助下,ServiceComb在Apache的孵化也一步一個腳印,穩健發展,目前已啟動頂級專案的畢業程式。
不可否認,ServiceComb 不是業界第一個微服務開源框架,也沒有如其他RPC框架等擁有較久的開源歷史,ServiceComb在開源社群的每一步發展都離不開開源愛好者和微服務開發者的支援,ServieComb社群唯一能做的是恪守原則,始終如一地保持初心。
致謝過去和現在已關注或貢獻ServiceComb的你們,也期待未來有更多的你我他一起共建微服務生態和開源社群,相信只要ServiceComb堅持認真地做開源,紮實地做微服務,ServiceComb必將永不孤單。
ServiceComb Meetup - 華為全聯接大會
開源愛好者和微服務開發者們福利來襲,
Apache 基金會董事 Roman Shaposhnik,
Apache 孵化器主席 Justin Mclean,
Apache 祕書長和贊助商大使 Craig Russell,
Apache 成員及 ServiceComb 負責人姜寧……
全球最大的開源軟體基金會Apache的大咖們和ServiceComb社群管理委員會成員們齊聚一堂,於10月12日在2018華為全聯接大會,上海世博中心416+417會議廳舉行Apache ServiceComb Meetup,將從多維度帶來乾貨滿滿的精彩技術和實踐分享。
時間:10月12日 13:30-16:50
地點:上海世博中心 416+417會議廳
長按識別以下二維碼,觀看線上直播
長按以下二維碼,加入ServiceComb討論群