再議RAC Brain Split腦裂

2021-09-20 20:54:14 字數 975 閱讀 7778

這2天在面試dba candidate的時候,我問到oracle rac中brain split腦裂決議的一些概念, 幾乎所有的candidate都告訴我當"只有2個節點的時候,投票演算法就失效了,會讓2個節點去搶占quorum disk,最先獲得的節點將活下來" 。 我們姑且把這套理論叫做" 搶占論"。 "搶占論"的具體觀點可能與下面這一段文字大同小異:

"在集群中,節點間通過某種機制(心跳)了解彼此的健康狀態,以確保各節點協調工作。 假設只有"心跳"出現問題, 各個節點還在正常執行, 這時,每個節點都認為其他的節點宕機了, 自己是整個集群環境中的"唯一建在者",自己應該獲得整個集群的"控制權"。 在集群環境中,儲存裝置都是共享的, 這就意味著資料災難, 這種情況就是"腦裂"

解決這個問題的通常辦法是使用投票演算法(quorum algorithm). 它的演算法機理如下: 觀點1: 

集群中各個節點需要心跳機制來通報彼此的"健康狀態",假設每收到乙個節點的"通報"代表一票。對於三個節點的集群,正常執行時,每個節點都會有3票。 當結點a心跳出現故障但節點a還在執行,這時整個集群就會**成2個小的partition。 節點a是乙個,剩下的2個是乙個。 這是必須剔除乙個partition才能保障集群的健康執行。 

對於有3個節點的集群, a 心跳出現問題後, b 和 c 是乙個partion,有2票, a只有1票。 按照投票演算法, b 和c 組成的集群獲得控制權, a 被剔除。     觀點2: 

如果只有2個節點,投票演算法就失效了。 因為每個節點上都只有1票。 這時就需要引入第三個裝置:quorum device. quorum device 通常採用餓是共享磁碟,這個磁碟也叫作quorum disk。 這個quorum disk 也代表一票。 當2個結點的心跳出現問題時, 2個節點同時去爭取quorum disk 這一票, 最早到達的請求被最先滿足。 故最先獲得quorum disk的節點就獲得2票。另乙個節點就會被剔除。"

以上這段文字描述中觀點1 與我在

一文中提出的看法其實是類似的。

效能優化再議

有關效能優化,我們都知道 過早的效能優化是程式設計中的萬惡之源 donald knuth 因為效能優化可能打破程式的可讀性 可維護性甚至正確性,所以在進行效能優化的時候必須三思而後行。在效能優化之前我們必須清楚的了解到了效能的問題確切發生在什麼位置,如果不知道哪些地方出問題就開始修理可能會導致大的時...

MATLAB 效率再議 zz

好文轉貼自 關 於matlab的效率問題,很多文章,包括我之前寫的一些,主要集中在使用向量化以及相關的問題上。但是,最近我在實驗時對 進行profile的過程 中,發現在新版本的matlab下,for loop已經得到了極大優化,而效率的瓶頸更多是在函式呼叫和索引訪問的過程中。由於matlab特有的...

再議公交查詢演算法

前段時間寫過一篇 公交路線查詢演算法 其中設計了乙個資料儲存的方案,這裡又做了一番改進。公交路線查詢演算法 提到的演算法最多提供倒乘一次的方案 我覺得在實際應用中也能基本滿足需要,如果乙個城市公交倒乘一次都不能到達目的地的話,公交也太不發達了 如果將以下資料初始化為一張圖,就可以按照圖的路徑查詢演算...