1. 程式人生 > 實用技巧 >你還在手撕微服務?快試試 go-zero 的微服務自動生成

你還在手撕微服務?快試試 go-zero 的微服務自動生成

0. 為什麼說做好微服務很難?

要想做好微服務,我們需要理解和掌握的知識點非常多,從幾個維度上來說:

  • 基本功能層面

    1. 併發控制&限流,避免服務被突發流量擊垮
    2. 服務註冊與服務發現,確保能夠動態偵測增減的節點
    3. 負載均衡,需要根據節點承受能力分發流量
    4. 超時控制,避免對已超時請求做無用功
    5. 熔斷設計,快速失敗,保障故障節點的恢復能力
  • 高階功能層面

    1. 請求認證,確保每個使用者只能訪問自己的資料
    2. 鏈路追蹤,用於理解整個系統和快速定位特定請求的問題
    3. 日誌,用於資料收集和問題定位
    4. 可觀測性,沒有度量就沒有優化

對於其中每一點,我們都需要用很長的篇幅來講述其原理和實現,那麼對我們後端開發者來說,要想把這些知識點都掌握並落實到業務系統裡,難度是非常大的,不過我們可以依賴已經被大流量驗證過的框架體系。

go-zero微服務框架就是為此而生。

另外,我們始終秉承工具大於約定和文件的理念。我們希望儘可能減少開發人員的心智負擔,把精力都投入到產生業務價值的程式碼上,減少重複程式碼的編寫,所以我們開發了goctl工具。

下面我通過書店服務來演示通過go-zero快速的建立微服務的流程,走完一遍,你就會發現:原來編寫微服務如此簡單!

1. 書店服務示例簡介

為了教程簡單,我們用書店服務做示例,並且只實現其中的增加書目和檢查價格功能。

寫此書店服務是為了從整體上演示go-zero構建完整微服務的過程,實現細節儘可能簡化了。

2. 書店微服務架構圖

3. goctl各層程式碼生成一覽

所有綠色背景的功能模組是自動生成的,按需啟用,紅色模組是需要自己寫的,也就是增加下依賴,編寫業務特有邏輯,各層示意圖分別如下:

  • API Gateway

  • RPC

  • model

下面我們來一起完整走一遍快速構建微服務的流程,Let’s Go!