<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          帶你十天輕松搞定 Go 微服務(wù)系列(二)

          共 2515字,需瀏覽 6分鐘

           ·

          2022-02-21 21:04

          上篇文章開始,我們通過一個(gè)系列文章跟大家詳細(xì)展示一個(gè) go-zero 微服務(wù)示例,整個(gè)系列分十篇文章,目錄結(jié)構(gòu)如下:

          1. 環(huán)境搭建
          2. 服務(wù)拆分(本文)
          3. 用戶服務(wù)
          4. 產(chǎn)品服務(wù)
          5. 訂單服務(wù)
          6. 支付服務(wù)
          7. RPC 服務(wù) Auth 驗(yàn)證
          8. 服務(wù)監(jiān)控
          9. 鏈路追蹤
          10. 分布式事務(wù)

          期望通過本系列帶你在本機(jī)利用 Docker 環(huán)境利用 go-zero 快速開發(fā)一個(gè)商城系統(tǒng),讓你快速上手微服務(wù)。

          完整示例代碼:https://github.com/nivin-studio/go-zero-mall

          服務(wù)拆分

          一個(gè)商城項(xiàng)目可拆分用戶服務(wù)(user)、訂單服務(wù)(order)、產(chǎn)品服務(wù)(product)、支付服務(wù)(pay)、售后服務(wù)(afterSale)...

          每個(gè)服務(wù)都可以再分為 api 服務(wù)和 rpc 服務(wù)。api 服務(wù)對(duì)外,可提供給 app 調(diào)用。rpc 服務(wù)是對(duì)內(nèi)的,可提供給內(nèi)部 api 服務(wù)或者其他 rpc 服務(wù)調(diào)用。整個(gè)項(xiàng)目服務(wù)依賴流程圖大致如下:

          1 用戶服務(wù)(user)

          api 服務(wù)端口:8000rpc 服務(wù)端口:9000
          login用戶登錄接口login用戶登錄接口
          register用戶注冊(cè)接口register用戶注冊(cè)接口
          userinfo用戶信息接口userinfo用戶信息接口
          ............

          2 產(chǎn)品服務(wù)(product)

          api 服務(wù)端口:8001rpc 服務(wù)端口:9001
          create產(chǎn)品創(chuàng)建接口create產(chǎn)品創(chuàng)建接口
          update產(chǎn)品修改接口update產(chǎn)品修改接口
          remove產(chǎn)品刪除接口remove產(chǎn)品刪除接口
          detail產(chǎn)品詳情接口detail產(chǎn)品詳情接口
          ............

          3 訂單服務(wù)(order)

          api 服務(wù)端口:8002rpc 服務(wù)端口:9002
          create訂單創(chuàng)建接口create訂單創(chuàng)建接口
          update訂單修改接口update訂單修改接口
          remove訂單刪除接口remove訂單刪除接口
          detail訂單詳情接口detail訂單詳情接口
          list訂單列表接口list訂單列表接口


          paid訂單支付接口
          ............

          4 支付服務(wù)(pay)

          api 服務(wù)端口:8003rpc 服務(wù)端口:9003
          create支付創(chuàng)建接口create支付創(chuàng)建接口
          detail支付詳情接口detail支付詳情接口
          callback支付回調(diào)接口callback支付回調(diào)接口
          ............

          5 創(chuàng)建項(xiàng)目目錄

          • 創(chuàng)建 mall 工程
          $?mkdir?mall?&&?cd?mall
          $?go?mod?init?mall
          • 創(chuàng)建 common 目錄
          $?mkdir?common
          • 創(chuàng)建 service 目錄
          $?mkdir?service?&&?cd?service
          • 創(chuàng)建 user api,user rpc,user model 目錄
          $?mkdir?-p?user/api
          $?mkdir?-p?user/rpc
          $?mkdir?-p?user/model
          • 創(chuàng)建 product api,product rpc,product model 目錄
          $?mkdir?-p?product/api
          $?mkdir?-p?product/rpc
          $?mkdir?-p?product/model
          • 創(chuàng)建 order api,order rpc,order model 目錄
          $?mkdir?-p?order/api
          $?mkdir?-p?order/rpc
          $?mkdir?-p?order/model
          • 創(chuàng)建 pay api,pay rpc,pay model 目錄
          $?mkdir?-p?pay/api
          $?mkdir?-p?pay/rpc
          $?mkdir?-p?pay/model
          • 最終項(xiàng)目目錄
          ├──?common???????????#?通用庫
          ├──?service??????????#?服務(wù)
          │???├──?order
          │???│???├──?api??????#?order?api?服務(wù)
          │???│???├──?model????#?order?數(shù)據(jù)模型
          │???│???└──?rpc??????#?order?rpc?服務(wù)
          │???├──?pay
          │???│???├──?api??????#?pay?api?服務(wù)
          │???│???├──?model????#?pay?數(shù)據(jù)模型
          │???│???└──?rpc??????#?pay?rpc?服務(wù)
          │???├──?product
          │???│???├──?api??????#?product?api?服務(wù)
          │???│???├──?model????#?product?數(shù)據(jù)模型
          │???│???└──?rpc??????#?product?rpc?服務(wù)
          │???└──?user
          │???????├──?api??????#?user?api?服務(wù)
          │???????├──?model????#?user?數(shù)據(jù)模型
          │???????└──?rpc??????#?user?rpc?服務(wù)
          └──?go.mod

          一些思考

          微服務(wù)拆分并沒有統(tǒng)一的標(biāo)準(zhǔn),相同的業(yè)務(wù)在不同的公司很可能拆分方式會(huì)有所區(qū)別,用戶規(guī)模、團(tuán)隊(duì)大小、組員能力等都會(huì)是考慮因素。但我們還是有一些基本原則可以遵循:

          • 由粗到細(xì),避免過度拆分,遵循漸進(jìn)式演進(jìn)的原則
          • 不同服務(wù)之間應(yīng)該是正交的,不要你中有我我中有你
          • 避免環(huán)形依賴,服務(wù)依賴關(guān)系應(yīng)該是有向無環(huán)圖
          • 避免不同服務(wù)之間共享同一個(gè)數(shù)據(jù)庫

          go-zero 也是一個(gè)漸進(jìn)式微服務(wù)框架,你可以在業(yè)務(wù)早期使用單體來快速滿足業(yè)務(wù),當(dāng)業(yè)務(wù)增長并有需要的時(shí)候,做最小的改動(dòng)即可做到漸進(jìn)式的服務(wù)拆分。



          推薦閱讀


          福利

          我為大家整理了一份從入門到進(jìn)階的Go學(xué)習(xí)資料禮包,包含學(xué)習(xí)建議:入門看什么,進(jìn)階看什么。關(guān)注公眾號(hào) 「polarisxu」,回復(fù)?ebook?獲??;還可以回復(fù)「進(jìn)群」,和數(shù)萬 Gopher 交流學(xué)習(xí)。

          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  自拍偷拍第3页 | 亚洲五月丁香影院 | 草青青在线免费视频 | 在线观看AA片 | 成人做爰视频网站 |