← 返回文章列表

微服務框架(golang)

從 Go 的微服務框架入手,整理服務組織與框架選擇。

框架是什麼?

框架,英文名稱framework,可以看作一種腳手架或者是一種標準化模版

框架中該有的元件都已經設定好,方便幹活,減少重複工作,同時專案的風格和目錄一致,看起來也更加方便

在公司中使用統一的框架,接手起來更加方便,維護起來也更加方便,如果使用同一個框架,發現了漏洞,更新一個框架即可。同時很多業務中存在重複程式碼,像是日誌、監控系統,使用統一框架,負責開發的程式設計師不需要考慮其他,只管自己業務程式碼的開發,這樣自己寫的程式碼量減少,不容易出現問題。

在開發的主流語言中,Java應用是最廣泛的,它有一個統一的框架Spring,全世界都在用,很多問題前輩可能都遇到過,相應的技術部落格也比較完善,這是它獨特的優勢。

golang開發常用的框架

golang是一門比較新的語言,2009年正式發布,作為一門新興的語言,沒有像Java一樣形成一個大一統的框架,很多大廠都有自己的框架,還有一些開源團隊維護自己的框架。

這樣在大廠中會有一些崗位是做基礎架構的,專門為公司開發新的適用於公司業務的框架,開發框架也並不簡單,需要根據自己公司的業務需求進行開發,還要考慮跟公司其他業務的連通性,公司內部私有協議的適配性,還有框架的使用友好性、穩定性、安全性等等。

我們在學習的時候更多的是要學習框架實現的思想,不要只單純學怎麼使用,要學會自己造輪子->造汽車。

微服務框架基本元件

  • 日誌(一個框架能支援不同的日誌配置)

  • 配置中心(在配置中心進行微服務配置的設定,不用一個個單獨設定)

  • 資料庫(支援資料庫的互動)

  • 訊息佇列(各種訊息佇列,Kafka、RabbitMQ等)

  • metrics(指標監控)

  • tracing(鏈路追蹤,單個請求完整的生命週期,找出效能瓶頸之類的)

  • 服務註冊發現

  • 依賴注入

  • RPC框架(遠端過程呼叫,微服務之間資料的互動處理)

  • 熔斷和限流(維持微服務的執行,防止崩潰)

  • ……

開源社群常用的框架

  • Go-kit

    • go微服務套件庫,簡單的元件庫,能用來實現微服務專案
  • Go-micro

    • 比較早的go微服務框架,可能不相容新的更新
  • Go-kratos

    • B站開源的框架,可以自己選擇元件,也可以使用自己的
  • Kitex

    • 位元組開源,自定義netpoll,對使用者要求比較高,效能高
  • Go-zero

    • 好未來開源的,一站式微服務框架(之前吃飯路過好未來,下班好像挺早的)

參考資料

關於這篇文章的日期

舊日期 2025-01-16 與文章發布記錄不符,現按舊站可確認的首次發布日 2026-01-18 整理。實際創作日期尚無法確認。

原始日期: 2025-01-16 21:15:06 +0800