參考:https://mp.weixin.qq.com/s?__biz=Mzg2ODU1MTI0OA==&mid=2247485597&idx=1&sn=7e85894b7847cc50df51d66092792453&scene=21#wechat_redirect
為什么選擇go-zero
go-zero 為我們提供了許多高并發場景下的實用工具,比如為了降低接口耗時我們往往需要并發的請求依賴的服務,這個時候我們可以使用 mapreduce 并行的處理請求;面對海量請求為了降低Redis壓力和提高響應時間,我們可以使用 collection 構建本地緩存;避免用戶連續請求造成服務壓力可以使用 limit 做用戶級別的限流等等。好的框架能夠給我的項目開發帶來事半功倍的效果,Go-zero的簡潔易用性與內置的開箱即用的工具和服務治理能力助力我們構建一個高并發高可靠的系統。
產品需求
比較核心的功能點,比如請求量非常高的首頁Banner我們如何優化,搶購商品如何保證不超賣,交易過程中分布式事務的實現等我們都會重點介紹。
以及后邊我自己添加整合的ES加速搜索、客服中心、AI推薦等等。
服務劃分
-
商家服務(shop) - 商家的注冊、登錄
-
商品服務(product) - 商品的添加、信息查詢、庫存管理等功能
-
購物車服務(cart) - 購物車的增刪改查
-
訂單服務(order) - 生成訂單,訂單管理
-
支付服務(pay) - 通過調用第三方支付實現支付功能
-
賬號服務(user) - 用戶信息、等級、封禁、地址管理
-
推薦服務(recommend) - 首頁商品推薦、ES商品搜索、AI商品詢問推薦
-
評論服務(reply) - 商品的評論功能、評論的回復功能
-
客服服務(Customer Service) - 用戶與店鋪客服溝通、店鋪創建群聊
在每個服務目錄下我們又會分為多個服務,主要會有如下幾類服務: -
api - 對外的BFF服務,接受來自客戶端的請求,暴露HTTP接口
-
rpc - 對內的微服務,僅接受來自內部其他微服務或者BFF的請求,暴露gRPC接口
-
rmq - 負責進行流式任務處理,上游一般依賴消息隊列,比如kafka等
-
admin - 也是對內的服務,區別于rpc,更多的是面向運營側的且數據權限較高,通過隔離可帶來更好的代碼級別的安全,直接提供HTTP接口