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