1. 程式人生 > >web數據存儲

web數據存儲

缺點 世界 延遲 可用 容易 一主多從 影響 應用程序 分布式

數據的存儲必然是任何網站必須經歷的事,我們可以將數據存放在不同地方,數據庫、文件、內存、程序本身、cookie,session中都可以,但是只要需要持久化保留的數據,那麽最終肯定還是落在磁盤之上的,我們的磁盤可以格式化成各種類型的文件系統,也可以由應用程序直接調用裸盤

一.存儲類型

  1. 塊存儲
  2. 文件存儲
  3. 對象存儲

塊存儲,顧名思義,就是一個單純的塊設備,上面不包含文件系統,一般我們新買的磁盤掛載到服務器上,叫/dev/sdb這種就是一個塊存儲,比如iscsi,共享過來你發現他直接掛載掛不了,提示要先格式化,因為它是一個裸設備,你可以將他格式化成任意的文件系統來掛載使用,就是送給你一塊硬盤的意思

文件存儲就是格式化了塊設備,現在我們一般使用xfs格式了,以前是ext4,,比如最常用的nfs,它的體現是共享過來我們可以直接掛載卸載,但是上面的文件系統是共享者那面格好的,你不能更改,就是送給你一個目錄的意思

對象存儲大多就是分布式的了,它是為了解決塊存儲不容易共享文件存儲不夠快而出現的,如果對象存儲提供了fuse,那麽對象存儲也可以方便的掛載使用,這也是glusterfs的優勢,否則的話就是根據元數據去訪問對應數據的,ceph遵循restfulapi 模式,你需要訪問對應的uri

二.存儲連接方式

技術分享

DAS存儲 (直連式存儲Direct-Attached Storage),直接連接在服務器上的存儲,第一反應就是磁盤嘍

NAS存儲 (網絡接入存儲Network-Attached Storage),通過網絡來創建的存儲,sab,nfs就是

SAN存儲 (存儲區域網絡Storage Area Network),通過專門的光纖連接給服務器使用的存儲,多於大型應用或數據庫系統,缺點是成本高,很高….

所以隨著業務的不斷增長,使用分布式文件系統是我們無法逃避的過稱

技術分享

分布式文件系統現在有很多了,推薦大家學習使用ceph跟glusterfs,glusterfs可以用於生產,ceph是現在一個叼叼的分布式文件系統,他集成了塊存儲,文件存儲,對象存儲三種方式,與openstack可以很好的結合,底層是一個對象存儲庫,本質意義上還是一個對象存儲

三.數據庫相關

提到數據庫,大家的第一反應都是,性能瓶頸,慢慢慢,不敢出事,出事了就可以辭職了,要是有DBA是多麽美好的事情

數據庫內存儲數據的架構有如下幾種:

  1. 一臺mysql拯救世界。這種做法一般就在於企業最初期、測試環境使用,因為出事了也無傷大雅
  2. 一主一從,高可用。讀寫都是主庫,然後同步到從庫,主庫出問題了手動切換到從庫,好處是最簡單,也保證了數據的備份,現在使用的人很多;缺點是你需要手動切換,中間還是會有延遲,而且還需要人為參與的延遲,要是他跑去上廁所或者手機關機那真是bi了poi了,再就是壓力都在主庫,讀寫同步都需要技術分享
  3. 一主一從,讀寫分離。寫主庫,同步到從庫,讀數據讀從庫的,但是必須毫無延遲的還是讀主庫,相比於上一種減少了大部分讀壓力;缺點在於需要開發人員的配合,因為只有他知道哪些數據可以延遲哪些不能延遲,還需要多記ip,開發人員不配合那真是bi了poi了技術分享

  4. 一主多從,讀寫分離,讀壓力更加分散,因為一般讀數據的頻率遠大於寫;缺點是各個從節點都需要從主同步數據,從節點越多,需要完全同步完成的時間越長技術分享

  5. 一主多從,負載均衡。使用lvs為讀從節點做集群,寫只寫主節點,好處是原本代碼中控制的讀ip統一交給了lvs處理,只需要有兩個ip一個讀從ip一個寫主ip;缺點跟之前還是一樣的,主依然需要同步給每個從

技術分享

  6.主主復制雙寫。之前一直優化的只要點都是讀操作,寫並沒有針對性優化過,這個架構好處就是分成了兩個完全平級的數據庫,每人都有可以操作,任務量減少一半。缺點是需要開發配合,還有兩個庫的自增序號需要分配奇偶數技術分享

  7.主主復制單寫。這跟一主一從,讀寫分離挺像的,區別在於出現故障時的處理

    技術分享

  8.雙主雙從。其實就是將主主復制各加了一個從庫,保證數據的冗余

    技術分享

  9.MHA。這個就是mysql提供的方案了,資料較多,通過一個管理節點來控制大集群

  技術分享

  

數據庫的訪問:

  1. 直接訪問,不解釋
  2. 通過代理訪問,由代理區分操作連接對應機器,比較有名的mycat

 技術分享

 

但是隨著時間的推移,我們的業務量變得巨大,那麽分布式數據庫是最終手段

技術分享

一個網站如果發展到了如此境地,那麽也算是不枉此生了,巨大的業務量不斷的壓垮我們,我們需要進一步對數據分類,快速查詢,業務分離,服務解耦

技術分享

最後,圖都是《大型網站技術架構》上的,有興趣的可以看看,很好的一本書,他不會對你的技術有什麽快速提升,但是會對你的思想有很重要的影響

web數據存儲