『壹』 分布式緩存的作用
分布式緩存能夠處理大量的動態數據,因此比較適合應用在Web 2.0時代中的社交網站等需要由用戶生成內容的場景。從本地緩存擴展到分布式緩存後,關注重點從CPU、內存、緩存之間的數據傳輸速度差異也擴展到了業務系統、資料庫、分布式緩存之間的數據傳輸速度差異。
常用的分布式緩存包括Redis和Memcached。
Memcached
Memcached是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕資料庫負載。Memcached通過在內存中緩存數據和對象來減少讀取資料庫的次數,從而提高動態、資料庫驅動網站的速度。
特點:哈希方式存儲;全內存操作;簡單文本協議進行數據通信;只操作字元型數據;集群由應用進行控制,採用一致性哈希演算法。
限制性:數據保存在內存當中的,一旦機器重啟,數據會全部丟失;只能操作字元型數據,數據類型貧乏;以root許可權運行,而且Memcached本身沒有任何許可權管理和認證功能,安全性不足;能存儲的數據長度有限,最大鍵長250個字元,儲存數據不能超過1M。
Redis
Redis是一個開源的使用ANSI C語言編寫、支持網路、可基於內存亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。
特點:
Redis支持的數據類型包括:字元串、string、hash、set、sortedset、list;Redis實現持久化的方式:定期將內存快照寫入磁碟;寫日誌;Redis支持主從同步。
限制性:單核運行,在存儲大數據的時候性能會有降低;不是全內存操作;主從復制是全量復制,對實際的系統運營造成了一定負擔。
『貳』 什麼是分布式緩存
分布式緩存使用carp(caching
array
routing
protocol)技術,可以產生一種高效率無接縫式的緩存,使用上讓多台緩存伺服器形同一台,並且不會造成數據重復存放的情況。
同時還有層次式緩存、動態緩存和計劃緩存三種。
『叄』 JAVA幾種緩存技術介紹說明
1、TreeCache / JBossCache
JBossCache是一個復制的事務處理緩存,它允許你緩存企業級應用數據來更好的改善性能。緩存數據被自動復制,讓你輕松進行JBoss伺服器之間 的集群工作。JBossCache能夠通過JBoss應用服務或其他J2EE容器來運行一個MBean服務,當然,它也能獨立運行。
2、WhirlyCache
Whirlycache是一個快速的、可配置的、存在於內存中的對象的緩存。它能夠通過緩存對象來加快網站或應用程序的速度,否則就必須通過查詢資料庫或其他代價較高的處理程序來建立。
3、SwarmCache
SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。
4、JCache
JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。
5、ShiftOne
ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Java lib,就像一個輕量級的配置緩存工作狀態的框架。
『肆』 「分布式緩存」 是什麼概念,怎麼理解
我的理解,分布式緩存系統是為了解決資料庫伺服器和web伺服器之間的瓶頸。
如果一個網站的流量很大,這個瓶頸將會非常明顯,每次資料庫查詢耗費的時間將會非常可觀。
對於更新速度不是很快的網站,我們可以用靜態化來避免過多的資料庫查詢。
對於更新速度以秒計的網站,靜態化也不會太理想,可以用緩存系統來構建。
如果只是單台伺服器用作緩存,問題不會太復雜,如果有多台伺服器用作緩存,就要考慮緩存伺服器的負載均衡。
『伍』 現在主流開源分布式系統架構都有哪些
您好,很高興為您解答。1:MapRece(MR),最為general和流行的一個分布式計算框架,其開源實現Hadoop已經得到了極為廣泛的運用(Facebook,Yahoo!等等),同時在Hadoop基礎上發展起來的項目也有很多(Hive是發展最好的),另外像Cloudera,Hortonworks,MapR這樣的在Hadoop基礎上發展起來的公司也有很多。2:Pregel,和MR一樣也是Google發明的,其優勢是在完成一些適合於抽象為圖演算法的應用的計算時可以更為高效,Giraph可以算是一個比較好的發展中的開源實現。3:Storm,Twitter的項目,號稱Hadoop的實時計算平台,對於一些需要realtimeperformance的job可以擁有比MR更高的效率。4:Spark,UCBerkeleyAMPLab的項目,其很好地利用了JVM中的heap,對於中間計算結果可以有更好的緩存支持,因此其在performance上要比MR高出很多。Shark是其基礎上類似於Hive的一個項目。5:Dryad和Scope,都是MR(MicrosoftResearch)的項目,從paper上來看Dryad是一個更為generalpurpose的計算框架,在vertices里實現計算,通過channels實現communication,兩者組成一個graphworkflow;而Scope有點類似於Hive和Shark,都是將某種類似於SQL的scriptlanguage編譯成可以在底層分布式平台上計算的job。但是這兩個項目因為不開源,所以資料不多,也沒有開源項目那樣的community。當然還有其他很多,比如Google的Dremel,Yale的HadoopDB(現在已經商業化叫做Hadapt)。如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】希望我的回答對您有所幫助,望採納!~O(∩_∩)O~
『陸』 分布式存儲最佳緩存比
作者:深入細節的 SmartX 一線技術團隊
近日,VMware 發布了 vSAN 8,對存儲架構進行了重大更新。其中最主要的變化,即引入了新的 Express Storage Architecture(ESA)架構:用「存儲池」替代了原存儲架構(OSA)中的「磁碟組」,並不再需要專用 SSD 承擔緩存加速功能,一定程度上避免了 8.0 之前版本中的專用緩存檔利用率低、易發生緩存擊穿等問題。
而值得一提的是,在 vSAN 大版本更新之前,SmartX 即通過統一緩存空間和智能冷熱數據管理優化了分布式存儲緩存機制,有效規避了上述問題。本文將通過重點解讀 vSAN(以 vSAN 7 為例)和 SmartX 分布式塊存儲組件 ZBS* 緩存機制的原理,並測試對比兩種緩存機制下虛擬機性能表現,讓讀者更好地了解兩種技術實現機制的區別對業務可能帶來的實際影響。
* ZBS 內置於 SmartX 超融合軟體 SMTX OS,可與 SmartX 原生虛擬化 ELF 搭配提供服務。
本文重點
vSAN 7 採用劃分讀寫緩存空間的機制,將緩存磁碟按照容量佔比劃分為寫緩沖區(30%)和讀緩存區(70%)。這種方式可能出現緩存利用率低、在訪問數據量過大時導致緩存擊穿,進而引起性能下降等問題。
ZBS 採用統一緩存空間的機制,並通過 2 級 LRU 演算法對冷熱數據進行管理,在充分利用緩存容量的同時避免了因訪問量激增導致虛擬機性能下降的情況。
本文基於相同的硬體配置和 I/O 讀寫場景,分別測試 VMware 超融合(vSphere 虛擬化 + vSAN 分布式存儲)寫入 300 GB 數據、SMTX OS(ELF + ZBS)寫入 500 GB 數據時虛擬機的性能表現。結果顯示,vSAN 7 難以充分利用緩存介質,發生緩存擊穿,導致存儲性能下降;而 SMTX OS 即便在寫入更多數據的情況下也未發生緩存擊穿,虛擬機性能保持穩定。
場景問題
混閃配置是超融合或分布式存儲現階段的主流落地模式。混閃配置是指機器中的磁碟使用 SSD + HDD 混合組成,其中 SSD 磁碟作為數據緩存層,而 HDD 磁碟作為數據容量層。以該模式構建的分布式存儲池通過軟體演算法進行冷熱數據自動判斷,在提供高性能的同時,還可獲得較大的存儲容量,進而提升資源利用率,獲得相對全快閃記憶體儲更高的性價比。
在將 SSD 磁碟用作數據緩存層時,部分超融合產品會將緩存容量(Cache)劃分為讀和寫各自獨立的兩部分。例如,vSAN 7 及更早版本會將每個磁碟組(Disk Group)中的緩存磁碟,按照容量佔比劃分為寫緩沖區(30%)和讀緩存區(70%),當讀取數據未命中緩存或者寫緩存已滿,將會直接從容量層進行讀寫。
『柒』 SpringCache優化、緩存一致性、多級緩存
先記錄一些綱要
1、SpringCache是寫庫之後更新的策略,對緩存一致性的不太友好
2、繼承RedisCacheManager重寫createRedisCache,繼承RedisCache重寫put
3、緩存一致性有兩個方案,一個是先寫庫再刪除緩存、第二個是先刪除緩存再寫庫。
先寫庫再刪除緩存配合超時時間一般沒啥問題,極端的情況遇到緩存失效,線程讀庫和加緩存之間,完成了一次寫庫和刪緩存的操作,導致加的緩存是舊的。總結就是讀中加入了一次寫。A讀庫 B寫庫 B刪緩存 A加緩存。
先刪緩存再寫庫的話,是寫中加入了一次讀。A刪緩存 B讀庫 B加緩存 A寫庫A。這個概率比上面的大。
這兩種方案的問題的解決方式是一樣的,就是延時雙刪策略。即:
刪緩存 寫庫 延時再次刪除緩存(需超過一次讀庫的時間,可以新啟線程完成)
或者 寫庫 刪緩存 延時再次刪除緩存(需超過一次讀庫的時間,可以新啟線程完成)
如果有主從讀寫分離,需要將延時再加上主從同步的時間。
還有個第二次刪除失敗的問題,這個問題可以通過消息中間件,反復嘗試進行。或者通過訂閱binlog,反復進行。
多級緩存可以參考阿里開源的JetCache的實現
後面會給出demo和源碼解析。
『捌』 四大開源資料庫是哪些
如果打算為項目選擇一款免費、開源的資料庫,那麼你可能會在MySQL與PostgreSQL之間猶豫不定。MySQL與PostgreSQL都是免
費、開源、強大、且功能豐富的資料庫。你主要的問題可能是:哪一個才是最好的開源資料庫,MySQL還是PostgreSQL呢?該選擇哪一個開源資料庫
呢?
在選擇資料庫時,你所做的是個長期的決策,因為後面如果再改變決定將是非常困難且代價高昂的。你希望一開始就選擇正確。兩個流行
的開源資料庫MySQL與PostgreSQL常常成為最後要選擇的產品。對這兩個開源資料庫的高層次概覽將會有助於你選擇最適合自己需要的。
MySQL
MySQL相對來說比較年輕,首度出現在1994年。它聲稱自己是最流行的開源資料庫。MySQL就是LAMP(用於Web開發的軟體包,包括
Linux、Apache及Perl/PHP/Python)中的M。構建在LAMP棧之上的大多數應用都會使用MySQL,包括那些知名的應用,如
WordPress、Drupal、Zend及phpBB等。
一開始,MySQL的設計目標是成為一個快速的Web伺服器後端,使用
快速的索引序列訪問方法(ISAM),不支持ACID。經過早期快速的發展之後,MySQL開始支持更多的存儲引擎,並通過InnoDB引擎實現了
ACID。MySQL還支持其他存儲引擎,提供了臨時表的功能(使用MEMORY存儲引擎),通過MyISAM引擎實現了高速讀的資料庫,此外還有其他的
核心存儲引擎與第三方引擎。
MySQL的文檔非常豐富,有很多質量不錯的免費參考手冊、圖書與在線文檔,還有來自於Oracle和第三方廠商的培訓與支持。
MySQL近幾年經歷了所有權的變更和一些頗具戲劇性的事件。它最初是由MySQL
AB開發的,然後在2008年以10億美金的價格賣給了Sun公司,Sun公司又在2010年被Oracle收購。Oracle支持MySQL的多個版
本:Standard、Enterprise、Classic、Cluster、Embedded與Community。其中有一些是免費下載的,另外一
些則是收費的。其核心代碼基於GPL許可,對於那些不想使用GPL許可的開發者與廠商來說還有商業許可可供使用。
現在,基於最初的
MySQL代碼還有更多的資料庫可供選擇,因為幾個核心的MySQL開發者已經發布了MySQL分支。最初的MySQL創建者之一Michael
"Monty"
Widenius貌似後悔將MySQL賣給了Sun公司,於是又開發了他自己的MySQL分支MariaDB,它是免費的,基於GPL許可。知名的
MySQL開發者Brian Aker所創建的分支Drizzle對其進行了大量的改寫,特別針對多CPU、雲、網路應用與高並發進行了優化。
PostgreSQL
PostgreSQL標榜自己是世界上最先進的開源資料庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且沒有那麼昂貴的價格和傲慢的客服。它擁有很長的歷史,最初是1985年在加利福尼亞大學伯克利分校開發的,作為Ingres資料庫的後繼。
PostgreSQL是完全由社區驅動的開源項目,由全世界超過1000名貢獻者所維護。它提供了單個完整功能的版本,而不像MySQL那樣提供了多個
不同的社區版、商業版與企業版。PostgreSQL基於自由的BSD/MIT許可,組織可以使用、復制、修改和重新分發代碼,只需要提供一個版權聲明即
可。
可靠性是PostgreSQL的最高優先順序。它以堅如磐石的品質和良好的工程化而聞名,支持高事務、任務關鍵型應用。
PostgreSQL的文檔非常精良,提供了大量免費的在線手冊,還針對舊版本提供了歸檔的參考手冊。PostgreSQL的社區支持是非常棒的,還有來
自於獨立廠商的商業支持。
數據一致性與完整性也是PostgreSQL的高優先順序特性。PostgreSQL是完全支持ACID特性
的,它對於資料庫訪問提供了強大的安全性保證,充分利用了企業安全工具,如Kerberos與OpenSSL等。你可以定義自己的檢查,根據自己的業務規
則確保數據質量。在眾多的管理特性中,point-in-time
recovery(PITR)是非常棒的特性,這是個靈活的高可用特性,提供了諸如針對失敗恢復創建熱備份以及快照與恢復的能力。但這並不是
PostgreSQL的全部,項目還提供了幾個方法來管理PostgreSQL以實現高可用、負載均衡與復制等,這樣你就可以使用適合自己特定需求的功能
了。
『玖』 Ceph:一個 Linux PB 級分布式文件系統
Ceph 最初是一項關於存儲系統的 PhD 研究項目,由 Sage Weil 在 University of California, Santa Cruz(UCSC)實施。但是到了 2010 年 3 月底,您可以在主線 Linux 內核(從 2.6.34 版開始)中找到 Ceph 的身影。雖然 Ceph 可能還不適用於生產環境,但它對測試目的還是非常有用的。本文探討了 Ceph 文件系統及其獨有的功能,這些功能讓它成為可擴展分布式存儲的最有吸引力的備選。
「Ceph」 對一個文件系統來說是個奇怪的名字,它打破了大多數人遵循的典型縮寫趨勢。這個名字和 UCSC(Ceph 的誕生地)的吉祥物有關,這個吉祥物是 「Sammy」,一個香蕉色的蛞蝓,就是頭足類中無殼的軟體動物。這些有多觸角的頭足類動物,提供了一個分布式文件系統的最形象比喻。
開發一個分布式文件系統需要多方努力,但是如果能准確地解決問題,它就是無價的。Ceph 的目標簡單地定義為:
不幸的是,這些目標之間會互相競爭(例如,可擴展性會降低或者抑制性能或者影響可靠性)。Ceph 開發了一些非常有趣的概念(例如,動態元數據分區,數據分布和復制),這些概念在本文中只進行簡短地探討。Ceph 的設計還包括保護單一點故障的容錯功能,它假設大規模(PB 級存儲)存儲故障是常見現象而不是例外情況。最後,它的設計並沒有假設某種特殊工作負載,但是包括適應變化的工作負載,提供最佳性能的能力。它利用 POSIX 的兼容性完成所有這些任務,允許它對當前依賴 POSIX 語義(通過以 Ceph 為目標的改進)的應用進行透明的部署。最後,Ceph 是開源分布式存儲,也是主線 Linux 內核(2.6.34)的一部分。
現在,讓我們探討一下 Ceph 的架構以及高端的核心要素。然後我會拓展到另一層次,說明 Ceph 中一些關鍵的方面,提供更詳細的探討。
Ceph 生態系統可以大致劃分為四部分(見圖 1):客戶端(數據用戶),元數據伺服器(緩存和同步分布式元數據),一個對象存儲集群(將數據和元數據作為對象存儲,執行其他關鍵職能),以及最後的集群監視器(執行監視功能)。
如圖 1 所示,客戶使用元數據伺服器,執行元數據操作(來確定數據位置)。元數據伺服器管理數據位置,以及在何處存儲新數據。值得注意的是,元數據存儲在一個存儲集群(標為 「元數據 I/O」)。實際的文件 I/O 發生在客戶和對象存儲集群之間。這樣一來,更高層次的 POSIX 功能(例如,打開、關閉、重命名)就由元數據伺服器管理,不過 POSIX 功能(例如讀和寫)則直接由對象存儲集群管理。
另一個架構視圖由圖 2 提供。一系列伺服器通過一個客戶界面訪問 Ceph 生態系統,這就明白了元數據伺服器和對象級存儲器之間的關系。分布式存儲系統可以在一些層中查看,包括一個存儲設備的格式(Extent and B-tree-based Object File System [EBOFS] 或者一個備選),還有一個設計用於管理數據復制,故障檢測,恢復,以及隨後的數據遷移的覆蓋管理層,叫做 Reliable Autonomic Distributed Object Storage (RADOS)。最後,監視器用於識別組件故障,包括隨後的通知。
了解了 Ceph 的概念架構之後,您可以挖掘到另一個層次,了解在 Ceph 中實現的主要組件。Ceph 和傳統的文件系統之間的重要差異之一就是,它將智能都用在了生態環境而不是文件系統本身。
圖 3 顯示了一個簡單的 Ceph 生態系統。Ceph Client 是 Ceph 文件系統的用戶。Ceph Metadata Daemon 提供了元數據伺服器,而 Ceph Object Storage Daemon 提供了實際存儲(對數據和元數據兩者)。最後,Ceph Monitor 提供了集群管理。要注意的是,Ceph 客戶,對象存儲端點,元數據伺服器(根據文件系統的容量)可以有許多,而且至少有一對冗餘的監視器。那麼,這個文件系統是如何分布的呢?
早期版本的 Ceph 利用在 User SpacE(FUSE)的 Filesystems,它把文件系統推入到用戶空間,還可以很大程度上簡化其開發。但是今天,Ceph 已經被集成到主線內核,使其更快速,因為用戶空間上下文交換機對文件系統 I/O 已經不再需要。
因為 Linux 顯示文件系統的一個公共界面(通過虛擬文件系統交換機 [VFS]),Ceph 的用戶透視圖就是透明的。管理員的透視圖肯定是不同的,考慮到很多伺服器會包含存儲系統這一潛在因素(要查看更多創建 Ceph 集群的信息,見 參考資料 部分)。從用戶的角度看,他們訪問大容量的存儲系統,卻不知道下面聚合成一個大容量的存儲池的元數據伺服器,監視器,還有獨立的對象存儲設備。用戶只是簡單地看到一個安裝點,在這點上可以執行標准文件 I/O。
Ceph 文件系統 — 或者至少是客戶端介面 — 在 Linux 內核中實現。值得注意的是,在大多數文件系統中,所有的控制和智能在內核的文件系統源本身中執行。但是,在 Ceph 中,文件系統的智能分布在節點上,這簡化了客戶端介面,並為 Ceph 提供了大規模(甚至動態)擴展能力。
Ceph 使用一個有趣的備選,而不是依賴分配列表(將磁碟上的塊映射到指定文件的元數據)。Linux 透視圖中的一個文件會分配到一個來自元數據伺服器的 inode number(INO),對於文件這是一個唯一的標識符。然後文件被推入一些對象中(根據文件的大小)。使用 INO 和 object number(ONO),每個對象都分配到一個對象 ID(OID)。在 OID 上使用一個簡單的哈希,每個對象都被分配到一個放置組。 放置組 (標識為 PGID)是一個對象的概念容器。最後,放置組到對象存儲設備的映射是一個偽隨機映射,使用一個叫做 Controlled Replication Under Scalable Hashing (CRUSH)的演算法。這樣一來,放置組(以及副本)到存儲設備的映射就不用依賴任何元數據,而是依賴一個偽隨機的映射函數。這種操作是理想的,因為它把存儲的開銷最小化,簡化了分配和數據查詢。
分配的最後組件是集群映射。 集群映射 是設備的有效表示,顯示了存儲集群。有了 PGID 和集群映射,您就可以定位任何對象。
元數據伺服器(cmds)的工作就是管理文件系統的名稱空間。雖然元數據和數據兩者都存儲在對象存儲集群,但兩者分別管理,支持可擴展性。事實上,元數據在一個元數據伺服器集群上被進一步拆分,元數據伺服器能夠自適應地復制和分配名稱空間,避免出現熱點。如圖 4 所示,元數據伺服器管理名稱空間部分,可以(為冗餘和性能)進行重疊。元數據伺服器到名稱空間的映射在 Ceph 中使用動態子樹邏輯分區執行,它允許 Ceph 對變化的工作負載進行調整(在元數據伺服器之間遷移名稱空間)同時保留性能的位置。
但是因為每個元數據伺服器只是簡單地管理客戶端人口的名稱空間,它的主要應用就是一個智能元數據緩存(因為實際的元數據最終存儲在對象存儲集群中)。進行寫操作的元數據被緩存在一個短期的日誌中,它最終還是被推入物理存儲器中。這個動作允許元數據伺服器將最近的元數據回饋給客戶(這在元數據操作中很常見)。這個日誌對故障恢復也很有用:如果元數據伺服器發生故障,它的日誌就會被重放,保證元數據安全存儲在磁碟上。
元數據伺服器管理 inode 空間,將文件名轉變為元數據。元數據伺服器將文件名轉變為索引節點,文件大小,和 Ceph 客戶端用於文件 I/O 的分段數據(布局)。
Ceph 包含實施集群映射管理的監視器,但是故障管理的一些要素是在對象存儲本身中執行的。當對象存儲設備發生故障或者新設備添加時,監視器就檢測和維護一個有效的集群映射。這個功能按一種分布的方式執行,這種方式中映射升級可以和當前的流量通信。Ceph 使用 Paxos,它是一系列分布式共識演算法。
和傳統的對象存儲類似,Ceph 存儲節點不僅包括存儲,還包括智能。傳統的驅動是只響應來自啟動者的命令的簡單目標。但是對象存儲設備是智能設備,它能作為目標和啟動者,支持與其他對象存儲設備的通信和合作。
從存儲角度來看,Ceph 對象存儲設備執行從對象到塊的映射(在客戶端的文件系統層中常常執行的任務)。這個動作允許本地實體以最佳方式決定怎樣存儲一個對象。Ceph 的早期版本在一個名為 EBOFS 的本地存儲器上實現一個自定義低級文件系統。這個系統實現一個到底層存儲的非標准介面,這個底層存儲已針對對象語義和其他特性(例如對磁碟提交的非同步通知)調優。今天,B-tree 文件系統(BTRFS)可以被用於存儲節點,它已經實現了部分必要功能(例如嵌入式完整性)。
因為 Ceph 客戶實現 CRUSH,而且對磁碟上的文件映射塊一無所知,下面的存儲設備就能安全地管理對象到塊的映射。這允許存儲節點復制數據(當發現一個設備出現故障時)。分配故障恢復也允許存儲系統擴展,因為故障檢測和恢復跨生態系統分配。Ceph 稱其為 RADOS(見 圖 3 )。
如果文件系統的動態和自適應特性不夠,Ceph 還執行一些用戶可視的有趣功能。用戶可以創建快照,例如,在 Ceph 的任何子目錄上(包括所有內容)。文件和容量計算可以在子目錄級別上執行,它報告一個給定子目錄(以及其包含的內容)的存儲大小和文件數量。
雖然 Ceph 現在被集成在主線 Linux 內核中,但只是標識為實驗性的。在這種狀態下的文件系統對測試是有用的,但是對生產環境沒有做好准備。但是考慮到 Ceph 加入到 Linux 內核的行列,還有其創建人想繼續研發的動機,不久之後它應該就能用於解決您的海量存儲需要了。
Ceph 在分布式文件系統空間中並不是唯一的,但它在管理大容量存儲生態環境的方法上是獨一無二的。分布式文件系統的其他例子包括 Google File System(GFS),General Parallel File System(GPFS),還有 Lustre,這只提到了一部分。Ceph 背後的想法為分布式文件系統提供了一個有趣的未來,因為海量級別存儲導致了海量存儲問題的唯一挑戰。
『拾』 分布式緩存的作用
分布式緩存主要用於在高並發環境下,減輕資料庫的壓力,提高系統的響應速度和並發吞吐。當大量的讀、寫請求湧向資料庫時,磁碟的處理速度與內存顯然不在一個量級,因此,在資料庫之前加一層緩存,能夠顯著提高系統的響應速度,並降低資料庫的壓力。作為傳統的關系型資料庫,MySQL提供完整的ACID操作,支持豐富的數據類型、強大的關聯查詢、where語句等,能夠非常客易地建立查詢索引,執行復雜的內連接、外連接、求和、排序、分組等操作,並且支持存儲過程、函數等功能,產品成熟度高,功能強大。但是,對於需要應對高並發訪問並且存儲海量數據的場景來說,出於對性能的考慮,不得不放棄很多傳統關系型資料庫原本強大的功能,犧牲了系統的易用性,並且使得系統的設計和管理變得更為復雜。這也使得在過去幾年中,流行著另一種新的存儲解決方案——NoSQL,它與傳統的關系型資料庫最大的差別在於,它不使用SQL作為查詢語言來查找數據,而採用key-value形式進行查找,提供了更高的查詢效率及吞吐,並且能夠更加方便地進行擴展,存儲海量數據,在數千個節點上進行分區,自動進行數據的復制和備份。在分布式系統中,消息作為應用間通信的一種方式,得到了十分廣泛的應用。消息可以被保存在隊列中,直到被接收者取出,由於消息發送者不需要同步等待消息接收者的響應,消息的非同步接收降低了系統集成的耦合度,提升了分布式系統協作的效率,使得系統能夠更快地響應用戶,提供更高的吞吐。
當系統處於峰值壓力時,分布式消息隊列還能夠作為緩沖,削峰填谷,緩解集群的壓力,避免整個系統被壓垮。垂直化的搜索引擎在分布式系統中是一個非常重要的角色,它既能夠滿足用戶對於全文檢索、模糊匹配的需求,解決資料庫like查詢效率低下的問題,又能夠解決分布式環境下,由於採用分庫分表,或者使用NoSQL資料庫,導致無法進行多表關聯或者進行復雜查詢的問題。