1. 程式人生 > 其它 >【草稿】【實踐】模擬高併發場景 => 鍛鍊高可用、高效能的系統架構設計能力

【草稿】【實踐】模擬高併發場景 => 鍛鍊高可用、高效能的系統架構設計能力

我們(是我自己而已呢)打算先搞幾個物理伺服器(當前有8臺樹莓派可用),弄個小型交換機和幾根六類網線,組成一個迷你機房。然後在這個內網環境中搞事。

【這裡放幾張樹莓派組裝圖】

但是最近發現樹莓派漲價厲害,而且對於我們後面高併發場景的模擬來說,樹莓派有點兒不夠給力(我猜的),所以打算賣了這幾個派,去閒魚上換幾個dell r710 伺服器來用,目前看上的配置是:12核24執行緒、32G記憶體 2T硬碟,據說是包郵。這玩意兒我以前在學校實驗室看過,2U不厚但挺大的,老重老重了。打算先買兩個回來,再順帶買個電費計量器,放在老家(不知道電費有沒有便宜點兒),然後做個內網穿透,就可以開始遠端操控。

一切的配置都對齊標準:

  1. 學用k8s,搞個叢集出來,然後分配十來個例項;
  2. 搭建gitlab作為程式碼倉庫,外加文件wiki網站。這兩個好像都可以在NAS上面實現,就是一個託管而已;
  3. 從零開始搭建,從零開始記錄,也會招有興趣的朋友來一起組隊做,前期我負責基礎的伺服器、網路和電路搭建。後續在一起做系統架構設計、方案評審、程式碼編碼;
  4. 由於這些整體下來需要不少時間,整體週期偏長,但是我相信一整套坐下來,可以收穫不少。特別是對於在工作中擰螺絲的同學們,相信在我們這裡是可以實現造火箭的理想的;
  5. 因為我們會先寫一個使用者併發訪問的模擬程式,儘量去模擬現實的中高併發場景(時間流量趨勢圖、隨機等策略),一臺服務就可以構造出百萬級別的請求量;
  6. 然後我們再開始去設計系統來滿足這些虛擬使用者的訪問需求。這塊是我們的重點,也是我們要迭代和學習的內容;
  7. 基建之一:r日誌與監控不能少,特別是監控。我們需要去打點,衡量每一個虛擬使用者(執行緒or協程)訪問的耗時,以耗時來衡量使用者體驗(流不流暢)。只是使用者具體的需求,無法模擬,只能參考現實(其實先把典型電商場景搭起來就夠玩很久了);
  8. 最後,我們記錄會同步在這個部落格中,tag主題就叫:億級流量架構研發(前期我們會從萬級開始演化,並做好記錄、監控)

歡迎有興趣的朋友加入一起聊聊,當然,我們也希望你能夠:

  1. 有責任心、有耐心,參加了就要一起耐心的,花時間去做好每一個細節,把它當成跟你工作開發的系統服務一樣認真對待。越認真,越有收穫,敷衍了事不止學不到東西,我們也不會歡迎的哈。前期我會自己先慢慢搭建,慢慢找人,寧缺毋濫嘛;
  2. 通過這個專案,我們(我和你們)可以學到:技術文件撰寫能力、[關鍵]億級流量分散式系統開發經驗(雖是模擬,但至少不是紙上談兵)、團隊協作能力、專案管理能力;
  3. 我的微信:cenyol,公眾號:群二少。剛開通沒內容,後續會同步這個系統的技術實踐文章過去;

初步的大體思路:

  1. 模擬淘寶(典型且大家熟悉常見需求場景),主要完成核心鏈路,包括:百萬使用者註冊請求、千萬登入請求、億級瀏覽(商品列表、商品詳細頁面、購物車、訂單列表、訂單詳情)、千萬級下單請求和支付請求。使用者數量我們會最終逐漸積累到6億條、商品資料我們會到100億條。這一塊的資料,後面可以具體參考淘寶當前的巨集觀資料指標。
  2. 不涉及圖片、CDN等相關技術的應用。核心重點技術是:快取(Redis和本地快取)、MQ(Kafka和RMQ)、MySQL(索引、垂分、水平)、ES、數倉等等。我也是在持續學習中,後面邊學邊用更加高效的技術和元件框架;
  3. 做好監控打點,通過大盤實時觀測瞭解到我們系統的負載能力,知己知彼;
  4. 因為我們模擬是為了鍛鍊我們的能力,更加聚焦在於核心鏈路、高併發場景的編碼能力。所以也就沒有考慮去做一個貼近現實,有實用的分散式系統。一來,有商業價值的地方多了人去做;二來一旦那麼做了,那我們的精力將會大部分花在其他邊邊角角,無法聚焦提升我們的高併發能力。這是我個人的想法,歡迎不同想法的朋友評論交流;
  5. 初期(2022年)可能會達到5臺伺服器;