go-micro v2運開實踐-行文初衷

huangyanming發表於2022-04-25

寫在前頭

考慮到近期耗費了不少時間在微服務開發上,在趟了很多坑後獲得了一些自己的理解和實踐。為了鞏固近期學習到的知識,以及為後來者作些許貢獻,打算利用空閒時間來書寫一寫我這段時間內從零到一的實現方案。作為一名有實用原則的程式設計師,行文中我可能並不會對概念方面進行詳細講解。只希望能拋磚引玉讓大家對整個方案的實現有所理解,點到點之間做好連結,從而達到摸清整個微服務的輪廓的目的。原始碼地址

閱讀本文所需知識

  • 具備golang基礎,瞭解grpc
  • 對微服務概念有所理解,使用過go-micro,至少能完成go-micro入門案例
  • 使用過docker,docker-compose,熟悉docker的基本操作
  • 會使用linux

開發工具

以下是作者使用到的開發工具,可以根據自身實際情況進行調整

  • win10
  • docker-desktop
  • goland
  • mysqlWorkbeanch
  • vmware

專案案例

為了展示教學,我們展示不考慮編寫過於複雜的業務。但為了對於知識點有所覆蓋,我們選用比較經典的電商專案進行編碼。主要劃分為三個模組,使用者服務,商品服務,訂單服務 。方便我們展示在微服務中如何實現定時排程,分散式事務,鏈路追蹤,服務治理,分散式日誌,非同步訊息等方案。

微服務框架選擇

這裡我們選擇使用go-micro v2版本,至於為什麼使用go-micro,因為它除了提供基本的RPC遠端呼叫外,還提供了需要實現微服務的各種基礎支援,包括註冊中心、服務發現、負載均衡、API 閘道器、非同步訊息佇列、多種通訊協議和資料序列化格式等,不需要開發者額外編寫程式碼。還可以基於go-micro的外掛機制,對這些功能的驅動進行替換。如註冊中心,可以基於熱拔插機制替換成etcd,consul,k8s,非同步訊息驅動可以替換成市面上比較流行的各種中介軟體,如NATS,RabbitMq。相對來說go-micro是一款靈活擴充性高且功能完備的開發框架。

為什麼不是micro v3?

至作者行文當天,micro v3依然處於商業化探索階段,大部分功能開發測試當中。且v3版本除了一些思想上的延續,與v2基本上不再相同。v2已經獨立出一個倉庫維護了,且micro官網大部分文件已經下架更新中,導致學習框架的成本更高。所以這裡選擇v2,因為v2的使用在github倉庫中依然有大部分的使用案例。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章