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

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


咨詢
建站咨詢
