Zen Lin 劉云華 馬彬



近3年,微服務在國內得到廣泛傳播,嘗試轉型微服務架構的企業日益增多,微服務也更多地暴露在國內技術圈的聚光燈下,成為技術社交、媒體和大會演講的熱點。華為公司于2017年5月開源了ServiceComb微服務項目,并于同年11月捐贈給Apache軟件基金會。2018年10月,Apache軟件基金會宣布Apache ServiceComb成為Apache頂級項目。
產業發展驅動微服務技術革新
Gartner預測微服務成為主流
2016年開始,微服務成為僅次于物聯網和認知計算的第三熱門軟件架構,在Gartner的Hype Cycle技術成熟度曲線上排名非??壳?,Gartner認為微服務在未來2~5年內成為主流。
事實上,從2011年開始,NetFlix、Amazon、Twitter等大家熟知的國際互聯網巨頭已經在探索微服務,并嘗試在項目中予以實踐,這些企業的努力為后來微服務理論的確立提供了寶貴的經驗。在國內,華為、阿里是較早一批開始接觸和探索微服務的企業,并在實踐中孵化了優秀的微服務開發框架,幫助用戶快速地實現微服務。
互聯網爆炸式發展促使微服務誕生
微服務和傳統SOA同屬于服務化架構體系,服務化架構需要追溯到50年前至今還發揮重要作用的著名康威定律,而后,2000—2007年,電子商務大發展促進了SOA流行,互聯網的爆炸式發展和普及引發了人們探索新一代服務化架構的熱潮,促使了微服務的萌芽,產業發展是驅動技術革新的原動力。
微服務從萌芽伊始,至今已發展8個年頭,它是產業發展到一定階段的產物,是SOA的一種進化,隨著眾多國內外創新型企業對微服務的持續探索、實踐,以及世界級軟件架構大師系統化地豐富、闡釋概念,理論、實踐相結合,共同勾勒出微服務的輪廓。
云計算和企業數字化轉型為微服務提供成長的土壤
如今,世界已邁進“互聯網+”時代,云計算、大數據、物聯網、AI等IT助力產業向智能化、萬物互聯和敏捷創新的數字化轉型,各行各業將迎來一波革新潮。云計算成為產業轉型的沃土,根據Gartner預測,到2025年85%的企業應用將運行在云上,越來越多的企業逐漸從資源云化向應用云化演進、以應用為中心提供業務能力服務,利用云能力使企業回歸聚焦自身業務,節省現金流投入和運維基礎設施消耗的時間成本。
在產業發展趨勢下,云原生、容器化技術日臻完善,基礎設施自動化、持續交付、按需虛擬化、小型自治團隊、大型集群系統等實踐紛紛流行,為微服務的落地提供了良好的土壤,微服務在協同云化應用快速創新、按需彈性伸縮、短平快持續交付等方面將發揮越來越積極的作用,微服務成為企業云化、全面解耦的基石。
以產品化的思維做開源項目
ServiceComb應運而生
隨著云化和互聯網技術的發展,企業IT部門從原來的成本中心轉變成生產中心,如何將客戶需求和軟件價值更快的交付到客戶手中,成為企業的核心競爭力之一,以前是“大魚吃小魚”,現在是“快魚吃慢魚”。
現代軟件應用的領域越來越廣,無論是工作、生活還是娛樂,應用(特別是消費類應用)流量會出現明顯的波峰波谷,例如,游戲一般在工作日和白天玩得少,而在休息日和晚上玩得多。還有些無法預期流量的應用,可能大部分時間流量一直穩定,而一個意外事件就會導致流量產生指數級增長,無論是哪一種場景,都要求應用架構能具備更好的彈性能力來保證業務的可用性。
經過這一波互聯網技術洗禮之后,行業邊界正變得越來越模糊,很多企業特別是傳統行業都希望通過業務創新獲取新的增長點,而業務創新九死一生,從IT部門視角來看,基于團隊已有的技能,重用企業已有的技術資產(比如投資了很貴的技術平臺軟件),這就是節省成本。
從程序員的角度切入,不同行業不同領域都有不同技術棧,例如,開發語言沒有絕對的好壞,Java、C++、Python、Golang等都有適合的場景,多數企業的技術決策者會希望能用合適的技術去匹配業務,所以在選擇能支撐未來業務持續發展的基礎性框架和平臺產品時,對技術本身開放性的考量也是至關重要的。
從企業用戶的視角來看,他們的訴求往往是:高可用性、容錯性、可管理性、可替代性、可測試性、組織擴張、架構彈性等。其實從這些反饋不難看出,業界對微服務的訴求不僅僅是需要某個單點問題或一個工具套件,而更多的是希望通過微服務這種新的研發理念來改變整個研發活動的方方面面,包括技術、組織和流程的變革。
綜上所述,我們可以從業務視角總結出微服務的價值:更快、更穩、更經濟
更快:是指業務上線的速度,使用微服務能把業務上線周期從年降到月、周,甚至是隨時上線;
更穩:是指系統可用性,基于微服務構建的系統能把系統SLA從3個9提升到4個9、5個9,甚至永不斷服;
更經濟:是指業務的資源成本,基于微服務更細粒度的彈性,能實現業務規模擴張與資源支出的最佳平衡。
微服務的本質是化繁為簡,分而治之,從而加快企業創新。這也是為什么微服務會倍受企業青睞,Apache ServiceComb為什么應運而生的原因之一。
ServiceComb瞄準企業微服務化難題
談到Apache ServiceComb,不得不提其愿景:提供一站式的微服務開源解決方案,致力于幫助企業、用戶和開發者將企業應用輕松微服務化上云,實現對微服務應用的高效運維管理。
Apache ServiceComb的愿景,有幾個詞令人印象深刻,“幫助”“輕松”“高效”,詞的背后隱藏了ServiceComb的主要代碼捐贈者華為公司背后對微服務歷程的探索過程及積累。
華為公司從2012年開始在很多創新項目里應用微服務技術,在2014年隨著微服務框架技術愈加成熟,工具愈加完善,各個產品線開始基于微服務框架做云化產品。2016年,華為公司為促進能力共享,將散落在各產品線的微服務相關的工具、平臺、框架和團隊統一整合成華為公司級華為云平臺微服務的重要組成部分,專門負責微服務平臺的交付和技術演進,統一支撐整個華為公司產品微服務化轉型。截至當前,華為公司無線、云核心網、消費者云等基于此微服務框架都已完成云化及商用。
2017年,隨著華為云成立,華為云將能力在公有云上開放出來,更開源了ServiceComb微服務項目,讓業界更多的企業和開發者能更方便的使用微服務技術,少走彎路。
如何基于微服務架構高效開發和上線
傳統的單體應用因為是單進程,組件A與組件B的進程內調用只需使用編程語言的語法,一行簡單的代碼就能搞定,但是在微服務系統里,有在服務發現、服務容錯、服務限流、服務降級、分布式事務等諸多復雜的分布式技術問題,如果我們把這些問題都留給業務開發人員,顯然業務開發是快不起來的,這就是微服務化之后面臨的第一個問題。
如何在不可預期的流量下保證業務的高可靠運行
從一個單體應用拆分成多個獨立運行的微服務應用,從理論上來說,系統的故障點是增多的,用戶請求的每一跳都有可能出錯,特別是在資源受限的大規模流量沖擊下,這又引入微服務化后的第二個問題。
在復雜的微服務系統中如何實現問題快速定位與恢復
在微服務系統中,特別是在動輒上百個微服務和實例部署的場景下,一個業務請求很可能跨越了多個微服務多個實例多個節點,別說定位問題,就是先搞定問題定界都很難,這時候如果沒有一個自動化的工具或平臺來支撐,靠人力是不可能完成的任務。
傳統架構下的遺留系統如何向微服務架構低成本遷移
最后是一個非?,F實的問題,特別是在傳統企業里面,都會有一些遺留的資產或運行中的業務系統,不可能把這些都推倒重來,不僅成本太高,而且業務風險也大。如何將傳統架構下的遺留系統低成本的向微服務架構遷移也是微服務解決方案需要系統考慮的。
這些都是過去華為各產品線服務化經驗沉淀的精華。Apache ServiceComb開源,一方面將經驗共享出來,分享給遇到微服務化難題的企業,促進行業更快向云化轉型,一方面也和同樣面臨數字化云化轉型的企業共同探討和繼續創新解決微服務化難題。
開放、創新、標準
Apache ServiceComb從設計上,一直秉持“將簡單留給用戶、復雜扔給自己”的設計導向,從設計之初就形成了“全面開放,使用標準協議,架構易于拆分和擴展,對開發人員友好,可以與業界其他流行框架互通集成”的共識。
一方面,組織和開發人員的復雜性來源于技能的多樣性,大家使用不同的開發語言,同一種開發語言存在多樣的開發習慣。ServiceComb通過支持主流的編程風格及優化兼容不同的編程習慣來擁抱90%的開發者,使大多數開發者可以快速工作。通過契約將通信協議剝離,用戶也可以通過通信協議拓展機制,自行進行其他通信協議對接,協議的切換和共存不需要修改任何一行代碼即可實現。
另一方面,ServiceComb自身可以以輕量級的方式進行運行,也可以和J2EE/Tomcat/Spring等生態無縫鏈接,用戶可以根據不同的業務需要使用不同的方式構建自己的微服務系統。
Apache ServiceComb在開源以來也獲得了兩大開源獎項“2018OSCAR尖峰開源技術創新獎”和“2018COSCL中國優秀開源項目一等獎”。Apache ServiceComb基于面對企業微服務化難題的技術創新在諸多領域獲得收效。
開箱即用:集服務注冊、發現、通信和微服務治理能力為一體,并默認提供集中化配置,結合腳手架能力,實現微服務治理能力0編碼,開發人員簡單配置即可使能微服務常見功能。
ServiceComb內置覆蓋了微服務下絕大多數場景的流量控制、容錯熔斷、限流降級、故障注入等治理和管控能力。ServiceComb內置輕量級高性能邊緣服務,支持Producer端治理,結合擴展路由能力和動態配置能力能輕松實現灰度發布、A/B測試等關鍵特性,在業務實測中,在同等資源使用下,吞吐能力是業界常規方案的2.8倍。
第一個實現純異步內核的微服務框架:實現超低調用時延和高吞吐能力,高性能。
ServiceComb實現純異步內核、多線程池和隔離艙,同時支持同步和異步模式,并可在微服務、接口和方法三個維度上進行線程配置并實現不同業務之間的互相隔離。華為消費者云使用ServiceComb實現1500+集群節點規模的微服務以支持4億手機用戶在線,QPS提升2倍+,時延降低45%,從而節省大量硬件資源。
基于契約(Open API)的開發模式
微服務化不是一個單點的技術問題,而是涉及技術、組織和流程變革。在團隊協作上,讓微服務的開發、測試、文檔等協作和管控活動標準化和自動化。ServiceComb是目前全球唯一一個基于Swagger實現通信模型與編程模型分離的微服務項目,代碼自動生成契約可以實現微服務治理能力與業務代碼隔離,以使應用開發人員僅需專注業務邏輯。
某省級財政廳系統一直存在煙囪架構、數據標準不統一、多ISV協同困難的問題,使用ServiceComb完成應用全面微服務化改造,基于契約實現接口標準由財政廳統一管控,ISV只需聚焦微服務交付,降低依賴性,同時基于契約統一業務模型和數據集成標準,系統無縫對接,實現財政數據統一呈現,業務全盤管控。
同時,支持框架式SDK和Service Mesh 0侵入微服務化兩種方式,實現兩種微服務化方式運維管控統一,降低用戶運維管控成本。
分布式事務最終一致性:
ServiceComb提供了分布式事務Saga方案和集中式事務協調器,解決微服務場景下不能依靠單一數據庫來實現跨服務事務一致性的難題。用戶只需要通過注解方式定義事務的執行方法以及撤銷方法,Saga框架會自動保證分布式事務執行的最終一致性。
ServiceComb更是中國微服務行業標準制定的核心框架參考,ServiceComb團隊作為核心團隊參與了此次業界首個微服務行業標準意見稿的撰寫,ServiceComb也在繼續參與該標準規范終稿制定,從而進一步深化微服務在行業中的應用,促進行業健康發展。
地獄不空,誓不成佛
Apache ServiceComb的目標不止步于Apache頂級項目,而是實實在在聯合業界的力量為解決企業上云的難題貢獻力量。
正如華為云PaaS產品部總經理廖振欽在Apache軟件基金會的官方通告中說到的:“Apache ServiceComb是華為云微服務引擎CSE的核心。它廣泛應用于華為消費云、華為云核、華為EI等眾多主要產品,是華為微服務的事實標準。
我們非常高興看到ServiceComb在Apache孵化器中快速發展,鼓勵更多工程師通過成為Apache軟件基金會志愿者社區的一員繼續接受開源,并為開源做出貢獻?!?/p>
ServiceComb從來沒有冒進地滿地迸發子項目,而是在扎實聽取用戶的聲音。ServiceComb是堅持Apache Way的,這就意味著ServiceComb的發展方向是由業界及開源社區共同決定的。
一方面,越來越多的企業使用了ServiceComb,并反饋扎實的需求,例如,因為ServiceComb是基于契約的,那么,除了自動生成契約之外,通過契約自動生成代碼模板、契約調測、遠程契約調試等能力可以形成統一的工具鏈。通過諸如此類的企業微服務化中的痛點需求,ServiceComb可以不斷演進以提供更加完善的解決方案。另一方面,部分企業CTO也針對下一代前向演進上提出了一些見解,ServiceComb社區也歡迎業界的力量可以一起來解決。隨著云計算的發展,2019年各大廠商也開始發布混合云方案,那么對于微服務而言,在混合云領域微服務又會面臨如何的困難?可以產出什么解決方案,諸如此類問題,都是ServiceComb將和數字化轉型企業一起共同去面對的,ServiceComb不會止步,而是牢記自己的使命,借用“地獄不空,誓不成佛”,對于Apache ServiceComb,只要微服務化云化有難處,ServiceComb就會協同業界力量不斷演進發展。