W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
目錄拆分是指配合go-zero的最佳實(shí)踐的目錄拆分,這和微服務(wù)拆分有著關(guān)聯(lián),在團(tuán)隊(duì)內(nèi)部最佳實(shí)踐中, 我們按照業(yè)務(wù)橫向拆分,將一個(gè)系統(tǒng)拆分成多個(gè)子系統(tǒng),每個(gè)子系統(tǒng)應(yīng)擁有獨(dú)立的持久化存儲,緩存系統(tǒng)。 如一個(gè)商城系統(tǒng)需要有用戶系統(tǒng)(user),商品管理系統(tǒng)(product),訂單系統(tǒng)(order),購物車系統(tǒng)(cart),結(jié)算中心系統(tǒng)(pay),售后系統(tǒng)(afterSale)等組成。
在上文提到的商城系統(tǒng)中,每個(gè)系統(tǒng)在對外(http)提供服務(wù)的同時(shí),也會提供數(shù)據(jù)給其他子系統(tǒng)進(jìn)行數(shù)據(jù)訪問的接口(rpc),因此每個(gè)子系統(tǒng)可以拆分成一個(gè)服務(wù),而且對外提供了兩種訪問該系統(tǒng)的方式api和rpc,因此, 以上系統(tǒng)按照目錄結(jié)構(gòu)來拆分有如下結(jié)構(gòu):
.
├── afterSale
│ ├── api
│ └── rpc
├── cart
│ ├── api
│ └── rpc
├── order
│ ├── api
│ └── rpc
├── pay
│ ├── api
│ └── rpc
├── product
│ ├── api
│ └── rpc
└── user
├── api
└── rpc
在設(shè)計(jì)系統(tǒng)時(shí),盡量做到服務(wù)之間調(diào)用鏈?zhǔn)菃蜗虻模茄h(huán)調(diào)用,例如:order服務(wù)調(diào)用了user服務(wù),而user服務(wù)反過來也會調(diào)用order的服務(wù), 當(dāng)其中一個(gè)服務(wù)啟動故障,就會相互影響,進(jìn)入死循環(huán),你order認(rèn)為是user服務(wù)故障導(dǎo)致的,而user認(rèn)為是order服務(wù)導(dǎo)致的,如果有大量服務(wù)存在相互調(diào)用鏈, 則需要考慮服務(wù)拆分是否合理。
在上述服務(wù)中,僅列舉了api/rpc服務(wù),除此之外,一個(gè)服務(wù)下還可能有其他更多服務(wù)類型,如rmq(消息處理系統(tǒng)),cron(定時(shí)任務(wù)系統(tǒng)),script(腳本)等, 因此一個(gè)服務(wù)下可能包含以下目錄結(jié)構(gòu):
user
├── api // http訪問服務(wù),業(yè)務(wù)需求實(shí)現(xiàn)
├── cronjob // 定時(shí)任務(wù),定時(shí)數(shù)據(jù)更新業(yè)務(wù)
├── rmq // 消息處理系統(tǒng):mq和dq,處理一些高并發(fā)和延時(shí)消息業(yè)務(wù)
├── rpc // rpc服務(wù),給其他子系統(tǒng)提供基礎(chǔ)數(shù)據(jù)訪問
└── script // 腳本,處理一些臨時(shí)運(yùn)營需求,臨時(shí)數(shù)據(jù)修復(fù)
mall // 工程名稱
├── common // 通用庫
│ ├── randx
│ └── stringx
├── go.mod
├── go.sum
└── service // 服務(wù)存放目錄
├── afterSale
│ ├── api
│ └── model
│ └── rpc
├── cart
│ ├── api
│ └── model
│ └── rpc
├── order
│ ├── api
│ └── model
│ └── rpc
├── pay
│ ├── api
│ └── model
│ └── rpc
├── product
│ ├── api
│ └── model
│ └── rpc
└── user
├── api
├── cronjob
├── model
├── rmq
├── rpc
└── script
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: