[學習微服務第9天] Service-Center使用入門

上一篇咱們介紹了ServiceComb內置的負載均衡組件handler-loadbalance,本篇咱們將介紹Service-Center使用入門。html

 

一. Service-Center 是什麼

ServiceCenter是一個服務註冊中心。服務提供者能夠將自身的實例信息註冊到 ServiceCenter,以供服務消費者發現並使用它。git

 

二. 爲何使用Service-Center

在微服務架構中,一個應用由一組職責單一化的服務組成,各個服務被動態的部署到不一樣的節點。面對這樣一組服務,應該如何去管理服務之間的依賴關係呢?github

 

服務註冊中心的出現正是爲了解決這樣的問題,它提供的註冊機制,容許服務提供者將本身的信息登記到中心;提供的發現機制,供服務消費者從中心查找服務提供者信息。 apache

服務註冊中心優勢:api

1.解耦服務提供者與服務消費者,服務消費者不須要硬編碼服務提供者地址。微信

2.服務動態發現及可伸縮能力,服務提供者實例的動態增減能經過註冊中心動態推送到服務消費者端。架構

3.經過註冊中心能夠動態的監控服務運行質量及服務依賴,爲服務提供服務治理能力。負載均衡

 

三. 註冊發現流程

如上圖,Service-Center中服務發現流程大體有如下幾個步驟:ide

  • 服務提供者向Service-Center註冊服務信息函數

  • 服務提供者發送心跳,維持在Service-Center中的「UP」狀態

  • 服務消費者向Service-Center註冊服務信息

  • 服務消費者從Service-Center發現服務提供者信息

  • 服務消費者向服務提供者發送請求,並獲取通信結果

•Service-Center註冊發現接口基於RESTful標準實現,不受開發語言限制,實現對應接口能夠參考官方API文檔:

https://rawcdn.githack.com/ServiceComb/service-center/master/docs/api-docs.html

•Service-Center提供了簡單註冊與發現的Client,其中封裝了API實現,可直接使用,具體可查看:

https://github.com/apache/servicecomb-service-center/tree/master/pkg/client/sc

 

四. 使用Service-Center

爲了更好的理解流程,下面咱們將經過「helloword」的示例,實現基於Service-Center的註冊發現,並完成Consumer與Provider之間的通信。


如下僅展現了主要流程代碼,完整示例請參考:

https://github.com/ChinX/service-center-demo/tree/simple-demo

 

1.目錄參考

建立名爲「helloworld」的項目,如下爲參考目錄結構:

 

2. 服務提供端實現

新建服務提供端配置文件: helloworld/rest/provider/conf/microservice.yaml

新建項目入口文件: helloworld/rest/provider/provider.go

01.在main函數中完成啓動流程:

02.啓動服務提供端http監聽

03.向Service-Center註冊自身服務,其中包含微服務建立、實例註冊、心跳保活三個部分,具體代碼以下:

 

3. 服務消費端實現

配置文件: helloworld/rest/provider/conf/microservice.yaml

入口文件: helloworld/rest/consumer/consumer.go

1.在main函數中完成啓動流程:

2.從Service-Center服務發現服務提供端,涉及建立服務、服務發現接口:

3.請求接口「/hello」完成與服務提供端的通信

 

 

4. 構建編譯

如下基於 go 1.11+ 進行構建,請檢測自身 go 環境。
進入 service-center-demo 目錄:

 

五. 功能驗證

 

1. 安裝啓動 Service-Center

從Service-Center官網獲取二進制包:

http://servicecomb.apache.org/release/ ,解壓並運行二進制

執行如上命令並獲得對應的反饋信息,則說明安裝部署成功。

 

2. 啓動 provider

輸出信息分析:

服務提供端啓動並監聽了本地8080端口

成功建立微服務服務,並打印了返回的serviceId

成功註冊自身實例,並打印了返回的instanceId

服務提供端在啓動30秒後,成功發送了一次心跳

3. 啓動 consumer

輸出信息分析:

服務消費端成功建立微服務服務,並打印了返回的serviceId

服務消費端成功發現provider實例,並打印了返回的provider endpoints

服務提供端成功向服務提供端發送請求,並得到返回的信息「hello world」

此時查看provider端控制檯,若出現「2019/02/17 21:13:02 request from consumer」相似字樣的打印,則說明provider端接收到consumer端的請求,共同印證了通信的成功。

 

 

  • 文末小結

本文向社區讀者從用戶角度闡述了ServiceCenter的基本使用方法,完成最簡單的服務註冊與發現。 

 

咱們也很是歡迎愛好者們向社區提問和貢獻代碼:)

 

下篇將介紹ServiceCenter的架構與啓動流程介紹。

 

如在閱讀代碼時有任何疑問想交流,歡迎掃碼加入進微信羣。

掃描二維碼

添加微服務小助手

期待志同道合的朋友們加入

ServiceComb的大門爲大家敞開~

用心作開源,不忘初衷

 

前期閱讀

[學習微服務-第8天] 

ServiceComb內置負載均衡組件handler-loadbalance

[學習微服務第7天] 

ServiceComb+SpringCloud Ribbon源碼解讀

[學習微服務-第6天] 

負載均衡之ServiceComb + SpringCloud Ribbon

[學習微服務-第5天]

ServiceComb+Zipkin源碼解讀

[學習微服務-第4天]

ServiceComb+Zipkin

[學習微服務-第3天] 

ServiceComb內置高性能網關服務

[天天學習微服務-源碼解讀] 

ServiceComb+SpringCloud Zuul

[天天學習微服務-網關]

ServiceComb+SpringCloud Zuul

 

瞭解更多信息請訪問: 

官方網站 ↓↓↓

http://servicecomb.apache.org/ 

Github代碼倉庫↓↓↓

https://github.com/apache?q=ServiceComb 

相關文章
相關標籤/搜索