本文將向介紹ServiceComb開源項目的總體架構及特色、ServiceComb Release 0.3.0的加強功能、基於ServiceComb介紹參與軟件開源開發的途徑和方法。git
內容來源:2017年10月26日,華爲PaaS開源領域專家姜寧在「ServiceComb在線直播」進行《ServiceComb 開源項目介紹》演講分享。IT 大咖說做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
github
閱讀字數:1822 | 4分鐘閱讀編程
企業業務邏輯複雜,如何進行跨團隊協同開發?網絡
大量老舊系統代碼,如何支持其快速服務化改造?架構
雲化應用複雜,面臨的監控分佈調用追蹤問題?併發
ServiceComb做爲一個功能完善的微服務框架,包括應用框架代碼生成,服務註冊發現、服務配置管理、服務監控、服務調用追蹤、多通訊協議支持等功能,爲開發者提供端到端的應用開發體驗。此外,ServiceComb具有服務化契約加強、事件驅動等優點特性,並提供了分佈式事務追蹤能力,可以比較好的解決上述企業應用微服務開發所遇到的問題。ServiceComb採用開放架構設計理念,兼容多種業界流行微服務框架,開發者亦可根據自身業務需求定製業務插件。負載均衡
同時,與ServiecComb同源的華爲微服務引擎也將在11月中上旬獨立上線公測。框架
上圖是ServiceComb的架構圖,ServiceComb運行時包含了兩部分核心模塊。一部分是服務契約,這是基於Open API實現的針對Restful服務的標準描述信息,這些信息是獨立與具體語言的。服務契約是ServiceComb很重要的一個核心特色。異步
還有一塊是在運行時經過插件方式提供的多種服務擴展能力,好比服務發現、熔斷、負載均衡、配置以及跟蹤等。因爲爲微服務是以獨立進程的方式存在,微服務框架首先須要保證服務間的網絡調用問題,同時因爲雲上這些網絡調用是不可靠的,須要微服務框架經過容錯、負載均衡來保證服務之間調用的可靠性。在編程模型上ServiceComb支持同步、異步、Reactive等編程模式。這裏的通訊模型主要負責消息的序列化以及傳輸協議。分佈式
做爲服務消費者:
須要明確知道如何調用服務?
須要知道服務調用參數有哪些?
須要知道傳輸的內容是什麼?
做爲服務提供方:
提供詳細描述的文檔很難?
提供和維護標準的SDK也很難?
提供用戶支持也不太方便。
服務契約能夠看做生產者和消費者雙方進行交易或溝通的合同。經過服務契約可以保證服務消費者和服務提供方可以按照相互約定好的方式來進行交互。這樣帶來最大的好處就是代碼和文檔能夠一致化,同時這些契約能夠對每一個服務都作一個比較明確的能力限定,能夠更好地幫助咱們來協調和管理服務之間的調用。
ServiceCombJava SDK同時支持API First & Code First兩種開發模式,用戶能夠根據本身的須要靈活選擇。
面向接口契約而不是邏輯,經過工具能夠根據契約生成相關的樁代碼或者服務調用程序;
經過服務契約能夠明確服務調用的參數已經相關的服務,這樣服務消費者不用等服務提供者開發完畢才能進行相關的開發,極大提高應用開發的效率;
契約定義爲語言中立,能夠經過相關的工具生成不一樣語言的服務樁代碼或者是調用代碼;
藉助相關接口工具,能夠根據服務接口代碼自動生成API描述文檔,讓實現代碼與文檔的同步;
ServiceCombJava SDK經過直接分析服務接口的Class文件,直接從代碼層面獲取Restful接口描述信息,生產成契約描述信息。目前ServiceComb Java SDK支持Spring MVC 以及JAXRS 等Restful服務定義方式。
整個框架以事件驅動爲基礎,用Event-Loop這種方式進行處理,這樣帶來最大的好處就是不會有太多的線程切換。經過異步操做能夠極大提高應用處理效率。目前爲ServiceCombJavaSDK事件處理框架不但支持Restful協議並且還支持RPC協議。
ServiceComb Java SDK支持基於Zipkin的標準追蹤協議,同時也支持@span來擴展事務的追蹤能力。
在具體實現的過程當中咱們也提供了調用鏈,基於這種調用鏈你們能夠很方便地查詢本身定義的處理器,對接本身所需的協議,而後進行對應的一些追蹤。
Java-chassis:Java版的微服務框架;
service-center:基於go語言的服務中心;
ServiceComb-Saga:長時間運行事務處理框架。
Service-Center0.2.0:
提供了管理控制檯,對註冊的服務實例提供管理功能。
Java-Chassis0.3.0:
支持經過@Span註釋的方式定義事務;統一了Http請求處理,支持對Rest調用進行定製處理。
Saga0.1.0:
提供了初步的Saga調用服務,支持順序以及併發的調用處理。
經過社區反饋可以及時獲取到用戶的需求並在社區快速透明地改進。因此但願你們踊躍參與到社區。
ServiceComb項目徹底融入開源,從誕生之日起就堅持開放、標準和生態三大理念。ServiceComb採用開源的方式和社區協做、用戶能夠就職何的角色參與到社區開發,不管是Developer、Writer、Tester仍是User,都是很是歡迎的。目前社區的工做承載在github(https://github.com/ServiceComb)、官網(https://www.servicecomb.io)和JIRA(https://servicecomb.atlassian.net)上,開發者和用戶能夠再上面查閱到項目的全部信息。ServiceComb 期待社區人員的參與,用戶能夠將使用過程當中發現的問題提到issue列表或JIRA上或者發起討論,也能夠認領issue進行貢獻PR,任何的方式都是很是受歡迎的。
開發者可經過http://servicecomb.io/cn/developers/ 閱讀開發者指南。
我今天的分享就到這裏,謝謝你們!