儲存的瓶頸終篇(8)

2021-08-20 20:01:21 字數 2841 閱讀 3101

在開始本篇主要內容前,我們一起看看下面的幾張截圖,首先是第一張圖,如下圖所示:

這是一家電商**的首頁,當我們第一次開啟這個首頁,**會彈出乙個強制性的對話方塊,讓使用者選擇貨物配送的位址,如果是**和京東的話,那麼這個選擇配貨位址的選項是在商品裡,如下圖是**的選擇配送地點:

下圖是京東選擇配貨地點:

那麼圖一跟京東和**有什麼區別呢?圖一的電商強制使用者選擇地區後,那麼我們在查詢這個商品時候會因為地區不同,顯示的查詢結果會不一樣,這個就和**做國際化有點像,不過**國際化是切語言和語言相關的靜態資源,但是電商這個地域的選擇是和業務相關的,不同的地域查詢結果是不相同的,這個選擇地域的彈出框很像乙個路由器。相比之下,**和京東把商品的配送和商品相關,那麼我們在這些**裡查詢商品時候,其實是按照全國查詢的,全國不同的地方查詢同乙個條件所獲得到的結果是一致的。從業務角度而言,這說明第乙個電商的業務沒有全國鋪開,就算是鋪開了,地域的差異也影響到物流的問題,而**和京東則正是乙個全國意義的大型電商**了。

回到技術的角度,這兩種不同的做法有沒有可能還和技術問題有關了?今天我就來**下這個問題。

我曾了解到中國一家大型資訊企業在設計它們第一代系統時候,就考慮到了這種地域性差異對系統設計的影響,它們的第一代系統在儲存層這塊就設計成了乙個雙核系統,什麼叫做儲存層的雙核系統了?它們的做法是在北京和上海分別建立兩個資料中心,系統的儲存層分別部署在北京的資料中心和上海的資料中心,兩個資料中心是等價的,那麼中國北部的交易就走北京資料中心,中國南部的交易就走上海的資料中心。但是系統上線後,發現這種雙核設計方案成為了整個系統的夢魘了,這個夢魘的最核心的問題就是資料的同步問題,因為該企業是乙個全國性業務的企業,因此有大量交易需要南北資料中心同步完資料後才能正常完成,但是想從北京和上海同步資料的效率是異常的低效,我曾經看過乙份資料,裡面說有機構做了乙個測試,當兩個資料中心的距離超過了80公里,那麼網路的延遲性基本是無法忍受的,當然不差錢的企業可以專門鋪設專線來連線兩個資料中心,這種專線的成本高的嚇人,我曾聽人說就在上海,如果鋪專線從浦東到浦西,那麼這條專線基本是用人民幣鋪就的,更何況是從北京到上海鋪專線,就算企業不差這些錢延遲性也嚴重影響了企業業務的發展。除了延遲性外,通過網路大規模傳輸資料,資料的可靠性是很難保證的,也就是網路傳輸時候經常沒有道理的丟包,這就造成了很多重複性傳輸,使得同步資料的效率更加的低效。

因為儲存層這種雙核設計缺陷,該企業馬上從事了二代系統的設計和開發,而這個二代系統核心業務就是解決這個儲存層的雙核問題。那到底該怎麼解決了?把雙核變成單核,既然兩個資料中心這麼麻煩,那我們就搞乙個資料中心算了,既省錢有沒那麼多麻煩事情,這個肯定不是解決問題的正確思路了,雙核設計的出發點是非常有現實意義和價值的,最後該公司使用了乙個新的方案替代雙核,這個方案稱之為主備方案,儲存層任然部署到兩個資料中心,到了業務執行階段,乙個資料中心為主,乙個資料中心為輔,不過這個主備方案絕不是通常意義的資料備份方案,他其實是吸收了單核和雙核方案的優點,同時盡量避免單核和雙核的缺點,那麼這點上這個主備方案是如何做到的呢?

回到開篇提到的那三張截圖,那個一開始彈出地域選擇框的電商**,當我們選擇不同的地域時候,查詢同樣的商品最後顯示的商品列表是不同,而京東雖然也有地域選擇,但是我們切換地域後查詢商品後結果基本沒有變化,至於**和天貓壓根就沒有讓我們選擇地域的選項,配送都是在商品這邊進行選擇的。可能**和天貓沒有自營業務,因此天貓很難控制裡面商家的地域區別,京東和前面哪家電商**因為大部分是直營業務,因此配送位址和他們倉儲所在地是有關係的,其實這個做法衍生下的話,地域其實還可以做到資料中心的劃分,例如江滬浙用乙個資料中心,中部地區用乙個資料中心,那麼這種方式就可以幫助我們解決儲存層的就近問題,從這裡我們似乎也可以看出b2c和c2c的業務場景的一些區別。

由此我可以做乙個總結,首先儲存層做到對等多核的體系基本是不可能的,主備的方案可以解決單核和多核的缺點,同時可以發揚單核和多核的優點,距離的遠近也能產生業務的差異性,我們可以通過這種差異性把資料中心變成分布式,這樣還可以解決資料訪問的就近原則。

美國的網際網路公司規模很大,他們從一開始就是全球化的,那麼對於美國的大型網際網路公司將資料中心分散化和本地化就變的非常重要,所以好的儲存層的分布設計方案是完成**全球布局任務的基礎。但是對於很多中小企業,或者是剛剛創業的公司能在不同地域建立資料中心,或者不差錢但是能快速的建立不同地域的資料中心其實是非常難的事情,那麼這個時候我們找一家全球性的雲平台例如亞馬遜的雲平台,或者我們的業務就侷限在中國,使用個本土優秀的雲平台也是一種不錯的選擇,雲計算的推廣使得創業者的成本越來越低了。

好了,本系列的文章到此為止,本系列都是在講資料庫的問題,我曾經說過任何程式或軟體都是計算和儲存的結合體,本系列著重講到的是儲存,時下很多大型網際網路公司在儲存這塊已經發生了很大的變化,在關聯式資料庫這塊都已經做到了去商業關聯式資料庫,而使用開源的關聯式資料庫,並將這些開源的關係資料進行了大規模的改造,這個做法應該算是網際網路領域關聯式資料庫發展的前沿了,同時將關聯式資料庫很難做到的事情用nosql資料庫來替代也是一種大趨勢。

本系列講述時候設定了乙個很大的前提,那就是盡量保持關聯式資料庫儲存的本性,因此我將很多計算建議遷移到應用層,這個觀點我有很多理由說明它的好處,但是現實中是否是最好的方法,這個就要具體看了,因此我不想去苛求這麼做的合理性,但是邏輯上合理的方案總是會有很多借鑑意義的,這就是我想表達的,至於關於儲存層的計算我傾向於在資料訪問層裡做,因此按照我的思路,最終這個關聯式資料庫儲存層就會變成乙個分布式資料庫,資料訪問層當然也是使用分布式系統原理來做,講解分布式系統也是本文章後續想討論,如果我有時間接著寫這個大系列部落格我會在分布式系統這塊繼續講解資料訪問層的設計問題。

原文:

儲存效能瓶頸分析

以下是儲瓶頸發生最常見的四種典型情況 當多個使用者同時訪問某一業務應用,無論是郵件伺服器,企業資源規劃 erp 系統或資料庫,資料請求會累積在佇列中。單個 i o 的響應時間開始增長,短暫延時開始轉變成為漫長的等待。這類響應時間敏感型應用的特徵是,很多隨機請求,讀取比寫入更多,i o 較小。最好的方...

程式設計師的發展瓶頸 如何突破瓶頸,瓶頸 突破瓶頸

首先要做到下面這些.1.自學能力是競爭力之本 2.自信能讓你與眾不同 3.興趣是學習效率的催化劑,培養自己的職業興趣。4.設定專案目標,以做專案的形式提公升學習效果,切忌無目標地學到哪算哪。5.話語權首先來自能力。6.難學的技能一旦掌握更具競爭優勢。7.用階段性成果不斷增強自己的自信,但最終支援自信...

造成儲存效能瓶頸的三大常見原因

造成儲存瓶頸的主要原因有哪些?其中包括虛擬儲存管理不善 應用所分配儲存資源不足或型別錯誤,以及糟糕的儲存設計。針對這三項問題,我們將分別進行 1.虛擬儲存管理不善 如果不對it架構進行監控,那麼儲存陣列或子系統上的眾多虛擬機器將對資源進行爭奪。如果單純為虛擬機器分配乙個邏輯單元號 簡稱lun 且不加...