ServiceComb取名寓意蜂巢,是微服務開源項目,Apache軟件基金會孵化項目,其源自ServiceComb商業版華爲雲微服務引擎CSE,於2017年5月開源開放。原主體代碼於2007年12月由華爲捐贈給Apache,是全球首個進入Apache軟件基金會孵化的微服務開源項目。其提供一站式開源微服務解決方案,融合SDK框架級、0侵入ServiceMesh場景並支持多語言。java
ServiceComb目前擁有三個主要的子項目,分別爲:git
Java chassisgithub
https://github.com/apache/incubator-servicecomb-java-chassis數據庫
開箱即用Java語言 微服務SDK,含服務契約、編程模型、運行模型與通訊模型四個部分,具有負載均衡、容錯熔斷、限流降級、調用鏈追蹤等全面微服務治理能力,服務治理能力與業務邏輯隔離。apache
Service Center—服務註冊中心編程
https://github.com/apache/incubator-servicecomb-service-center安全
基於Etcd的高性能、高可用、無狀態的Golang版分佈式服務註冊與發現中心,可實時服務實例註冊、實時服務實例推送和服務間契約測試等。網絡
Saga—分佈式事務解決方案多線程
https://github.com/apache/incubator-servicecomb-saga架構
ServiceComb Saga是提供了分佈式事務最終一致性解決方案,用戶只須要經過註解方式定義事務的執行方法以及撤銷方法,Saga框架會自動保證分佈式事務執行的最終一致性。
不得不說,ServiceComb在開源以前,業界就已有多個流行的開源微服務/RPC框架,ServiceComb從開源以前,就一直面臨華爲內外部的一個挑戰問題:業界已有RPC/微服務框架,爲什麼還要開源多一個微服務項目出來?
最終你們歸結到ServiceComb當前的願景:致力於幫助企業、用戶和開發者將企業應用輕鬆微服務化上雲,並實現對微服務應用的高效運維管理。
ServiceComb是華爲微服務的事實標準。自家的降落傘本身先跳,華爲從2012年開始就已在許多創新項目裏使用微服務技術,在日後的幾年時間裏,技術在自身的業務磨鍊下越發成熟,工具越發完善,開始在華爲的各大產品線大規模推廣開。至今,華爲消費者雲、華爲雲核、華爲雲EI、華爲雲安全等都使用ServiceComb做爲微服務場景的開發框架。ServiceComb在開源以前就已經商用了3年+時間,該商用版本承載了多年華爲自身業務進行雲化轉型的技術沉澱和歷史經驗。
隨着雲化和互聯網技術發展,「天下武功,惟快不破」—需求和業務快速上線交付到客戶手中,成爲企業的核心競爭力, 遊戲等生活娛樂類應用的普及使業務流量的波峯波谷差距越發明顯,微服務架構的彈性伸縮和適合Devops等特色,使微服務化成爲企業雲化轉型的第一步。然而,微服務也無不例外具備它的兩面性,華爲在自身的微服務化過程當中,歷經了諸多考驗,總結了微服務化的系列挑戰,如,服務粒度細緻使團隊協做困難,常規微服務化手段性能低致使總體資源利用率低,問題定位困難致使運維成本高,等等,華爲將這些總結經驗都沉澱到了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、LC三、開源中國源創會、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討論羣