12306 日點(diǎn)擊量達(dá)到1577.8億,在剛上線的時(shí)候,買火車票太卡。他們做了很多的改進(jìn)。有哪些呢? 咱不是開發(fā)人員,也沒法直接接觸,只能從網(wǎng)上搜羅來學(xué)習(xí)一下。
高負(fù)載高并發(fā)解決
1 異步交易排隊(duì)。 查詢是否有票是一個(gè)耗時(shí)任務(wù),需要大量計(jì)算,如果http請(qǐng)求一直等待計(jì)算結(jié)束,則會(huì)阻塞web服務(wù),導(dǎo)致web無法響應(yīng)用戶。 那么建立一個(gè)交易隊(duì)列,將交易請(qǐng)求加入到交易隊(duì)列中,直接返回給用戶提交成功的相應(yīng),隨后隔段時(shí)間查詢一次執(zhí)行結(jié)果即可異步購票。
2 Pivotal GemFile 一個(gè)分布式的內(nèi)存數(shù)據(jù)庫。
https://pivotal.io/pivotal-gemfire
特點(diǎn)
2.1 穩(wěn)定高效,基于內(nèi)存
2.2 靈活的cache部署策略
2.3 分布式處理
2.4 高可用性和容錯(cuò)性 ,存在多個(gè)基于內(nèi)存的熱備份。
2.5 數(shù)據(jù)可以全內(nèi)存,也可以使用LRU策略房以一部分
2.6 并行查詢
例子: https://www.programcreek.com/java-api-examples/index.php?api=org.springframework.data.gemfire.GemfireTemplate
3 使用了阿里云的基于需求的伸縮性的云平臺(tái)