www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 架構師社區(qū)
[導讀]所有程序猿都對那緩存并不陌生,好似那風一樣的女子只為你獨自而舞。

所有程序猿都對那緩存并不陌生,好似那風一樣的女子只為你獨自而舞。只見那回眸一笑百媚生,讓你甚是吝惜,惹人憐愛。

但隨著項目規(guī)模不斷增大變強,光是單個緩存就難以招架,優(yōu)而顯得力不從心。

這時伴隨著多級緩存得化繭成蝶,平臺級緩存和分布式緩存在應用上就都相輔相成。

但一山難容二虎,往往存有3大問題——①概念難以區(qū)分②我到底應該選擇誰③各自適用于什么場景。

如果這個沒弄明白,我怕是覺得你還不大行額。

本篇我將已老生常談的態(tài)度來為大家一一揭曉,同時掌握方案與場景,設計技術選型的原理。包括一線大廠在本章節(jié)可能涉及的??键c

大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

何為平臺級緩存與分布式緩存?

平臺級緩存是指你所選擇編程語言下的緩存技術類型。

它是在語言的前提條件下,來采用的緩存技術,也就是你用什么語言,就采用它存在的緩存技術。

緩存是工具,供編程語言調用。前者為后者服務,得有一個主次的關系。
所以有時 你要控制你自己呀,別給自己飆車的速度,不然翻車了你都不知道

大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

比如:
你在淘寶開了個新店鋪,這時你需要對你的店鋪進行裝飾打扮,那就需要使用淘寶這個平臺上提供的功能來進行裝飾。
像上傳商品配圖、店鋪布局風格等。
換句話說平臺級緩存是依附于平臺的特性而決定的。

上篇也提到在不同的編程語言下,平臺級緩存也不相同,比如:

  • PHP里面Smarty模板庫
  • Java中如Ehcache,Cacheonix,Voldemort,JBoss Cache,OSCache等等。

而且按照應用層的定義來看,平臺級緩存可根據(jù)進程執(zhí)行使用的方式劃分為進程內緩存和進程外緩存。

那什么是進程內、進程外緩存呢?

  • 進程內緩存

就是緩存數(shù)據(jù)存在于所屬應用進程之內,和應用業(yè)務代碼、變量、堆棧等類型共同享受應用進程的內存資源。 緩存就是在進程內中的數(shù)據(jù)段進行站位。

或者說原來你1人住1房間,現(xiàn)在你和別人一起住。大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

  • 進程外緩存

指緩存數(shù)據(jù)存儲的地方不在使用應用內,而是外部的其它進程來存儲。比如像:Redis、memcache之類。
大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

那如果緩存以文件形式保持咋辦呀?也算應用進程外?
放心,我乃吒吒輝,而不是渣渣輝。呸,渣男

因大多數(shù)緩存都是在內存里面來進行操作,所以常常會忽視以文件形式來保存的數(shù)據(jù)文件。像這種情況它還是平臺級緩存下的進程內緩存,不是進程外緩存。

因為這個文件的緩存是服務于應用進程,而你像Redis那種角色,它是獨立的進程,進程和進程本身是有隔離的,而且它們還是不同軟件的進程,就更沒得啥關系。

而且文件緩存里面的內容都是提前把邏輯處理的數(shù)據(jù)存入進取。當使用時,就可以減少重復的讀取、計算數(shù)據(jù)的動作從而來達到緩存的效果。

那如果我把Redis獨立部署到其它服務器里面,也是進程外緩存嗎?

大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

這樣的情況它就是了,上面提到進程外緩存是相對應用進程而言的,現(xiàn)在它們存在于不同的服務器。如果是在同一臺服務器里面部署。那也算進程外緩存,因為進程是隔離的,但一般Redis部署到其它服務器我們不會這樣稱呼

那它這叫啥呢?

這種情況稱分布式緩存,常說的分布式緩存就是這種形式存在于世。

分布式緩存也很好理解,首先看分布式,它表示把不同的軟件分別部署在不同的服務器上或者同一服務器上不同的軟件服務。

注:這里【分布式緩存】是個相對概念,如果按分布式概念看,一臺服務器上部署了PHP|JAVA和Redis。它們之間的關系也算分布式。
但我們現(xiàn)在是從進程內外緩存的概念劃分。這樣一看,它就不屬于分布式緩存了。大家知道統(tǒng)一的說法即可

哎呀,累死個人,吒男能這樣,面面俱到?有點繞,你老慢著點,細細品味
大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

為何使用平臺級與分布式緩存?

無論什么類型的緩存,使用它們的根本目標就是減少數(shù)據(jù)的邏輯運算,加快請求響應,進而提高網站的QPS。只不過體現(xiàn)的地方是不一樣的罷了。

那平臺級和分布式緩存都有神馬好處?

平臺級

優(yōu)點:

  1. 時延更低,能夠節(jié)省內網帶寬

平臺級緩存,由于數(shù)據(jù)不需要跨網絡傳輸,直接在本地內存中操作。故性能好,時延低,消耗的帶寬也較少。

  1. 不需要引入第三方類庫,開箱即用

一般平臺級緩存,都會有官方提供的相關操作類庫,并不需要引入第三方的類庫,降低了業(yè)務開發(fā)的關聯(lián)。大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

缺點:

  1. 存儲容量有限,無法進行大數(shù)據(jù)存儲

由于內存占用了應用進程的內存空間,如 Java 進程的 JVM 內存空間,故不能進行大數(shù)據(jù)量的數(shù)據(jù)存儲。

  1. 微服務架構中,集群部署數(shù)據(jù)的更新問題。

平臺緩存數(shù)據(jù)存儲于應用進程內,故無法被其他應用進程訪問,在集群部署中同一緩存數(shù)據(jù)需要部署多份。

如果對應數(shù)據(jù)庫的數(shù)據(jù),存在更新動作,則需要同步更新到不同部署節(jié)點的本地緩存,這樣才能保證數(shù)據(jù)一致性。這時復雜度較高并且容易出錯。

可以采用如基于 Redis 的發(fā)布訂閱機制來同步更新各個部署節(jié)點或者中間件進行異步數(shù)據(jù)更新。

  1. 數(shù)據(jù)隨應用進程的重啟或崩潰而丟失

平臺緩存數(shù)據(jù)是存儲在應用進程的內存空間,所以當應用進程重啟時,緩存數(shù)據(jù)也會丟失。所以對于需要持久化的數(shù)據(jù),要注意及時保存,否則可能會造成數(shù)據(jù)丟失。

分布式緩存

優(yōu)點:

  1. 性能、存儲容量無上限,理論上可做到無限擴充

雖然本地緩存快,但終究在單機上,資源性能都有上限。

而分布式緩存是獨立部署的進程,自身擁有獨立的內存空間,不會受到應用進程重啟的影響,同時硬件資源也是獨享。

如果一臺機器性能不夠,就可以采用集群的方式拓展,做到線性的擴容。在配合docker容器,瞬間 beautiful

  1. 數(shù)據(jù)集中存儲,保證數(shù)據(jù)一致性,也做到了業(yè)務上的解耦

雖然緩存是以分布式的方式存儲,但部署模式會采用集群來保證高可用。

大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

這樣所有的緩存數(shù)據(jù)都維護在緩存集群當中,故不存在像本地緩存數(shù)據(jù)更新的問題,也保證了不同節(jié)點應用進程的數(shù)據(jù)一致性問題。

以前緩存和業(yè)務是在一起使用,現(xiàn)在業(yè)務和緩存剝離開來,互不影響,從而做到了業(yè)務上的拆分。

  1. 數(shù)據(jù)從業(yè)務上做讀寫分離,保證網站高性能,高可用

分布式緩存一般支持數(shù)據(jù)副本機制,從業(yè)務上課實現(xiàn)讀寫分離,故可以解決高并發(fā)場景中并發(fā)讀寫性能問題。

由于在多個緩存節(jié)點也冗余了數(shù)據(jù),提高了緩存數(shù)據(jù)的可用性,避免某個緩存節(jié)點宕機導致數(shù)據(jù)不可用問題。

那什么是讀寫分離?

讀寫分離是指把網站中用戶請求,按照讀、寫請求進行劃分。常常需要配合MySQL主從,主庫針對用戶寫請求,從庫針對用戶讀請求。

如果不做讀寫分離那么請求都會走一臺機器。所以讀寫分離在一定程度上也做到了負載均衡,還可以針對單一類型的請求來做到專治。大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

比如:主庫針對寫請求,那可以省去索引的創(chuàng)建,而從庫針對讀請求,需要索引來處理。這樣就可以根據(jù)請求類型來選擇是否使用索引。

畢竟索引維護也是需要消耗資源的。誰讓咋的心眼兒細呢?不小心看到了

原來讀寫分離就是這樣的啊,那我知道了

這個,其實這里小吒只是拋轉引玉了下,但大致意思都差不多,根本就是把讀寫請求分開,然后進行專治。

又比如:針對網站架構時,也可以采用讀寫分離的機制來部署網站子系統(tǒng),針對搜索的業(yè)務,可以完全獨立部署search_product.com。由它來提供搜索頁面。

再來比如:針對要提高業(yè)務的處理能力,咱們緩存的主從架構照樣可配合讀寫分離,加速網站的處理。

還來比如:針對訪問量過高,可以通過讀寫隊列來進行流量消費和異步批量寫機制,來提高網站的處理能力和寫負載過高等問題。
等等還有其它的,但大家要明白讀寫分離的作用,而且有時候它還會配合業(yè)務進行調整的。

你TM吒吒輝有完沒完了,一口氣說完不行了,我這個暴脾氣給你慣得。

大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

缺點:

  1. 運維和部署上成本高

由于是分布式部署方式,部署、運維起來還是比較有技術難度,因為每臺服務器的運行情況你肯定都要知道,外加線上環(huán)境的不確定因素。直接頭大

但方案能抗住大流量,方案還是可取,同時基于Docker在部署上也會減輕很多壓力。 橫豎你都占一樣嘛,不然咋個辦呢?

  1. 技術結構復雜,需要考慮緩存雪崩、擊穿等問題
大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?

分布式緩存中的數(shù)據(jù)量肯定不少,對業(yè)務方來說需要,考慮緩存的擊穿、雪崩、穿透等問題,防止意外情況下請求直接打到數(shù)據(jù)庫造成數(shù)據(jù)庫崩潰的問題。

  1. 數(shù)據(jù)跨網絡傳輸,性能低于本地緩存

分布式緩存部署一般都是與應用進程位于不同的機器,故需要通過外網來進行網絡數(shù)據(jù)傳輸,相對于平臺緩存的進程內部數(shù)據(jù)讀取操作,性能會較低。

平臺級與分布式緩存的技術選項?

每個技術都會有自己的立場,在什么情況來選擇用什么樣的技術內容。還是得根據(jù)你項目需求情況來進行選擇

  1. 看速度?選平臺級緩存

平臺緩存的優(yōu)勢就是處于應用進程內部,離程序是最近的。如果某部分數(shù)據(jù)不大,但是訪問量比較高,直接使用它來做處理。簡直是省心有省力氣,在加上AOP切面編程,簡直舒服的不要不要的。

例如:

如果想首頁、活動頁里面的展示一些統(tǒng)計或推薦的信息。有了它就不用每次都去調用相同API來進行運算操作,只要記得定時更新平臺緩存即可。

大廠都拿捏的緩存方案,平臺級&分布式緩存,什么業(yè)務才合適?
  1. 看數(shù)據(jù)量?選分布式緩存

平臺緩存受限于應用進程方,存儲有限,在大流量、海量數(shù)據(jù)的規(guī)模情況下,肯定選擇分布式緩存,基于水平擴容、讀寫分離來滿足業(yè)務場景、數(shù)據(jù)存儲、性能需求等。

  1. 綜合來看,有規(guī)模選分布式緩存,規(guī)模一般選擇進程外緩存。規(guī)模小你老看著辦?

網站上到大規(guī)模,你分布式那都跑不脫。
為了滿足高可用、高可靠機制,一般都會采用分布式集群的方式部署,這樣一個業(yè)務,會有多臺機器來提供服務,就算掛了一個主機,還有其它的頂上來。

那選擇平臺級緩存有何問題?

  • 如果多機器采用平臺緩存,那緩存就有多份,一旦數(shù)據(jù)變更,就需要通知到多個上游服務方來更新數(shù)據(jù)。
  • 微服務模式下,一個頁面模塊的展示數(shù)據(jù),在調用一個服務時可能需要拿到多個服務的數(shù)據(jù)聚合之后,才能最后返回給客戶端展示。

這樣一個服務的數(shù)據(jù)發(fā)生變化就需要通知到剛開始調的服務來更新緩存,業(yè)務上就耦合起來,而且還加入了很多附加工作,嚴重影響性能。

  • 數(shù)據(jù)的一致性問題,一個服務更新,如果網絡有延遲或意外,導致更新的請求失敗,那么數(shù)據(jù)庫和緩存的數(shù)據(jù)就存在不一致。

總結

  • 網站規(guī)模建議采用分布式緩存,因為業(yè)務方和緩存就不需要在業(yè)務上耦合,后期架構調整和維護都比較輕松。

  • 場景上選什么還是得根據(jù)業(yè)務需求和架構設計來綜合考慮,個人不大推薦平臺緩存,業(yè)務職責更加清晰些,可能更好些。

免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數(shù)字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯(lián)合牽頭組建的NVI技術創(chuàng)新聯(lián)盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術創(chuàng)新聯(lián)...

關鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉