淘宝网秒杀需求分析与实现 - 公开课笔记
主要內容
- 高并發系統架構面試的時候被問到該怎么說?
- 一個高并發系統中有哪些重要指標項?
- 從真實需求觸發拆解淘寶網秒殺系統
…
消息中間件解耦、消峰、限流
分布式鎖,限流,熔斷,分布式事務,阿里云動態擴容
高并發系統架構在面試的時候應該怎么說
不要聊具體應用的技術,應該提升到架構方面的角度聊。
問:之前做過項目有沒有并發量比較高的技術點?
要明確:多高的并發量?1000人在線/每秒10T網絡流量/接口的訪問頻次…哪個指標?
TPS
- 互聯網項目:
- 傳統應用
多條記錄寫入多個數據庫:是事務
讀數據庫緩存:只讀也叫事務,只要訪問了資源,就叫事務
靜態文件的訪問是不是TPS?沒有嚴格的定義
一般來說,消耗資源的叫TPS,查詢操作叫QPS
一般請求分為兩種:
純靜態資源請求、動態資源請求
QPS:純靜態請求不會打到系統里,會放在CDN上,所以聊QPS不是很專業
TPS:業務接口請求,才是衡量并發量的重要指標,例如瓜子二手平時TPS能達到300~500,峰值1000~1500,58同城平時500~1000,12306平時1000~2000,12306的問題不在于TPS高,而在于一致性問題,網上賣出票,線下也要扣掉。會因為鎖機制讓用戶連接超時,導致12306不穩定
一個項目的TPS有多高,要看總的請求數。拆分為不同的系統,流量分攤到不同的系統上。
一次請求Q可以有好幾個Transaction,或者跨了別的系統(微服務)
TPS怎么算的:TPS是指一秒內完成多少個請求,代表處理能力。
動態請求包括:推薦系統、當前會話的狀態、關注的人
主頁index.html可以放在CDN上
APP、Web
Web服務的QPS極高,如何降低系統負載,降低網絡帶寬?如果一次請求拉一個CSS回來,如果一個頁面有20個CSS,瀏覽器要發20次請求,用戶體驗肯定不好。
一次請求拉1個css文件和一次請求拉20個css文件哪個好?文件大小也是要考慮的瓶頸,文件過大,網絡包的開銷較大,如果此時網絡出現抖動(跳ping),會出現一個沒有樣式的頁面。所以一次請求先把基本樣式拉回來,后面的請求再拉額外的CSS做覆蓋操作
基于nginx開發的Tengine可以合并請求,nginx直接把請求發送給內核,返回給網卡,不再經過nginx
雪碧圖:可以用css把大圖拆分
APP可以通過緩存或預加載的方式(默認css,logo等,可以提前下發到包里,或做緩存,一次加載之后存在本地)
微服務系統架構里都有網關
微服務三原則:不主動、不拒絕、不負責
你給我活,我就干,我把請求轉發給你,你愛接不接,我不管。(解耦)
網關做網關的活,服務做服務的活。相互不影響。
找之前的項目里是否有高并發的點
高并發場景:銀行系統里的登錄、大學選課、考試交卷
聊天:ERP系統用的通知機制(后臺入口,通知放進去,不可能所有通知一起發完,可以用mqtt)客戶端分兩類:支持socket的做長連接,不用socket可以做輪詢。取決于客戶端支不支持長連接。
數據批量上報
高并發相關的主要技術棧
Nginx做網關
Nginx做二次開發
Nginx直接寫博客:用C/Lua
Nginx沒有會話的概念,性能極高。Tomcat最消耗性能的是會話。用Netty開發的也是可以的。簡單情況下區別不大,
Nginx做反向代理,但是不適合做機房的總入口
總結
以上是生活随笔為你收集整理的淘宝网秒杀需求分析与实现 - 公开课笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Java】HashMap的数据结构、源
- 下一篇: 使用 Flask-apidoc 自动生成