日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cassandra1.2文档学习(12)—— hint机制

發(fā)布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cassandra1.2文档学习(12)—— hint机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考文檔:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_about_hh_c.html

  Hint機制是Cassandra的特性當一致性不要求時保證了寫入的高可用性。但臨時故障發(fā)生如網(wǎng)絡(luò)問題,Hint機制顯著地提升了反應的一致性。通過配置cassandra.yaml文件,你選擇是否啟用Hint機制。

?

一、Hint機制是如何工作的

  當一個寫入發(fā)生,應當被寫入的副本節(jié)點被感應到發(fā)生了故障或者沒有響應寫入請求,協(xié)調(diào)者會在本地存儲一個hint,放入到system.hints表中。這個hint表明,對于不可用的節(jié)點,寫入請求需要被重新執(zhí)行。

  hint包含了:

  ?發(fā)生了故障的副本節(jié)點位置

  ?哪一行需要被重新寫入

  ?需要被寫入的實際數(shù)據(jù)

  默認情況下,當副本發(fā)生故障后,hint會被存儲3個小時。因為如果一個副本節(jié)點發(fā)生故障的時間大于3個小時,這個節(jié)點可能永久性的故障了。這種情況下,在故障發(fā)生前,請運行修復去重新復制數(shù)據(jù)。你可以配置這個時間,通過配置cassandra.yaml文件的max_hint_window_in_ms屬性。

  節(jié)點A有節(jié)點B的hint,當節(jié)點A通過 gossip發(fā)現(xiàn)另一個節(jié)點B恢復了,節(jié)點A將發(fā)送hint對應的數(shù)據(jù)行發(fā)送給B。另外,節(jié)點A通過gossip每隔十分鐘檢查被故障檢測機制通知的超時hint。一個hint并不計入一致性級別需求是ONE、QUORUM或者是ALL。協(xié)調(diào)者節(jié)點存儲掛掉副本節(jié)點的hint無論一致性級別除非hint機制沒有被啟用。如果沒有足夠的存活的副本去滿足一致性級別,一個UnavailableException異常會被拋出。相比于 Dynamo的復制模型,這是一個重要的不同點。

  例如,在集群中有兩個節(jié)點A和B,復制因子為1:每一行存儲在一個節(jié)點上。假設(shè)當我們將行K寫給節(jié)點A時節(jié)點A宕機了且一致性級別為one,寫入會失敗因為讀會影響最新的寫入當:

  W-nodes + R > 復制因子

  W是寫阻塞的節(jié)點的數(shù)目,R是讀阻塞的節(jié)點的數(shù)目。Cassandra不會在節(jié)點B寫一個hint然后返回寫入成功因為Cassandra在任何一致性級別下都讀不到數(shù)據(jù)直到A恢復了然后B把數(shù)據(jù)轉(zhuǎn)發(fā)給A。

?

二、極致的寫入可用性

  對于那些希望Cassandra能夠接受寫入請求即使所有的副本節(jié)點都已經(jīng)宕機的應用程序來說,如果一致性級別ONE也不能滿足的話,Cassandra提供了一致性級別ANY。ANY保證寫入是持久的并且可讀的當一個合適的副本節(jié)點變得可用并且接收到hint。

?

三、性能

  設(shè)計上,hint機制使得Cassandra 能夠持續(xù)的支持相同數(shù)目的讀寫請求即便集群的工作能力降低。讓你的集群的運行最大能力而不考慮故障是一個壞主意。hint機制設(shè)計用來最小化集群的額外負擔。

  一個給定副本節(jié)點的所有的hint會被存儲在一個單一的分區(qū)鍵,因此執(zhí)行hint是一個簡單的順序讀過程,因此對性能影響最低。如果一個副本節(jié)點負載過重或者不可用并且故障檢測機制還未標注,預期情況下大部分或者所有的想那個節(jié)點發(fā)出的寫入請求會失敗直到因為 write_request_timeout_in_ms(默認為10秒)被觸發(fā)超時,在那段時間內(nèi),Cassandra超時的時候會寫hint。

  如果多個節(jié)點同時發(fā)生的話會在協(xié)調(diào)者節(jié)點上出現(xiàn)內(nèi)存壓力。所以協(xié)調(diào)者會跟蹤有多少個hint正在寫,如果這個數(shù)目比較大的話它會暫時性拒絕那些不正確的副本節(jié)點的寫入。

?

四、hint的移除

  當使用nodetool removenode命令從集群中移除一個節(jié)點的時候,Cassandra自動移除不再存在的節(jié)點的hint。Cassandra也會移除被刪除表的hint。

?

五、每周計劃性修復

  第一眼,可能認為hint機制讓你的數(shù)據(jù)更加安全而不需要運行修復。僅當硬件故障不發(fā)生時這是正確的。

  硬件故障有下列結(jié)果:

  ?已經(jīng)完成的寫入的歷史數(shù)據(jù)丟失。沒有集群中其他節(jié)點關(guān)于節(jié)點丟失的數(shù)據(jù)信息。

  ?發(fā)生故障的節(jié)點協(xié)調(diào)的hint中尚未重新執(zhí)行的請求的丟失。

?

轉(zhuǎn)載于:https://www.cnblogs.com/dyf6372/p/3536696.html

總結(jié)

以上是生活随笔為你收集整理的Cassandra1.2文档学习(12)—— hint机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。