這是養碼場技術崗位推薦板塊
每周三定期放送!
數據有多牛逼?除了攬獲各大新聞頭條,新歌發售3小時,數字專輯就在QQ音樂賣了360萬張。以單價3元計算,一首《說好不哭》已狂攬千萬,無人匹敵。結果因為訪問量太大,不少網友反映「QQ音樂崩了。。。」在大家眼裡,好像只有微博伺服器是「不堪一擊」的。那天晚上,QQ音樂持續崩潰,杰倫以一己之力成為了幹翻QQ音樂伺服器的男人。
在這首新歌裡,大家還意外看到「周五合體」。還原了經典場景,也掀起了一波關於青春的回憶殺。當回憶和回憶相撞,啪,淚花四濺。
歌迷有沒有被感動哭場主不知道,但是QQ音樂的程式設計師估計是要哭了。不奮戰個一天一夜,怎麼對得起嗷嗷待哺的歌迷朋友們。
諸如雙十一淘寶癱瘓,明星戀情導致微博宕機事件,說到底還是「高並發」的問題。
高並髮帶來的後果
服務端:
導致站點伺服器/DB伺服器資源被佔滿崩潰,數據的存儲和更新結果和理想的設計是不一樣的,比如:出現重複的數據記錄,多次添加了用戶積分等。
用戶角度:
尼瑪,這麼卡,老子來參加活動的,刷新了還是這樣,垃圾網站,再也不來了!
程式設計師的經歷:
在做公司產品網站的過程中,經常會有多樣需求,如果沒有考慮到高並發下的數據處理,就會出現各種超出正常邏輯的現象,因為這些都是面向大量用戶的,而不是像做ERP管理系統只是面向員工。
在這個「雲」的時代,提高分布式系統並發能力的方式,方法論上主要有兩種:垂直擴展(Scale Up)與水平擴展(Scale Out)。
只要增加伺服器數量,就能線性擴充系統性能。虛擬化技術的出現,讓水平擴展變得輕鬆且簡單。現在的雲主機幾乎是虛擬主機,而不是物理主機。這樣的話,線性擴充也就是分分鐘的事,前提是要有足夠的物理主機支撐。單臺伺服器最大並發問題,一般是指一臺伺服器能夠支持多少 TCP 並發連接。一種理論說法是受到埠號範圍限制。作業系統上埠號 1024 以下是系統保留的,從 1024-65535 是用戶使用的。由於每個 TCP 連接都要佔一個埠號,所以我們最多可以有 60000 多個並發連接。但實際上單機並發連接數肯定要受硬體資源(內存、網卡)、網絡資源(帶寬)的限制。特別是網卡處理數據的能力,它是最大並發的瓶頸。C10K 並發連接問題是指單機 1 萬個並發連接問題。如何突破單機性能局限,是高性能網絡編程所必須要直面的問題。這些局限和問題最早被 Dan Kegel 進行了歸納和總結,並首次成系統地分析和提出解決方案,後來這種普遍的網絡現象和技術局限都被大家稱為 C10K 問題。C10K問題本質上是作業系統的問題。對於 Web1.0/2.0 時代的作業系統而言, 傳統的同步阻塞 I/O 模型都是一樣的,處理的方式都是 requests per second,並發 10K 和 100K 的區別關鍵在於 CPU。創建的進程線程多了,數據拷貝頻繁(緩存 I/O、內核將數據拷貝到用戶進程空間、阻塞), 進程/線程上下文切換消耗大,導致作業系統崩潰,這就是C10K 問題的本質。C10M 並發連接問題指的是單機伺服器實現 C10M(即單機千萬並發連接)。回顧過去的 10 年裡,我們面臨高性能網絡編程領域著名的 C10K 問題,最終也成功提出解決方案。下一個 10 年,是時候考慮 C10M 並發問題了。
今日重點結束
在很多程式設計師眼中,掌握海量高並發技能,就能走上人生巔峰。
anyway,學得會就學。場主倒覺得與其痴迷某些技術的尖端,不如解決某些行業的業務落地 今日崗位看起來~/今日崗位推薦/
「養碼場」