Golang 微服務相關工具

因為這些工具都十分地進階,所以在這裡僅稍微介紹並指引如何安裝,有趣的是這些全部都是用 Golang 撰寫的。


Go kit—微服務框架

https://github.com/go-kit/kit

當你要撰寫微服務時,你也許會需要一個框架。而 Go kit 就是 Golang 中目前知名度最高的微服務框架,接下來我們會以 Go kit 實作微服務架構的應用程式,先前也有翻譯一篇文章:「一個基於 Golang 的基本 Go kit 微服務範例」,所以這裡簡單介紹支援的功能就好:

  • Endpoint:單個進入點及是單個 RPC 模型,用以處理接收到的資料。
  • Circuit Breaker:斷路器在服務發生錯誤時提供了重試的功能,避免不斷地呼叫已經當機的服務造成浪費時間且避免了雪崩式的錯誤發生。
  • Rate Limiter:速率限制避免一個服務在短時間內不斷地被呼叫。
  • Transport:轉繼站負責將外來的請求轉換成內部的進入點,然後從進入點繼續下去。
  • Logging:紀錄任何請求資料還有回應。
  • Metrics:測量函式執行的時間與次數,並且轉換成可供第三方套件解讀的格式。
  • Request Tracing:請求追蹤系統,能夠讓你得知一個請求在微服務系統中是經過哪些地方的,目前支援:ZipkinOpenTracing
  • Service Discovery:服務探索能讓微服務主動註冊至服務中心,並讓你的網關(API Gateway)能夠知道有哪些服務可供使用。
  • Load Balancing:負載平衡會從服務中心選出其中一個可用的服務並處理資料。

安裝方式

安裝 Go kit 很簡單,透過 Go 原生的 go get 指令即可。

$ go get github.com/go-kit/kit/...

接著就能夠在 Go 程式中以 import "github.com/go-kit/kit" 以印用了。


Prometheus—測量資料統整

https://github.com/prometheus/prometheus

(圖片來源:https://coreos.com/blog/the-prometheus-operator.html)

我們會在微服務中紀錄並測量我們函式所花費的時間,還有執行的次數,這些資料需要有一個地方能夠被視覺化,而 Prometheus 正能解決這件事。

安裝方式

Prometheus 下載頁面 下載相對應的版本並解壓縮,接著就可以直接執行(或丟到終端機執行),同時也有提供 Docker Container 的版本


Consul—服務探索

https://github.com/hashicorp/consul

(圖片來源:https://www.percona.com/blog/2014/12/05/streamlined-pxc-anything-testing-consul-vagrant/)

每個微服務都必須要註冊到服務中心才能夠被網關探索到。Consul 是服務探索中心,我們的微服務將會使用 Go kit 框架中的 consul 套件來向 Consul 註冊,除了服務探索功能外,還可以偵測服務狀況是否可用,亦有簡易的鍵值存儲可供儲存暫時性資料。

安裝方式

Consul 下載頁面 下載相對應的版本並解壓縮之後就可以直接執行。如果你是 macOS 系統,則可以透過 Homebrew 直接在終端機安裝。

$ brew install consul

NSQ—訊息傳遞

https://github.com/nsqio/nsq

(圖片來源:http://nsq.io/components/nsqadmin.html)

NSQ 能夠協助我們在微服務中發布分散式的訊息,並讓其他微服務接收到這些訊息後異步地執行處理。無需等待微服務處理完後才能夠執行下一個動作,這能令效能提升且更快地返回結果給使用者。

安裝方式

NSQ 安裝頁面 下載相對應的版本並解壓縮之後就可以直接執行。如果你是 macOS 系統,則可以透過 Homebrew 直接在終端機安裝。

$ brew install nsq

Drone—自動化測試、部署

https://github.com/drone/drone

(圖片來源:https://discuss.drone.io/t/weekly-update-14-jul-2016/284)

如果你先前有使用 Travis CI 的經驗,那對 Drone 也許就不會這麼陌生。當我們完成微服務的一小部分時,我們可以 git push 到遠端倉庫,接著 Drone 就能夠自動測試我們的微服務是否有錯誤(當然你要先撰寫單元測試),所以你就不需要手動測試,然後自己一個 API 慢慢試。在測試成功後 Drone 可以協助你自動部署到正式伺服器。

安裝方式

Drone 0.5 安裝頁面有簡單的安裝教學,亦可以在該頁面下載符合自己系統的執行檔。詳細教學可以參考:安裝 Drone 0.5 自動測試平台並與 Github 連結 文章。