1. 程式人生 > >分散式設計常見問題及解決方案

分散式設計常見問題及解決方案

common issue:

一致性hash與餘數hash:為什麼一致性hash比餘數hash 當伺服器變動時,命中率更大,對老資料影響更小

餘數hash就是“根據伺服器臺數的餘數進行分散”,只計算鍵的整數雜湊值,再除以伺服器臺數,根據其餘數來選擇伺服器

一致性hash:處理伺服器的選擇不再僅僅只計算key的hash,而將key的hash和伺服器節點hash同時對映到hash環上,這樣所有的使用者從自己圓環上的位置順時針往下取到第一個vnode就是自己所屬節點當伺服器節點發生變化時,只有在hash環上增加服務節點的位置為逆時針方向的第一個服務節點上的鍵會受到影響

參考資料:

http://dmouse.iteye.com/blog/818984

http://blog.csdn.net/destina/article/details/8241354

分散式系統間的通訊,複雜性,延遲性。

除錯/跟蹤 困難。

對每個系統的日誌,監控及檢測。

分散式資料庫(主從)資料庫同步問題----solution:使用合適的資料庫中介軟體結合日誌監控

快取資料與資料庫更新的 相互通知 ---solution: 事件驅動。

interview 1:

memcached的使用

session共享

業務操作時(將一個變化很頻繁的資料寫入到資料,規定幾小時的資料不能丟失),則要考慮,寫資料時,可能遇到的網路峰值/硬碟讀寫峰值。

solution:detect模式:先發訊息,考察網路環境,看response的資料,時間是否符合要求。類似ping-pong,但由此可帶來潮起問題----大量的負載到某一個節點,而其他空閒節點不能得到均衡。