內容導讀
本文包含課程整體介紹、截圖及視頻試看,
主要涉及如下內容:
1.課程背景+什麼是秒殺系統,秒殺場景以及設計理念(視頻)
2.課程研發環境及內容簡介
3.講師介紹
4.課程大綱
5.學習目標
一、課程背景
播放
暫停
進入全屏
退出全屏
00:00
00:00
重播請
刷新
試試如果趕上一個語言火的時候,您想不賺錢都難,android ,蘋果,大數據,python我們沒有趕上第一批,現在go語言您還想錯過嗎?
現在go語言已經在大公司開始使用,在做服務這塊慢慢已經走上熱點,現在go語言視頻很少而且很基礎,我們早已經帶著學員開始做實戰了。go語言大神班為有一定基礎且想深入學習go的學員量身打造,拒絕平庸,與眾不同!
專技術:對整個大數據生態圈的相關技術都有一定的研究,深入理解Go的原理,熟練使用GO技術解決各種業務需求。通過我們課程中的企業級項目和通俗易懂的知道點分析讓你更加深了的掌握Go技術!
懂架構:對業務有一定的瞭解,並且可以根據不同的業務場景設計出最優的技術架構。通過我們課程中的企業真實項目,全方位掌握項目的整個開發週期,達到觸類旁通的目的!
擅調優:一般其他語言開發項目一般都有一定的性能瓶頸,使用GO需要深入掌握項目技術架構特點和技術原理方可對項目中的瓶頸進行調優。通過項目中的調優經驗讓你掌握該技能!
善溝通:GO在項目中扮演一個非常重要的角色,一般是在企業裡做服務這塊,需要跟各個部門進行協調溝通,所以要具備良好的溝通能力,業務對接能力!
二、課程研發環境及內容簡介
1.課程研發環境
項目源代碼以Go1.9.2為基準,數據庫以mysql為基準,以下環境都適用於項目。
開發工具:VScode;
數據庫工具:mysql
2.內容簡介
什麼是秒殺
秒殺場景一般會在電商網站舉行一些活動或者節假日在12306網站上搶票時遇到。對於網站中一些稀缺或者特價的產品,電商網站一般會在約定的時間對其進行限量銷售,因為這些產品的特殊性,會吸引大量用戶前來搶購,並且會在約定時間同時在秒殺頁面進行搶購。
設計思路
將請求攔截在系統上游,降低下流壓力;秒殺系統特點就是併發量極大,但實際秒殺成功的請求數量確很少,所以如果不在前端攔截可能造成數據庫讀寫鎖衝突,甚至導致死鎖,最終請求超時,甚至導致系統崩潰
充分利用緩存:利用緩存可以極大提高系統讀寫速度
消息隊列:消息隊列可以削峰,將攔截大量併發的請求,這也是一個異步處理過程,後臺業務根據自己的處理能力,從消息隊列中主動的拉取請求消息進行業務處理
前端方案
瀏覽器端(js):
頁面靜態化:將活動頁面上的所有可以靜態的元素全部靜態化,並儘量減少動態元素,通過CDN來抗峰值
禁止重複提交:用戶提交之後按鈕置灰,禁止重複提交
用戶限流:在某一時間內只允許用戶提交一次請求,比如可以採取IP限流
後端方案
服務器控制器層(網關層)
限制UID(userID)訪問頻率:我們上面攔截了瀏覽器的訪問請求,但準對某些惡意請求和攻擊或者其他插件,在服務器控制層要準對同一個uid,限制訪問頻率
服務層
上面只攔截了一部分請求,當秒殺的用戶量非常大時,即使每個用戶只有一個請求,到服務層的請求數量還是很大。比如我們有100w用戶同時搶購100臺手機,服務層併發請求壓力至少為100w。
1.採用消息隊列緩存請求:既然服務器層知道庫存只有100臺手機,那完全沒有必要把100w個請求都傳遞到數據庫裡,那麼可以先把這些請求都寫到消息隊列裡面緩存一下,數據庫層訂閱消息減少庫存,減庫存成功的請求返回秒殺成功,失敗的返回秒殺結束
2.利用緩存應對讀請求:對類似12306等購票業務,是典型的讀多寫少業務,大部分請求時查詢請求,所以可以利用緩存分擔數據庫壓力
3.利用緩存對寫請求:緩存也是可以應對寫請求,比如我們可以把數據庫中庫存數據遷移到Redis緩存中,所有減庫存操作都在Redis中進行,然後通過後臺進程把Redis中的用戶秒殺請求同步到數據庫中
數據庫層
數據庫層是最脆弱的一層,一般在應用設計時在上游就需要把請求攔截,數據庫層只承擔“能力範圍內”的訪問請求。所以,上面通過在服務層引入的隊列和緩存,讓底層的數據庫高枕無憂
三、講師介紹
Andy老師:
區塊鏈、Java、大數據項目講師, 10餘年軟件研發及企業培訓經驗,豐富的企業應用軟件開發經驗、深厚的軟件架構設計理論基礎及實踐能力。
為中石化,中國聯通,中國移動等知名企業提供企業培訓服務。
擅長領域
區塊鏈: BitCoin、Solidity、Truffle、Web3、IPFS、Hyperledger Fabirc、Go、RAS;
大數據:Hadoop、HDFS、MapReduce、HBase、Kafka、Spark、CDH 5.3.x集群;
項目開發歷程:基於大數據技術推薦系統 ,醫療保險大數據分析與統計推斷,H5跨平臺APP,攜程酒店APP,go語言實現storm和zk類似框架。
四、課程大綱
第01講:什麼是秒殺,秒殺場景以及設計理念
第02講:秒殺架構方案前端後端和服務器層介紹
第03講:秒殺數據層和利用中間件和緩存實現
第04講:秒殺系統的設計和分層介紹
第05講:秒殺模塊劃分和秒殺接入層核心功能
第06講:秒殺系統go環境的安裝
第07講:秒殺系統git的安裝和vscode使用
第08講:秒殺系統vscode工具的配置
第09講:秒殺接入層beego的搭建
第10講:秒殺系統接入層beego讀取配置文件
第11講:秒殺系統代碼實戰redis和etcd配置信息
第12講:秒殺系統代碼實戰redis配置信息
第13講:秒殺系統代碼實戰redis在window上面安裝
第14講:秒殺系統代碼實戰redis初始化測試
第15講:秒殺系統代碼實戰redis總結
第16講:秒殺系統代碼實戰etcd的實戰配置
第17講:秒殺系統代碼實戰etcd的實戰讀取配置信息
第18講:秒殺系統代碼實戰etcd的安裝
第19講:秒殺系統代碼實戰etcd的bug修改
第20講:秒殺系統代碼實戰日誌配置
第21講:秒殺系統代碼實戰業務邏輯讀取ectd產品信息
第22講:秒殺系統代碼實戰業務邏輯設置ectd產品信息
第23講:秒殺系統代碼實戰業務邏輯ectd讀寫總結
第24講:秒殺系統代碼實戰業務json反解析成對象
第25講:秒殺系統代碼實戰key的拼裝
第26講:秒殺系統代碼實戰etcd其他知識總結
第27講:秒殺系統代碼實戰對etcd的key變化監聽
第28講:秒殺系統代碼實戰對etcd的key監聽變化做業務邏輯處理
第29講:秒殺系統代碼實戰對service層的設計
第30講:秒殺系統代碼實戰控制層和service層的對接
第31講:秒殺系統代碼實戰接入層的5鍾狀態完善
第32講:秒殺系統代碼實戰列出所有的產品信息
第33講:秒殺系統代碼實戰驗證用戶的合法性
第34講:秒殺系統代碼實戰防刷參數初始化
第35講:秒殺系統代碼實戰防刷具體功能實戰
第36講:秒殺系統代碼實戰防刷遺留問題解決
第37講:秒殺系統代碼實戰防刷返回錯誤信息
第38講:秒殺系統代碼實戰Ip進行限流控制
第39講:秒殺系統代碼來源地址的控制
第40講:秒殺系統代碼實戰黑名單控制功能
第41講:秒殺系統代碼實戰黑名單保存到redis裡面
第42講:秒殺系統代碼實戰讀請求的req寫入和讀取redis
第43講:秒殺系統代碼實戰接入層完整的演示和解說
第44講:秒殺系統代碼實戰邏輯層的環境搭建和配置文件的初始化
第45講:秒殺系統代碼實戰邏輯層的日誌的初始化
第46講:秒殺系統代碼實戰邏輯層的初始化redis信息
第47講:秒殺系統代碼實戰邏輯層的初始化ETCD的配置信息
第48講:秒殺系統代碼實戰邏輯層的讀取配置文件裡面的etcd的信息
第49講:秒殺系統代碼實戰邏輯層etcd產品信息的讀取和etcd產品信息的監聽
第50講:秒殺系統代碼實戰邏輯層從redis中讀取商品信息
第51講:秒殺系統代碼實戰邏輯層從redis中讀取商品信息功能修改
第52講:秒殺系統代碼實戰邏輯層業務邏輯處理寫入到redis裡面
第53講:秒殺系統代碼實戰邏輯層業務邏輯處理redis的定時超時任務
第54講:秒殺系統代碼實戰邏輯層業務邏輯處理產品售完邏輯
第55講:秒殺系統代碼實戰邏輯層業務邏輯處理購買產品是否超速
第56講:秒殺系統代碼實戰邏輯層業務邏輯處理產品總數和概率實現
第57講:秒殺系統代碼實戰邏輯層業務邏輯處理返回值處理
第58講:秒殺系統代碼實戰web控制層之beego的環境搭建
第59講:秒殺系統代碼實戰web控制層配置文件的初始化
第60講:秒殺系統代碼實戰web控制層商品信息的展示
第61講:秒殺系統代碼實戰web控制層商品信息的展示列表的方法
第62講:秒殺系統代碼實戰web控制層添加商品
第63講:秒殺系統代碼實戰web控制層添加活動任務
第64講:秒殺系統代碼實戰web控制層活動列表的展示
第65講:秒殺系統代碼實戰web控制層活動列表同步到etcd裡面
第66講:秒殺系統代碼實戰web控制層活動列表同步到etcd演示
第67講:秒殺系統代碼實戰總體演示
五、學習目標
目標一. 瞭解Go的環境配置以及如何在項目中進行運用管理
目標二. 瞭解Go框架技術,熟悉beego框架搭建的全過程
目標三. 可以讓學員迅速掌握Go的API及使用技巧
目標四. 可以讓學員熟練使用Beego快速開發後臺服務器交互的注意事項與技巧
目標五. 通過前臺和後臺的分離,讓學生知道企業項目分離
目標六. 通過完整的項目實戰,全面的演示了Go+beego+redis+MySQL技術的綜合使用步驟、過程、注意事項及技巧
目標七. 通過本課程的學習,為學員以後開發使用Go項目提供了完整示範,奠定基礎
完整課程請關注公眾號“北風網IT尖端課程”瞭解!