分布式抽獎秒殺系統,DDD架構設計和實現分享


作者:小傅哥
博客:https://bugstack.cn

沉淀、分享、成長,讓自己和他人都能有所收獲!😄

一、用大項目,貫穿知識體系

寫CRUD、堆API、改屎山⛰,熬多少個996也只是成為重復的螺絲釘。如果你希望捅破現有工作的瓶頸,拉高一下對技術的認知,那么就非常需要一個大項目來貫穿常用技術棧的知識體系。碎片化斷層的背八股文,是解決不了這個事情

那怎么辦?當然是要肝項目了,肝一個有互聯網技術體系有分布式架構運用有DDD思想和設計模式實踐的真實場景項目,才能讓一個尚未接觸此類項目或是長期陷入CURD的熟練工,打開視野,快速成長起來。

整整半年,小傅哥都在做這件事情,直到今天才完成整個系統的第一期設計實現和落地。在這個《分布式抽獎系統》項目中,我會帶着大家以DDD架構和設計模式落地實戰的方式,進行代碼開發視頻介紹文檔說明的方式講解和實現分布式抽獎系統,那么這里會涉及到很多DDD的設計思路和設計模式應用,以及互聯網大廠開發中所應用到的技術,包括:SpringBoot、Mybatis、Dubbo、MQ、Redis、Mysql、ELK、分庫分表、Otter 等。

二、四層架構,領域驅動設計

Lottery 抽獎系統 項目是一款互聯網面向C端人群營銷活動類的抽獎系統,可以提供抽獎活動玩法策略的創建、參與、記賬、發獎等邏輯功能。在使用的過程中運營人員通過創建概率類獎品的抽獎玩法,對用戶進行拉新、促活、留存,通常這樣的系統會用在電商、外賣、出行、公眾號運營等各類場景中。

1. DDD 四層架構

  • 此系統架構為 DDD 領域驅動設計的四層架構實現方式,以重視代碼實現落地的方式向讀者介紹和展示如何開發這樣的代碼。
  • 在 Domain 領域層逐步通過拆解系統流程設計,按照職責邊界的領域模塊進行設計和開發,最終在應用層進行邏輯功能編排。
  • 這個系統中會體現出很多的設計模式思想和最終的實現,只有把 DDD 和設計模式結合起來,才能開發出更加易於擴展和維護的代碼結構。

2. 分布式工程設計

整體系統架構設計包含了6個工程:

  1. Lottery:分布式部署的抽獎服務系統,提供抽獎業務領域功能,以分布式部署的方式提供 RPC 服務。
  2. Lottery-API:網關API服務,提供;H5 頁面抽獎、公眾號開發回復消息抽獎。
  3. Lottery-Front:C端用戶系統,vue H5 lucky-canvas 大轉盤抽獎界面,講解 vue 工程創建、引入模塊、開發接口、跨域訪問和功能實現
  4. Lottery-ERP:B端運營系統,滿足運營人員對於活動的查詢、配置、修改、審核等操作。
  5. DB-Router:分庫分表路由組件,開發一個基於 HashMap 核心設計原理,使用哈希散列+擾動函數的方式,把數據散列到多個庫表中的組件,並驗證使用。
  6. Lottery-Test:測試驗證系統,用於測試驗證RPC服務、系統功能調用的測試系統。

3. 凝練流程領域

  • 拆解功能流程,提煉領域服務,一步步教會你把一個業務功能流程如何拆解為各個職責邊界下的領域模塊,在通過把開發好的領域服務在應用層進行串聯,提供整個服務鏈路。
  • 通過這樣的設計和落地思想,以及在把流程化的功能按照面向對象的思路使用設計模式進行設計,讓每一步代碼都變得清晰易懂,這樣實現出來的代碼也就更加易於維護和擴展了。
  • 所以,你在這個過程中學會的不只是代碼開發,還有更多的落地思想實踐在這里面體現出來。也能為你以后開發這樣的一個項目或者在面試過程中,一些實際復雜場景問題的設計思路,打下不錯的基礎。

三、學習介紹,教你怎么上車

包括:文檔視頻代碼作業,四方面結合的方式進行學習,所以也能讓即使缺少編碼經驗的在校學生、應屆生或者是CRUD熟練工,都能快速加入項目進行學習。

  • 課程分為:大廠規范領域開發運營后台應用場景系統運維,共5章34節來講解DDD分布式系統的架構設計和實踐落地。
  • 只要你能認真跟着敲下來,22年的 Offer 不會便宜!真的是研發能力有差異嗎,其實不是,你差的只是一個有人帶着你肝的大型系統而已!

1. 學習目錄

  • 第 1 部分 大廠規范

    • 第01節:大廠碼農開發基礎
    • 第02節:需求怎么來的
    • 第03節:系統架構設計
    • 第04節:進入開發階段
    • 第05節:系統上線維護
  • 第 2 部分 領域開發

    • 第01節:環境、配置、規范
    • 第02節:搭建(DDD + RPC)架構
    • 第03節:跑通廣播模式RPC過程調用
    • 第04節:抽獎活動策略庫表設計
    • 第05節:抽獎策略領域模塊開發
    • 第06節:模板模式處理抽獎流程
    • 第07節:簡單工廠搭建發獎領域
    • 第08節:活動領域的配置與狀態
    • 第09節:ID生成策略領域開發
    • 第10節:實現和使用分庫分表
    • 第11節:聲明事務領取活動領域開發
    • 第12節:在應用層編排抽獎過程
    • 第13節:規則引擎量化人群參與活動
    • 第14節:門面接口封裝和對象轉換
    • 第15節:搭建MQ消息組件Kafka服務環境
    • 第16節:使用MQ解耦抽獎發貨流程
    • 第17節:引入xxl-job處理活動狀態掃描
    • 第18節:掃描庫表補償發貨單MQ消息
    • 第19節:設計滑動庫存分布式鎖處理活動秒殺
  • 第 3 部分 運營后台

    • 第01節:UI工程搭建
    • 第02節:活動列表數據展示
  • 第 4 部分 應用場景

    • 第01節:搭建微信公眾號網關服務
    • 第02節:【作業】vue H5 大轉盤抽獎
  • 第 5 部分 系統運維

    • 第01節:在雲服務器部署 Docker
    • 第02節:部署環境 Redis
    • 第03節:部署環境 Kafka
    • 第04節:部署環境 Mysql
    • 第05節:部署環境 xxl-job
    • 第06節:部署環境 nacos

2. 你會學到什么

  • 分布式系統架構如何開發(RPCMQ分布式任務分庫分表)
  • DDD 四層架構設計與設計模式的結合落地
  • 互聯網大廠的代碼開發規范、需求評審、運維監控
  • Docker 運維實踐,環境、部署、配置、監控、日志等

3. 適宜人群

  • 具備 Java 編程基礎的研發人員,想提升自己的技術能力
  • 希望提升編碼思維,剔除到代碼中的壞味道
  • 有意願成為架構師,但還處在一定瓶頸期
  • 想加入大廠做碼農,但總感覺找不到門路

4. 加入學習

5. 課代表作業

講真,我遇到了一個懂我的人!

在實戰項目學習中,有一個課代表,每一次分享作業都可以用精致來形容,她的學習速度超級快,也可以非常清晰的分析出每一塊的流程並配上流程圖,如下:

  • 我也希望有更多的優秀的你,與我一起學習、成長、賺錢,22年,我們加油!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM