新聞中心
一、介紹
Go kit 服務分為三層:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、宿遷網(wǎng)站維護、網(wǎng)站推廣。
- Transport layer 傳輸層
- Endpoint layer 端點層
- Service layer 服務層
請求在傳輸層進入服務,向下傳輸經(jīng)過端點層到達服務層,響應采用相反的過程。
Transports
Go kit 附帶了對 HTTP、gRPC、Thrift 和 net/rpc 的支持。傳輸域綁定到具體的傳輸協(xié)議,比如 HTTP 或 gRPC??梢宰屛覀兊膯蝹€微服務同時支持 HTTP API 和 RPC 服務。
Endpoints
Endpoints 類似在 Controller 中的 action 或 handler,用于接收 transports 的請求。
Services
Services 實現(xiàn)核心業(yè)務邏輯,它通常將多個 Endpoints 組合在一起。在 Go kit 中,Services 通常會定義接口,通過實現(xiàn)接口去實現(xiàn)業(yè)務邏輯。
Services 應該不知道 Endpoints,尤其 Transport-domain 的概念。Services 也應該不知道有關(guān) HTTP headers 或 gRPC 錯誤碼的任何信息。
Middlewares
Go kit 嘗試通過使用中間件(裝飾器模式)來分離與業(yè)務邏輯無關(guān)的功能。中間件可以包裝 Endpoints 或 Services,來添加功能,例如日志記錄、限流、負載均衡或鏈路跟蹤。通常圍繞 Endpoints 或 Services 使用多個中間件。
二、Go kit 架構(gòu)模型
在了解了 Transports、Endpoints、Services 和 Middlewares 的概念后,我們可以發(fā)現(xiàn) Go kit 架構(gòu)模型類似「洋蔥」,包含多層。這些層從內(nèi)到外可以分組到我們的三個域中。在最內(nèi)層的 Service 域中,所有內(nèi)容都基于特定 service 定義,并且所有核心業(yè)務邏輯都在 service 中實現(xiàn);中間層 Endpoint 域是將 Service 的每個方法抽象到通用的 Endpoint;在最外層的 Transport 域是 Endpoints 綁定到 HTTP 或 gRPC。
圖片來自 Go kit 官網(wǎng)
我們可以通過為 service 定義 interface,并提供具體實現(xiàn)來實現(xiàn)核心業(yè)務邏輯。然后,通過編寫 service 中間件添加額外功能,比如日志記錄、分析、檢測等。
Go kit 提供 Endpoint 域和 Transport 域中間件,用于限流、熔斷、負載均衡和鏈路跟蹤等功能。
三、微服務示例
在了解以上關(guān)于 Go kit 的知識之后,我們通過一個簡單的微服務示例,學習怎么使用 Go kit 開發(fā)項目。
項目包含服務端和客戶端,并采用 Consul 作為服務注冊與發(fā)現(xiàn)組件。
代碼目錄:
.
├── README.md
├── client
│ ├── endpoint
│ ├── main.go
│ └── transport
├── go.mod
├── go.sum
└── server
├── config
├── endpoint
├── main.go
├── service
└── transport
完整代碼,請參閱 Github。
四、總結(jié)
本文我們介紹 Golang 微服務工具包 Go kit 的基礎(chǔ)知識和架構(gòu)設(shè)計,并提供了一個簡單的微服務示例代碼,讀者朋友們在了解 Go kit 之后,可以通過閱讀代碼,學習怎么使用 Go kit 開發(fā)項目。
參考資料:
??https://gokit.io/faq/#architecture-and-design??
??https://pkg.go.dev/github.com/go-kit/kit@v0.12.0??
網(wǎng)站標題:聊聊 Golang 微服務工具包 Go kit
本文鏈接:http://m.5511xx.com/article/dhdiopd.html


咨詢
建站咨詢
