博客 / 詳情

返回

一鍵生成 HTTP + gRPC 混合架構微服務代碼:更簡單、更靈活、更兼容的微服務系統構建方式

在現代微服務架構中,單純依賴 gRPC 並不能覆蓋所有的應用場景,因此結合 HTTP 協議可以提供更加全面的服務支持。本文將介紹如何通過一鍵生成 HTTP + gRPC 通用混合架構的微服務代碼,以構建更靈活、更兼容的微服務系統。

為什麼選擇 HTTP + gRPC 服務?

  • 兼容性更強

    • 瀏覽器支持: HTTP 是 Web 應用的基礎,允許瀏覽器直接訪問,而 gRPC 需要額外的客户端庫支持。
    • 現有生態: 許多現有工具、庫和框架都基於 HTTP 協議,將 HTTP 與 gRPC 結合,可以更好地與現有系統集成。
  • 靈活性更高

    • 多種傳輸協議: 可以根據具體需求選擇合適的傳輸協議。對性能要求高的場景可以使用 gRPC,而對兼容性要求高的場景則可以使用 HTTP。
    • 多種數據格式: 支持多種數據格式,如 JSON 和 Protocol Buffers,以滿足不同客户端的需求。
  • 易於擴展

    • 逐步遷移: 可以在保持現有 HTTP 服務的基礎上,逐步遷移到 gRPC,避免大規模系統替換帶來的風險。
    • 混合架構: 同時支持 gRPC 和 HTTP 客户端,以服務於不同的使用場景。
  • 架構更簡潔

    • 相較於 gRPC-Gateway + gRPC 架構,HTTP + gRPC 的混合架構僅需一個服務即可同時提供兩種協議支持,也減少了開發和維護的複雜度。

通過整合 HTTP 和 gRPC,可以構建更加靈活且兼容性強的微服務系統,從而適應多變的業務需求和技術場景。


環境準備

  • 準備一個proto文件,(例如 user.proto )。
  • 安裝 sponge。

安裝 sponge 後,運行以下命令啓動 UI 界面:

sponge run


快速創建微服務項目

進入 sponge 的 UI 界面,點擊左側菜單欄【Protobuf】-->【創建 grpc + http 服務】,根據需要填寫參數生成微服務項目代碼。

解壓代碼,切換到項目目錄(如 user 目錄),執行以下命令:

# 生成代碼
make proto

# 打開 internal/service/user.go 文件,按照生成的示例代碼添加業務邏輯。

# 編譯並啓動服務
make run

服務啓動後,可以分別測試 HTTP 和 gRPC 協議的 API:

(1) 測試或性能壓測 gRPC API

使用 Goland IDE 打開項目代碼,進入 internal/service 目錄,找到後綴為 _client_test.go 的文件,該文件包含在 proto 文件中定義的所有 API 的測試和性能壓測函數,測試前需填寫請求參數。

如果沒有 Goland IDE,也可以通過命令行方式測試。切換到 internal/service 目錄,修改 user_client_test.go 文件中的 gRPC 請求參數,然後執行以下命令測試指定 gRPC 方法,例如:go test -run Test_service_user_methods/Register

(2) 測試 HTTP API

通過瀏覽器訪問 http://localhost:8080/apis/swagger/index.html,使用 Swagger UI 測試 HTTP API。


總結

以上是通過 sponge 生成 HTTP + gRPC 服務代碼的快速方法,這是生成的user服務代碼。在此基礎上,可以繼續擴展服務代碼,例如自動添加 CRUD API 接口人工添加自定義 API 接口。更多開發 HTTP + gRPC 服務的詳細文檔,請點擊查看 https://go-sponge.com/zh-cn/microservice-development-mix-protobuf。

通過採用 HTTP + gRPC 混合架構,開發者可以在現有系統中無縫集成、靈活選擇協議、逐步遷移和擴展服務,從而構建出更加適應實際業務需求的微服務架構。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.