mysql 容錯機制 TFS資源管理服務容錯機制

2021-10-22 04:11:49 字數 1006 閱讀 1869

前兩天線上出現tfs客戶端無法登陸rc server的情況,檢視rc server的log發現,server的網路佇列已經滿了,重啟rc服務,沒有作用,很快網路佇列又滿了,通過pstack發現rc server上多個網路包處理執行緒都在等gethostbyname裡的鎖,有乙個執行緒加鎖成功,但gethostbyname的呼叫一直阻塞(阻塞的原因後來確認是dns服務的問題)。

rc server是tfs用於管理應用、集群的服務,每個使用tfs的應用在使用時,會先登入rc server,獲取給該應用配置的集群資源,由於後端集群的資源可能會發生變化,比如某個機房有問題時,需要將某些應用的訪問切換到其他機房的集群,通過客戶端與rc server週期性的keepalive,後端的配置一旦發生變化,rc server會將變化後的配置資訊帶給客戶端。

rc server依賴資料存在可共享的mysql資料庫裡,多個rc server可以載入同一mysql的配置資訊提供服務,客戶端連線某乙個rc server失敗時,直接嘗試其他的rc server即可,所以關鍵問題在於如何實現這種重試機制。

最簡單的方式是借助dns服務(使得服務依賴dns服務,同時要求dns服務支援健康檢查機制),將多個rc server的ip位址對映到同乙個網域名稱上,客戶端直接根據rc的網域名稱來訪問rc server的服務,客戶端訪問rc server解析ip位址時,借助dns的健康檢查機制,dns服務會返回某個正常服務著的(服務監聽的埠正常)rc server位址,故即使在有rc server宕機時,客戶端也能正常訪問到rc server的服務。

借助dns的方式還有個缺點,其後端健康檢查通過檢查服務埠實現,對於那種服務程序仍然存活,但服務很繁忙的服務沒辦法檢測出來(比如文章開頭提到的網路佇列滿的情況),要想提供這種應用層面的容錯,可以將rc server的ip位址列表給客戶端,並在客戶端實現主動failover,即在連線不上某個rc server(比如網路訪問超時),嘗試列表裡的其他rc server來實現容錯。

Spark Spark容錯機制

一般來說,分布式資料集的容錯性有兩種方式 資料檢查點和記錄資料的更新。面向大規模資料分析,資料檢查點操作成本很高,需要通過資料中心的網路連線在機器之間複製龐大的資料集,而網路頻寬往往比記憶體頻寬低得多,同時還需要消耗更多的儲存資源。因此,spark選擇記錄更新的方式。但是,如果更新粒度太細太多,那麼...

Spark容錯機制

一般來說,分布式資料集的容錯性有兩種方式 資料檢查點和記錄資料的更新。面向大規模資料分析,資料檢查點操作成本很高,需要通過資料中心的網路連線在機器之間複製龐大的資料集,而網路頻寬往往比記憶體頻寬低得多,同時還需要消耗更多的儲存資源。因此,spark選擇記錄更新的方式。但是,如果更新粒度太細太多,那麼...

Spark容錯機制

一般來說,分布式資料集的容錯性有兩種方式 資料檢查點和記錄資料的更新。面向大規模資料分析,資料檢查點操作成本很高,需要通過資料中心的網路連線在機器之間複製龐大的資料集,而網路頻寬往往比記憶體頻寬低得多,同時還需要消耗更多的儲存資源。因此,spark選擇記錄更新的方式。但是,如果更新粒度太細太多,那麼...