go-kit是一套幫助開發者構建健壯、可靠、可維護的微服務的golang工具包集合。最初應用於大型企業開發,但是很快也開始為小型初創企業和組織服務。
go-kit自上而下采用三層架構方式:Transport、Endpoint、Service。Transport層主要負責與傳輸協議HTTP、gRPC、Thrift等相關的邏輯;Endpoint層主要負責request/response格式的轉換,以及公用攔截器相關的邏輯;Service層則專注於業務邏輯。Endpoint層作為go-kit的核心,採用類似洋蔥的模型,提供了對日誌、限流、熔斷、鏈路追蹤、服務監控等方面的擴充套件能力。為了幫助開發者構建微服務,go-kit提供了對consul、etcd、zookeeper、eureka等註冊中心的支援。
本人通過學習官方網站、github例項以及國內外的一些與go-kit相關的文章,對go-kit的使用方式進行了學習,並通過編寫例項、在社群分享文章進行了強化。希望與廣大go-kit的愛好者多多溝通,共同進步。
這篇文件將對過去一段時間寫的文章與例項程式進行彙總,作為一個目錄供大家交流。本系列文件以算術運算服務為基礎,逐步擴充套件與微服務有關的功能。
- go-kit微服務:HTTP REST:使用go-kit的三層架構模式構建了算術運算服務,Transport層使用HTTP方式。
- go-kit微服務:日誌功能:使用ServiceMidlleware為Service層增加日誌記錄功能,使用go-kit內建的log元件。
- go-kit微服務:限流:使用endpoint.Middleware增加限流邏輯,分別使用go內建的time/rate和juju/ratelimit兩種方式實現。
- go-kit微服務:API監控:通過ServiceMiddleware方式,使用Prometheus的Reporter元件(go-kit內建實現)收集服務介面請求次數、請求延時的執行指標;然後通過Grafana實現指標資料的視覺化檢視。
- go-kit微服務:服務註冊與發現:本文選擇Consul作為註冊中心,使用go-kit內建的服務發現機制實現服務發現功能。
- go-kit微服務:一個簡單的API閘道器:由於《go-kit微服務:服務註冊與發現》一文中,服務發現的方式不夠通用,本文采用“命名服務”的方式,實現了一個簡單的API閘道器。只是思路實現,未做優化。
- go-kit微服務:服務鏈路追蹤:本文使用go-kit的tracing元件和zipkin-go包,為閘道器服務和算術運算服務增加了鏈路追蹤功能,以例項方式演示了在go-kit中整合Zipkin的方式。
- go-kit微服務:服務熔斷:本文在go-kit中使用hystrix-go為閘道器服務gateway增加了服務熔斷治理方案,通過模擬register服務從“正常-故障-恢復”,在hystrix-dashboard中觀察到斷路器狀態的變化。
- go-kit微服務:JWT身份認證:本文結合例項,在go-kit微服務中引入jwt。
以上為目前go-kit系列的文章,每篇文章都對應示例程式碼,可以通過github獲取原始碼。我會隨著實際的學習情況,對該系列文章不斷完善。
由於本人的水平有限,文章中肯定存在描述不當或者錯誤的地方,希望大家批評指正。
本文首發於本人微信公眾號【兮一昂吧】,歡迎掃碼關注!