成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊 Golang 微服務工具包 Go kit

開發 架構
本文我們介紹 Golang 微服務工具包 Go kit 的基礎知識和架構設計,并提供了一個簡單的微服務示例代碼,讀者朋友們在了解 Go kit 之后,可以通過閱讀代碼,學習怎么使用 Go kit 開發項目。

一、介紹

Go kit 是 Go 包的集合,可幫助您構建健壯、可靠、可維護的微服務。它最初被設想為一個工具包,以幫助大型(所謂的現代企業)組織采用 Go 作為實現語言。但它很快就"向下增長",現在也為較小的初創公司和組織提供服務。

Go kit 服務分為三層:

  • Transport layer 傳輸層
  • Endpoint layer 端點層
  • Service layer 服務層

請求在傳輸層進入服務,向下傳輸經過端點層到達服務層,響應采用相反的過程。

Transports

Go kit 附帶了對 HTTP、gRPC、Thrift 和 net/rpc 的支持。傳輸域綁定到具體的傳輸協議,比如 HTTP 或 gRPC。可以讓我們的單個微服務同時支持 HTTP API 和 RPC 服務。

Endpoints

Endpoints 類似在 Controller 中的 action 或 handler,用于接收 transports 的請求。

Services

Services 實現核心業務邏輯,它通常將多個 Endpoints 組合在一起。在 Go kit 中,Services 通常會定義接口,通過實現接口去實現業務邏輯。

Services 應該不知道 Endpoints,尤其 Transport-domain 的概念。Services 也應該不知道有關 HTTP headers 或 gRPC 錯誤碼的任何信息。

Middlewares

Go kit 嘗試通過使用中間件(裝飾器模式)來分離與業務邏輯無關的功能。中間件可以包裝 Endpoints 或 Services,來添加功能,例如日志記錄、限流、負載均衡或鏈路跟蹤。通常圍繞 Endpoints 或 Services 使用多個中間件。

二、Go kit 架構模型

在了解了 Transports、Endpoints、Services 和 Middlewares 的概念后,我們可以發現 Go kit 架構模型類似「洋蔥」,包含多層。這些層從內到外可以分組到我們的三個域中。在最內層的 Service 域中,所有內容都基于特定 service 定義,并且所有核心業務邏輯都在 service 中實現;中間層 Endpoint 域是將 Service 的每個方法抽象到通用的 Endpoint;在最外層的 Transport 域是 Endpoints 綁定到 HTTP 或 gRPC。

圖片來自 Go kit 官網

我們可以通過為 service 定義 interface,并提供具體實現來實現核心業務邏輯。然后,通過編寫 service 中間件添加額外功能,比如日志記錄、分析、檢測等。

Go kit 提供 Endpoint 域和 Transport 域中間件,用于限流、熔斷、負載均衡和鏈路跟蹤等功能。

三、微服務示例

在了解以上關于 Go kit 的知識之后,我們通過一個簡單的微服務示例,學習怎么使用 Go kit 開發項目。

項目包含服務端和客戶端,并采用 Consul 作為服務注冊與發現組件。

代碼目錄:

.
├── README.md
├── client
│ ├── endpoint
│ ├── main.go
│ └── transport
├── go.mod
├── go.sum
└── server
├── config
├── endpoint
├── main.go
├── service
└── transport

完整代碼,請參閱 Github。

四、總結

本文我們介紹 Golang 微服務工具包 Go kit 的基礎知識和架構設計,并提供了一個簡單的微服務示例代碼,讀者朋友們在了解 Go kit 之后,可以通過閱讀代碼,學習怎么使用 Go kit 開發項目。

參考資料:

??https://gokit.io/faq/#architecture-and-design??

??https://pkg.go.dev/github.com/go-kit/kit@v0.12.0??

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2022-03-22 09:22:21

Go kitgRPC網絡傳輸

2015-03-06 17:46:55

2021-02-07 09:05:56

微服務結構云原生

2023-12-25 09:49:01

Golang架構Go-Kit

2023-12-15 09:57:13

微服務鏈路服務

2021-07-20 08:03:43

微服務應用程序

2012-09-13 11:17:22

IBMdw

2018-05-03 09:03:16

微軟工具包Windows

2023-01-29 09:06:24

微服務劃分關聯

2018-05-09 08:18:26

微服務改造架構

2021-07-26 11:19:43

微服務開發技術

2022-11-02 08:31:53

BFF架構App

2018-12-06 14:56:46

微服務隔離熔斷

2023-11-06 08:26:11

Spring微服務架構

2020-02-10 16:07:42

工具包

2011-04-18 09:46:58

Windows工具包活動目錄MPS報告

2009-09-16 08:34:17

Windows Emb

2009-04-03 11:12:43

PalmwebOS開發

2024-02-26 00:00:00

Go性能工具

2021-03-10 10:00:31

Go語言strconv包類型轉換工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频在线免费观看 | 日韩欧美网 | 国产三区av | 成人无遮挡毛片免费看 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日韩亚洲视频 | 一区二区三区av | 一区2区| 亚洲精品视频在线播放 | 视频二区在线观看 | 欧美视频在线看 | 97avcc| 丁香婷婷久久久综合精品国产 | 免费一区| 美国av毛片 | 久久久国产精品 | 久久精品国产久精国产 | 亚洲av毛片成人精品 | 91精品国产综合久久久久久 | 91传媒在线观看 | 中文字幕在线一区 | 中文字幕日韩三级 | 99视频在线 | 国产一区二区在线播放 | 欧美成人一级 | 精品一区二区久久久久久久网站 | 久久com | 91久久| 一级在线毛片 | 国产精品久久久久久久久久免费看 | 午夜精品久久久久久久久久久久久 | 国产高清视频在线观看 | 亚洲精品1区 | 久久精品视频网站 | 成人欧美一区二区三区在线观看 | 国产一区二区三区视频免费观看 | 韩日在线视频 | 久久久久久久久国产 | 久久成人一区 | 免费在线一区二区 | 日本三级黄视频 |