ServiceComb 設計揭祕:標準與開放


內容來源:2017年12月7日,華爲開源項目ServiceComb開發工程師劉姍姍在「ServiceComb在線直播」進行《ServiceComb設計揭祕:標準與開放》演講分享。IT 大咖說(id:itdakashuo)做爲獨家視頻合做方,經主辦方和講者審閱受權發佈。
java

閱讀字數:1125 | 4分鐘閱讀spring

嘉賓演講視頻地址:suo.im/4NYCh2編程

摘要

本次演講主要是分享ServiceComb對標準與開放的追求。springboot

ServiceComb開發框架

上圖是ServiceComb的開發框架。編程模型目前支持jaxrs、pojo、springmvc。運行模型其實就是handlers的組成。通訊模型目前是支持restful和highway。最底下的服務契約就是服務接口定義文件,目前咱們的服務契約可支持OpenAPI,也就是說它和具體的編程語言是解耦的。微信

基本概念

SchemaMeta

服務接口定義元數據(服務契約):一個微服務能夠擁有多個schema文件,在同一個微服務當中每一個schema文件都有惟一Schema-Id與之對應。restful

MicroService

微服務元數據:包括應用名、微服務名稱、微服務Id、版本、描述、Schema信息等。mvc

MicroServiceInstance

微服務實例:一個獨立的擁有自IP端口的微服務實例(一般爲進程),與service id的關係爲n:1,即Service ID能夠擁有多個微服務實例。
負載均衡

上圖是ServiceComb系統的模塊圖。這裏的模塊主要是以代碼模塊爲主。框架

Foundation是框架的基礎,包括配置管理、通訊以及通訊相關等。編程語言

上面是common模塊,它放置了一些公共組件的功能。好比處理字節碼、處理protobuf的編碼以及協議相關。

Swagger主要是處理服務契約相關。這裏又包含了兩個部分,generator和invocation。Generator負責接口定義相關,而invocation處理調用相關。

CSECore模塊是微服務框架核心功能的抽象接口。在上面的部分主要有三個內容,編程模型包括consumer和producer的部分,運行模型就是handle的部分,第三個就是通訊模型transport部分。

再往上就是針對這幾塊的具體實現。好比consumer的編程模型包括了springMVC和透明RPC。Produce包含了springMVC、jaxrs和透明RPC三種方式。Handle支持多個實現,目前咱們已經實現的有打點的模塊、限流、負載均衡。Transport部分支持了highway和restful,restful還可細分爲基於vertx的restful和基於servlet的restful。

除了這些以外還有一個registry模塊,它主要是負責與註冊中心進行交互。

整個ServiceComb框架也能夠作一個starters,與springboot進行集成。

框架的啓動與中止主要是看三個java文件。第一個是處理日誌系統的參考類log4jUtils,日誌系統初始化功能。日誌支持對接log4j/log4j2/logback,你們只要按照標準實現對接slf4j便可,能夠不使用框架提供的log4jUtils。第二個是BeanUtils文件,負責spring的拉起,這個類也是提供的參考類。第三個是負責核心功能初始化的CseAppllcationListener,該類是啓動的核心類。

服務消費端

當業務代碼發起一次調用的時候,到達框架層以後會根據微服務調用的請求構造出一個請求的元數據,而後這個請求元數據會經過消費端全部的handlers。被消費端全部的handlers處理完以後,它會來到協議層進行編碼傳輸。

服務提供端

通過以上這三步核心的動做以後,請求就從消費端發出,來到了服務提供端。

服務提供端首先會對請求進行解碼,解碼以後會生成請求的元數據,請求元數據又會被生產端的handlers進行一步步的處理。所有處理完成後,就由框架進行業務代碼的映射。最終這個請求就會映射到業務代碼當中進行處理。

如何參與到ServiceComb社區

線上

關注微信公衆號獲取信息;加入微信羣進行交流;經過郵件列表參不討論;經過Github發起PR。

線下

有興趣的還能夠參加咱們的月度Meetup,以及不按期沙龍探討。

相關文章
相關標籤/搜索