redis相比memcached有哪些優勢:
執行緒模型:
redis 基於 reactor 模式開發了自己的網路事件處理器: 這個處理器被稱為檔案事件處理器(file event handler):
雖然檔案事件處理器以單執行緒方式執行, 但通過使用 i/o 多路復用程式來監聽多個套接字, 檔案事件處理器既實現了高效能的網路通訊模型, 又可以很好地與 redis 伺服器中其他同樣以單執行緒方式執行的模組進行對接, 這保持了 redis 內部單執行緒設計的簡單性。
詳細介紹:redis執行緒模型
分布式鎖的四個條件:
分布式鎖三種實現方式:
redis實現分布式鎖:
if redis.call('get', keys[1]) == ar**[1] then return redis.call('del', keys[1]) else return 0 end
詳細介紹:redis分布式鎖的正確實現方式
可靠性:
從可靠性角度分析,zookeeper可靠性比redis更好。
因為redis有效期不是很好控制,可能會產生有效期延遲,zookeeper就不一樣,因為zookeeper臨時節點先天性可控的有效期,所以相對來說zookeeper比redis更好
zookeeper和redis分布式鎖詳細介紹:為什麼分布式要有分布式鎖!
redis的key過期處理策略
分布式事務用於在分布式系統中保證不同節點之間的資料一致性。
分布式事務的實現有很多種,最具有代表性的是由oracle tuxedo系統提出的xa分布式事務協議。xa協議包含兩階段提交(2pc)和三階段提交(3pc)兩種實現
在xa協議中包含著兩個角色:事務協調者和事務參與者。
第一階段
作為事務協調者的節點會首先向所有的參與者節點傳送prepare請求。
在接到prepare請求之後,每乙個參與者節點會各自執行與事務有關的資料更新,寫入undo log和redo log。如果參與者執行成功,暫時不提交事務,而是向事務協調節點返回「完成」訊息。
當事務協調者接到了所有參與者的返回訊息,整個分布式事務將會進入第二階段。
第二階段
如果事務協調節點在之前所收到都是正向返回,那麼它將會向所有事務參與者發出commit請求。
接到commit請求之後,事務參與者節點會各自進行本地的事務提交,並釋放鎖資源。當本地事務完成提交後,將會向事務協調者返回「完成」訊息。
當事務協調者接收到所有事務參與者的「完成」反饋,整個分布式事務完成。
第一階段
第二階段
xa兩階段提交的不足
效能問題;xa協議遵循強一致性。在事務執行過程中,各個節點占用著資料庫資源,只有當所有節點準備完畢,事務協調者才會通知提交,參與者提交後釋放資源。這樣的過程有著非常明顯的效能問題。
協調者單點故障問題;事務協調者是整個xa模型的核心,一旦事務協調者節點掛掉,參與者收不到提交或是回滾通知,參與者會一直處於中間狀態無法完成事務。
丟失訊息導致的不一致問題;在xa協議的第二個階段,如果發生區域性網路問題,一部分事務參與者收到了提交訊息,另一部分事務參與者沒收到提交訊息,那麼就導致了節點之間資料的不一致。
xa三階段提交(3pc)
三階段提交在兩提交的基礎上增加了cancommit階段,並且引入了超時機制。一旦事務參與者遲遲沒有接收到協調者的commit請求,會自動進行本地commit。這樣有效解決了協調者單點故障的問題。但是效能問題和不一致的問題仍然沒有根本解決。
分布式面試題(三) 分布式Memachche
q memcached的 cache機制是怎樣的?memcached主要的 cache機制是lru最近最少用演算法 超時失效。當存資料到 memcached中,可以指定該資料在快取中可以呆多久 如果 memcached的記憶體不夠用了,過期的 slabs會優先被替換,接著就輪到老的未被使用的 sla...
面試題 分布式常用技術
一 dubbo dubbo文件說明 dubbo原理 dubbo 集群容錯模式 負載均衡模式 dubbo的特點,8種通訊協議之對比 dubbo 架構圖 以及呼叫過程 dubbo和spring cloud微服務架構比較 dubbo面試題 dubbo admin安裝和使用 springboot整合dubb...
分布式 分布式鎖
本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...