要具有高併發的經驗確實須要有實際項目,由於業務邏輯其實很容易理清,可是要在高併發的狀況下如何找到業務繁忙的熱點並進行優化,徹底只能憑經驗.
假如沒有靠譜的公司,接觸不到高併發的業務場景怎麼辦?
從處理技巧上,能夠經過大牛學習高併發的架構,好比張宴:張宴的博客 - Web系統架構與底層研發.至少你能夠知道處理高併發的業務邏輯是:
前端
前端:異步請求+資源靜態化+cdn
python
後端:請求隊列+輪詢分發+負載均衡+共享緩存nginx
數據層:redis緩存+數據分表+寫隊列redis
存儲:raid陣列+熱備算法
網絡:dns輪詢+DDOS***防禦apache
對於高併發並無什麼通用解決方案,必須根據業務場景進行分析,不一樣的業務場景對於架構的取捨是不同的.但萬變不離其宗,掌握這些處理高併發的分析方法仍是頗有必要的.
如何學習高併發的工具?
處理高併發的開源輪子其實不少.不少高併發的架構分享都會說起使用的工具,本身多留心,再看看手冊,有條件本身搭起來跑一跑.
redis,nginx/Tengine,keeplive,DRBD,heartbeat這些小工具仍是能夠在虛擬機上面多開幾臺跑起來的.至於大業務場景,除了進大公司沒有別的辦法,由於有些工具運行的配置要求過高,必須多臺服務器配合才能完成.
如何模擬高併發場景?
並非只有實際生產環境才能測試高併發,其實模擬高併發的輪子也不少,最經常使用的apache benchmark,winrunner,loadrunner,這些教程不少,用來模擬基本的高併發業務綽綽有餘,本身安裝試用版,學學如何用,模擬些經常使用的業務.
若是有精力,業內很喜歡用perl,python,C來寫一些針對熱點業務的負載腳本.這須要有http協議等網絡封包的理論基礎.後端
一些建議
處理高併發要學習的東西實在太多.要在沒有實際工做經驗的狀況下逐一瞭解太難,也很難深刻.對於高併發的學習,我建議除了多閱讀高併發架構的文檔學習基本的方法論之外,本身要去深刻學習網絡基礎,數據結構和算法.這些都是處理高併發熱點的理論基礎.緩存
原文:
http://www.zhihu.com/question/21177474/answer/17434460服務器