您好,登錄后才能下訂單哦!
本篇內容介紹了“適用于Linux的優秀開源緩存工具有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
什么是緩存或內容緩存?
緩存(或內容緩存)是一種廣泛使用的技術,用于將數據副本存儲在臨時存儲位置(也稱為緩存)中,因此與從原始存儲中檢索數據相比,可以輕松,快速地訪問數據。根據緩存的類型和目的,存儲在緩存中的數據可以包括文件或文件片段(例如HTML文件,腳本,圖像,文檔等),數據庫操作或記錄,API調用,DNS記錄等。
緩存可以采用硬件或軟件的形式。基于軟件的緩存(這是本文的重點)可以在應用程序堆棧的不同層上實現。
可以在客戶端(或應用程序表示層)應用緩存,例如,瀏覽器緩存或應用程序緩存(或脫機模式)。大多數(如果不是全部)現代瀏覽器都附帶有HTTP緩存的實現。即在訪問web應用程序時,使您能夠查看網站或應用程序上的最新數據或內容,而不是在瀏覽器中使用本地存儲的內容的舊副本。
客戶端緩存的另一個示例是DNS緩存,它發生在操作系統(OS)級別。它是有關操作系統或Web瀏覽器以前的DNS查找信息的臨時存儲。
也可以通過代理在LAN或WAN中的網絡級別上實現緩存。這種緩存的一個常見示例是CDN(內容交付網絡),它是Web代理服務器的全局分布式網絡。
第三,您還可以在源服務器或后端服務器上實現緩存。服務器級緩存有多種形式,包括:Web服務器緩存(用于緩存圖像,文檔,腳本等)。
應用程序緩存或存儲(用于從磁盤讀取文件,從其他服務或進程讀取數據或從API請求數據等)。
數據庫緩存(提供對常用數據(例如請求的數據庫行,查詢結果和其他操作)的內存訪問)。
請注意,緩存數據可以存儲在任何存儲系統中,包括數據庫,文件,系統內存等,但是應該是比主要源更快的介質。在這方面,內存中緩存是最有效且最常用的緩存形式。
為什么要使用緩存?
緩存具有許多優點,包括:
在數據庫級別,它將緩存數據的讀取性能提高到微秒。您還可以使用回寫式高速緩存來提高寫入性能,在這種情況下,數據以指定的間隔寫入內存中,然后再寫入磁盤或主存儲中。但是它的數據完整性方面可能會帶來災難性的影響。例如,當系統在將數據提交到主存儲之前崩潰時。
在應用程序級別,緩存可以在應用程序進程本身中存儲頻繁讀取的數據,從而將數據查找時間從幾秒鐘減少到幾微秒,尤其是在網絡上。
考慮到整個應用程序和服務器的性能,緩存有助于減少服務器的負載,延遲和網絡帶寬,因為緩存的數據被提供給客戶端,從而提高了響應時間和向客戶端的交付速度。
緩存還允許內容可用性(尤其是通過CDN),以及許多其他好處。
在本文中,我們將回顧一些用于在Linux中實現服務器端緩存的頂級開源(應用程序/數據庫緩存和緩存代理服務器)工具。
1. Redis
Redis(完整的遠程字典服務器)是一種免費,開源,快速,高性能,靈活的分布式內存計算系統,可以從大多數(即使不是全部)編程語言中使用。
它是內存中的數據結構存儲,用作緩存引擎,內存中的持久磁盤上數據庫和消息代理。盡管Redis在Linux(推薦的部署平臺)和OS X上進行了開發和測試,但Redis還可在其他POSIX系統(例如* BSD)中運行,而無需任何外部依賴。
Redis支持大量數據結構,例如字符串,哈希,列表,集合,排序集合,位圖,流等。這使程序員可以使用特定的數據結構來解決特定的問題。它支持對其數據結構進行自動操作,例如追加到字符串,將元素推送到列表,增加哈希值,計算集合交集等。
它的主要功能包括Redis主從復制(默認情況下是異步的),使用Redis Sentinel提供的高可用性和自動故障轉移,Redis集群(您可以通過添加更多集群節點來水平擴展)和數據分區(在多個Redis實例之間分配數據) )。它還具有對事務,Lua腳本,一系列持久性選項以及客戶端-服務器通信加密的支持。
作為一個內存中但持久的磁盤數據庫,Redis在與內存中數據集配合使用時表現最佳。但是,您可以將其與磁盤數據庫一起使用,例如MySQL,PostgreSQL等。例如,您可以在Redis中獲取大量寫操作的小數據,并將其他數據塊保留在磁盤數據庫中。
Redis通過多種方式支持安全性:一種是使用“保護模式”功能來保護Redis實例不被外部網絡訪問。它還支持客戶端-服務器身份驗證(在服務器中配置密碼并在客戶端中提供密碼)和所有通信通道(例如,客戶端連接,復制鏈接和Redis Cluster總線協議等)上的TLS。
Redis有很多用例,包括數據庫緩存,全頁緩存,用戶會話數據管理,API響應存儲,發布/訂閱消息傳遞系統,消息隊列等等。這些可以應用于游戲,社交網絡應用程序,RSS提要,實時數據分析,用戶推薦等。
2. Memcached
Memcached是一個免費,開源,簡單但功能強大的分布式內存對象緩存系統。它是內存中的鍵值存儲區,用于存儲小塊數據,例如數據庫調用,API調用或頁面呈現的結果。它可以在類似Unix的操作系統(包括Linux和OS X)上運行,也可以在Microsoft Windows上運行。
作為開發人員工具,它旨在通過緩存內容(默認情況下為最近最少使用(LRU)緩存)來提高動態Web應用程序的速度,從而減少磁盤上的數據庫負載–它充當以下任務的短期內存應用程序。它提供了最流行的編程語言的API。
Memcached支持將字符串作為唯一的數據類型。它具有客戶端-服務器體系結構,其中一半邏輯發生在客戶端,另一半發生在服務器端。重要的是,客戶了解如何為項目選擇要寫入或讀取的服務器。此外,如果客戶端無法連接到服務器,則客戶端非常了解該怎么辦。
盡管它是一個分布式緩存系統,因此支持群集,但Memcached服務器彼此斷開連接(即,它們彼此之間不知道)。這意味著沒有像Redis這樣的復制支持。他們還了解如何存儲和獲取項目,管理何時驅逐或重新使用內存。您可以通過添加更多服務器來增加可用內存。
從Memcached 1.5.13開始,它支持通過TLS進行身份驗證和加密,但是此功能仍處于試驗階段。
3. Apache Ignite
Apache Ignite是一個免費的開源、易于擴展的分布式鍵值存儲,緩存和多模型數據庫系統,它提供了強大的處理API,可用于在分布式數據上進行計算。它也是一個內存中的數據網格,可以在內存中使用,也可以與Ignite本機持久性一起使用。它可以在類似UNIX的系統(例如Linux和Windows)上運行。
它具有多層存儲,完整的SQL支持和跨多個群集節點的ACID(原子性,一致性,隔離性,耐久性)事務(僅在鍵值API級別上受支持),共處一地處理和機器學習。它支持與任何第三方數據庫(包括任何RDBMS(例如MySQL,PostgreSQL,Oracle數據庫等)或NoSQL存儲)的自動集成。
重要的是要注意,盡管Ignite用作SQL數據存儲,但它并不完全是SQL數據庫。與傳統數據庫相比,它可以明顯地處理約束和索引。它支持主索引和輔助索引,但是只有主索引用于強制唯一性。此外,它不支持外鍵約束。
Ignite還通過允許您在服務器上啟用身份驗證并在客戶端上提供用戶憑據來支持安全性。還支持SSL套接字通信,以在所有Ignite節點之間提供安全連接。
Ignite有許多用例,包括緩存系統,系統工作負載加速,實時數據處理和分析。它也可以用作以圖形為中心的平臺。
4. Couchbase Server
Couchbase Server還是一個開源,分布式,面向文檔的 NoSQL 數據庫管理系統,以鍵-值格式將數據存儲為項目。它可以在Linux以及Windows和Mac OS X等其他操作系統上運行。它使用功能豐富,面向文檔的查詢語言稱為N1QL,該語言提供強大的查詢和索引服務,以支持對數據的亞毫秒級操作。
它的顯著特征是具有托管緩存的快速鍵值存儲,專用索引器,強大的查詢引擎,橫向擴展體系結構(多維擴展),大數據和SQL集成,全棧安全性和高可用性。
Couchbase Server帶有原生多實例集群支持,集群管理器工具可協調所有節點活動,并僅向客戶端提供集群范圍的接口。重要的是,您可以根據需要添加,刪除或替換節點,而無需停機。它還支持跨集群節點的數據復制,跨數據中心的選擇性數據復制。
它使用專用的Couchbase服務器端口,不同的身份驗證機制(使用憑據或證書),基于角色的訪問控制(以檢查每個經過身份驗證的用戶來檢查分配給他們的系統定義的角色),審核,日志和會話,通過TLS實現安全性。
它的用例包括統一的編程界面,全文本搜索,并行查詢處理,文檔管理和索引等等。它是專門為大型交互式Web,移動和IoT應用程序提供低延遲數據管理而設計的。
5. Hazelcast IMDG
Hazelcast IMDG(內存數據網格)是一種開源,輕量級,快速且可擴展的內存數據網格中間件,可提供彈性可擴展的分布式內存計算。Hazelcast IMDG還可以在Linux,Windows和Mac OS X以及安裝了Java的任何其他平臺上運行。它支持各種靈活的語言本機數據結構,例如Map,Set,List,MultiMap,RingBuffer和HyperLogLog。
Hazelcast是對等的,并支持簡單的可伸縮性,集群設置(具有用于收集統計信息,通過JMX協議進行監視以及使用有用的實用程序管理集群的選項),分布式數據結構和事件,數據分配以及事務的功能。這也是冗余的,因為它將每個數據條目的備份保留在多個成員上。要擴展群集,只需啟動另一個實例,數據和備份就會自動且均勻地平衡。
它提供了一組有用的API來訪問群集中的CPU,以實現最大處理速度。它還提供了來自Java的大量開發人員友好接口的分布式實現,例如Map,Queue,ExecutorService,Lock和JCache。
它的安全功能包括群集成員和客戶端身份驗證,以及通過基于JAAS的安全功能對客戶端操作進行訪問控制檢查。它還允許攔截客戶端執行的套接字連接和遠程操作,集群成員之間的套接字級別通信加密以及啟用SSL/TLS套接字通信。但是根據官方文檔,其中大多數安全功能都在企業版中提供。
最受歡迎的用例是分布式內存緩存和數據存儲。但是,它也可以部署用于Web會話群集,NoSQL替換,并行處理,簡單的消息傳遞等等。
6. Mcrouter
Mcrouter是一個免費的開源Memcached協議路由器,用于擴展由Facebook開發和維護的Memcached部署。它具有Memcached ASCII協議,靈活的路由,多集群支持,多級緩存,連接池,多種哈希方案,前綴路由,復制池,生產流量影子,在線重新配置以及目標運行狀況監視/自動故障轉移的功能。
此外,它支持冷緩存預熱,豐富的統計信息和調試命令,可靠的刪除流服務質量,較大的值,廣播操作,并具有IPv6和SSL支持。
它已在Facebook和Instagram中用作緩存基礎結構的核心組件,高峰時每秒處理近50億個請求。
7. Varnish Cache
Varnish Cache是位于Web客戶端和原始服務器之間的開源靈活,現代且多功能的Web應用程序加速器。它可以在所有現代Linux,FreeBSD和Solaris(僅x86)平臺上運行。它是一個出色的緩存引擎和內容加速器,您可以將其部署在Web服務器(例如NGINX,Apache和許多其他服務器)的前面,以偵聽默認的HTTP端口,以接收客戶端請求并將其轉發到Web服務器,并交付Web服務器響應客戶端。
在客戶端和原始服務器之間充當中間人的同時,Varnish Cache提供了許多好處,其基本要素是將Web內容緩存在內存中,以減輕Web服務器的負載并提高向客戶端的交付速度。
從客戶端收到HTTP請求后,它將請求轉發到后端Web服務器。Web服務器響應后,Varnish將內容緩存在內存中,并將響應傳遞給客戶端。當客戶端請求相同的內容時,Varnish將從緩存提升應用程序響應中提供該內容。如果無法提供緩存中的內容,則將請求轉發到后端,然后將響應緩存并交付給客戶端。
Varnish具有VCL(Varnish配置語言,一種靈活的域特定語言),用于配置請求的處理方式以及其他功能,Varnish模塊(VMODS)是Varnish Cache的擴展。
在安全方面,Varnish Cache支持通過VMODS進行日志記錄,請求檢查以及限制,身份驗證和授權,但缺少對SSL/TLS的原生支持。您可以使用Hitch或NGINX等SSL/TLS代理為Varnish Cache啟用HTTPS。
您還可以將Varnish Cache用作Web應用程序防火墻,DDoS攻擊防御程序,熱鏈接保護程序,負載平衡器,集成點,單點登錄網關,身份驗證和授權策略機制,用于不穩定后端的快速修復程序以及HTTP請求路由器。
8. Squid緩存代理
Squid是另一個針對Linux的免費,開源,出色且廣泛使用的代理和緩存解決方案。它是功能豐富的Web代理緩存服務器軟件,可為流行的網絡協議(包括HTTP,HTTPS和FTP)提供代理和緩存服務。它還可以在其他UNIX平臺和Windows上運行。
就像Varnish Cache一樣,它接收來自客戶端的請求并將它們傳遞到指定的后端服務器。后端服務器響應時,會將內容的副本存儲在緩存中,然后將其傳遞給客戶端。將來對相同內容的請求將從緩存中得到處理,從而將內容更快地傳遞到客戶端。因此,它可以優化客戶端和服務器之間的數據流以提高性能,并緩存常用內容以減少網絡流量并節省帶寬。
Squid具有一些功能,例如通過代理服務器的相互通信的層次結構分配負載,生成有關Web使用模式的數據(例如,有關訪問量最大的站點的統計信息),使您能夠分析,捕獲,阻止,替換或修改代理的消息。
它還支持安全功能,例如豐富的訪問控制,授權和身份驗證,SSL/TLS支持以及活動日志記錄。
9. NGINX
NGINX(發音為Engine-X)是一種開放源代碼,高性能,功能齊全且非常流行的整合解決方案,用于設置Web基礎結構。它是HTTP服務器,反向代理服務器,郵件代理服務器和通用TCP/UDP代理服務器。
NGINX提供基本的緩存功能,其中緩存的內容存儲在磁盤上的持久性緩存中。NGINX中有關內容緩存的有趣之處在于,當它無法從源服務器獲取新鮮內容時,可以對其進行配置以從其緩存中傳遞陳舊的內容。
NGINX提供了多種安全功能來保護您的Web系統,包括SSL終止,使用HTTP基本身份驗證限制訪問,基于子請求結果的身份驗證,JWT身份驗證,限制對代理HTTP資源的訪問,按地理位置限制的訪問,以及更多。
它通常被部署為應用程序堆棧中的反向代理,負載平衡器,SSL終結器/安全網關,應用程序加速器/內容緩存和API網關。它還用于流媒體。
10. Apache Traffic Server
最后但也重要的一點是,我們有Apache Traffic Server,這是一種開源,快速,可擴展且可擴展的緩存代理服務器,支持HTTP/1.1和HTTP/2.0。它旨在通過為企業,ISP(Internet服務器提供商),骨干網提供商等在網絡邊緣緩存經常訪問的內容來提高網絡效率和性能。
它支持HTTP/HTTPS通信的正向和反向代理。它還可以配置為同時以一種或兩種模式運行。它具有持久性緩存,插件API;支持ICP(Internet緩存協議),ESI(Edge Side Includes);Keep-Alive等。
在安全性方面,Traffic Server支持控制客戶端訪問,方法是允許您配置允許使用代理緩存的客戶端,客戶端與自身之間以及自身與原始服務器之間的連接的SSL終止。它還通過插件支持身份驗證和基本授權,記錄(接收到的每個請求以及檢測到的每個錯誤)以及進行監視。
Traffic Server可用作Web代理緩存,正向代理,反向代理,透明代理,負載均衡器或在緩存層次結構中使用。
“適用于Linux的優秀開源緩存工具有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。