你還在手撕微服務?快試試 go-zero 的微服務自動生成
阿新 • • 發佈:2020-10-14
0. 為什麼說做好微服務很難?
要想做好微服務,我們需要理解和掌握的知識點非常多,從幾個維度上來說:
-
基本功能層面
- 併發控制&限流,避免服務被突發流量擊垮
- 服務註冊與服務發現,確保能夠動態偵測增減的節點
- 負載均衡,需要根據節點承受能力分發流量
- 超時控制,避免對已超時請求做無用功
- 熔斷設計,快速失敗,保障故障節點的恢復能力
-
高階功能層面
- 請求認證,確保每個使用者只能訪問自己的資料
- 鏈路追蹤,用於理解整個系統和快速定位特定請求的問題
- 日誌,用於資料收集和問題定位
- 可觀測性,沒有度量就沒有優化
對於其中每一點,我們都需要用很長的篇幅來講述其原理和實現,那麼對我們後端開發者來說,要想把這些知識點都掌握並落實到業務系統裡,難度是非常大的,不過我們可以依賴已經被大流量驗證過的框架體系。 go-zero微服務框架就是為此而生。
另外,我們始終秉承工具大於約定和文件的理念。我們希望儘可能減少開發人員的心智負擔,把精力都投入到產生業務價值的程式碼上,減少重複程式碼的編寫,所以我們開發了goctl
工具。
下面我通過書店服務來演示通過go-zero快速的建立微服務的流程,走完一遍,你就會發現:原來編寫微服務如此簡單!
1. 書店服務示例簡介
為了教程簡單,我們用書店服務做示例,並且只實現其中的增加書目和檢查價格功能。
寫此書店服務是為了從整體上演示go-zero構建完整微服務的過程,實現細節儘可能簡化了。
2. 書店微服務架構圖
3. goctl各層程式碼生成一覽
所有綠色背景的功能模組是自動生成的,按需啟用,紅色模組是需要自己寫的,也就是增加下依賴,編寫業務特有邏輯,各層示意圖分別如下:
- API Gateway
- RPC
- model
下面我們來一起完整走一遍快速構建微服務的流程,Let’s Go
!