導航:首頁 > 文件管理 > raft配置文件在哪裡

raft配置文件在哪裡

發布時間:2023-03-17 17:25:03

『壹』 raft游戲的存檔位置在哪裡

  c:/宴臘users/administrator/appdata/locallow/晌稿滑raft/raft/savedgames/文敬敏件夾內

『貳』 raft論文

raft主要分成三個部分:

系統初始化時,所有的節點都會被初始化為follower,leader會被選舉出來。follower會周期性的接收到來自leader的心跳rpc,以維持follower的狀態。若在選舉超時時間內沒有收到rpc,follower就會選舉超時,該超時時間在一個范圍內隨機(如150-300ms)。超時後,follower就自增自己的currentTerm,成為candidate,並給自己投票,然後向其他伺服器發送投票請求rpc,follower處理投票請求rpc時遵循先到先得的與原則。candidate會一直處於這個狀態直到下列某一情況發生:

以一個請求來說明日誌的復制流程:
leader

leader需要根據集群節點對AppendEntires的響應來判斷一條日誌是否被復制到半數以上節點。當leader收到半數以上的響應,就認為該日誌已經復製成功。此時leader宕機時,後續新當選的領導人肯定是在已成功接收最新日誌的節點中產生,還是能保證該日誌被提交。

日誌數據不一致問題:
Raft通過將將leader日誌復制到follower節點,並覆蓋follower節點中與leader不一致的日誌。leader節點為每個節點存儲了兩個記錄:

AppendEntries RPC 中包括:

狀態的持久化存儲和server的重啟:

領導權轉移:
Raft允許server將自己的領導權轉移其他的server,有兩種場景:

為了選舉能夠成功,當前leader需要將自己的log entries發送給或返目標Server,保證目標server上持有所有提交的log entries,但後發起leader競選,不需要等待選舉超時。

當目標server失敗時,當前leader就會中斷領導權轉移過程,恢復客戶端請求處理。

現在還有兩個問題:

為了解決新成員加入時,成員需要追趕leader日誌的問題,raft 引入了 non-voting server,等到日誌同步完成時再開始加入集群。首先會引入round的概念,每個round開始時,leader將non-voting server少於leader的日誌同步到non-voting server,round中新接收的仔團皮日誌會在下一個round同步。 若沒有新日誌發送到leader時,一個round開始會馬上結束,進入下一個round,當進行round的次數超過閾值時,leader就將新的server加入到集群

當前leader的移除
當要下線集群的leader時,首先客戶端會發送一條C new的配置請求,C new會以日誌的形式復制到集群大多數節點 , 只有當該日誌提交之後,leader才可以轉變為follower再進一步下線,只有當C new復制到大多數節點,集群才有可能從C new的成員中選舉出leader。leader才可以轉變為follower,此時C new的成員會選舉超時,從而選舉產生 leader。舊 leader的不可用到新leader的產生的這段時間系統是處於不可用的狀態。
下線成員對系統的擾動
當下線非leader節點時,該節點就收不到新的配置C new,也就不知道自己是否下線,此時leader上新的配置生效之後,就 不再給將要下線的節點發送heartbeat。該節點念差就會超時並發起選舉,選舉會擾亂當前系統leader的工作,由於周期高於當前leader,leader就會轉變為follower, 發起選舉的節點不在系統內不會當前選,系統內會重新選舉出一個leader。所以 raft提出了一個已解決方案:
為leader競選階段引入一個新的階段,pre-vote,candidate發起投票之前會詢問其他節點自己的日誌是否足夠新的來競選leader。但pre-vote的引入並不能解決上述問題。

前面描述的選舉和日誌復制機制還不能完全保證每個狀態機都能根據相同的日誌按照相同的順序執行命令。例如一個follower因為網路問題錯過了多次的日誌復制,然後網路恢復,集群leader宕機,follower當選為leader,該follower缺少上一個leader 提交的日誌,就會導致這些日誌被新的leader覆蓋。

隨著raft處理客戶端請求的增長,日誌記錄也會越來越長,佔用的存儲空間也會越來越多,也會花費越來越多的時間進行日誌重放。但在一個實際的系統當中,存儲空間不可能沒有限制,因此採取一種機制來丟棄部分日誌記錄勢在必行。
快照是最簡單的進行日誌壓縮的方式。 每個節點獨立的生成快照 ,通過將整個狀態機的狀態都寫入快照然後存儲到穩定的存儲介質上方式,可以允許快照點之前的所有日誌可以被刪除。Raft還會在快照中保存一部分元數據,也就是快照可以替換的所有日誌記錄的最一條(最後一條狀態機執行的日誌記錄),這條日誌是用來做AppendEntries時的日誌一致性檢查的。同時為了保證集群成員變化,快照中還會保存應用最後一條日誌時的配置文件

『叄』 ratis - 整體概念

    ratis是raft協議java版本的開源實現項目,位於Apache項目下。項目git地址:https://github.com/apache/ratis。raft協議是基於日誌的強領導模型的共識演算法。leader選舉、集群數據同步都離不離開日誌。ratis最終目的是為了實現分布式系統的高可用性,對於具體的應用程序,ratis使用狀態機(StateMachineUpdater)對具體的應用程序抽象隔離,保證ratis實現raft協議的純粹性和可移植性。

客戶端向raftServerImpl提交請求,請求最終由 RaftLog、LogAppender、LeaderState、StateMachineUpdater、StateMachine共同完成。具體步驟冊山如下:

    1、客戶端向RaftServerImpl發送請求

     2、RaftServerImpl將請求發送給RaftLog,構建日誌並寫入日誌文件。

    3、RaftServerImpl將請求提交給LeaderState(返回一個CompelableFuture),等待請求處理完成。

    4、LogAppender檢測到新增日誌,復制日誌到對應做察的Follower節點,並等待節點的響應。

    5、LogAppender接收到Follower節點日誌提交成功響應後,將日誌發送給LeaderState提交。

    6、LeaderState檢測到大所屬節點都已經同步成功後,提交日誌,並通知StateMachineUpdater服務

    7、StateMachineUpdater服務檢測到新提交的日誌,讀取日誌並發送給StateMachine(應用程序通過該步驟接收到客戶請求)並處理日誌。

    8、StateMachine處理完成提交的日誌,將對應日誌在LeaderState中的CompletableFuture狀態更新為完成。

    9、RaftServerImpl通過CompletableFuture接收到處理結果,並返回給客戶端。

    ratis啟動可以分解成三個部分:1、初始化;2、leader選舉;3、啟動leader;

    初始化部分是指Ratis正常工作的必要模塊的初始化和啟動。其中就包括:1、RaftServerImpl的初始化;2、LifeCycle生命周期管理器初始化;3、StateMachineUpdater應用日誌伺服器的初始化和啟動,以及作為初始角色Follower對應的服務FollowerState的初始化和啟動。其中RaftServerImpl、LifeCycle、StateMachineUpdater不論節點屬於什麼角色,這三個服務都是必要服務。

啟動順序為:

    1、有代理服務初始化LifeCycle生命周期控制器

    2、構建RaftServerImpl服務實例,調用start方法啟動該服務(這里的star並不是啟動一個單獨線程)

    3、由RaftServerImpl初始節點角色管理服務,並將Follower作為初始角色啟動(設置角色為:follower,啟動角色對應的後台服務FoloowerState)。

    4、設置集群為運行狀態(更新LifeCycle的狀態)    

    ratis的leader選舉是由Follower後台服務FollowerState觸發,在指定的超時時間范圍內沒有接收到Leader心跳請求,就觸發節點角色的變更(純姿茄由Follower角色變更為 Candidate角色,並啟動Candidate角色對應的後台服務LeaderElection),開啟Raft 候選人的leader選舉流程。

如1.2圖:

    第10步:指Follower角色對應的後台服務FollowerState在指定時間內沒有接收到Leader的心跳信息,於是觸發角色變更。

    第11步:FollowerState -> RaftServerImpl#changeToCandidate指FollowerState通過Raft頂層服務RaftServerImpl變更節點角色,並結束當前服務(結束FollowerState服務)

    第12步:RaftServerImpl -> RoleInfo#startLeaderElection指RaftServerImpl通知RoleInfo將節點角色變更為:Candidate

    第13步:並啟動leader選舉(也就是Candidate角色對應的後台服務 - LeaderElection服務)

       LeaderElection服務啟動後,就開始向配置文件中配置的其它節點發送投票請求。正常清情況下投票請求分為兩個階段:

            1、預選階段 - Phase.PRE_VOTE

                預選階段抓喲是檢查當前集群是否存在合法的leader,該步驟可以通過配置:raft.server.leaderelection.pre-vote 關閉該步驟。  

            2、競選階段 - Phase.ELECTION

                競選階段就是正式leader競選,candidate向各節點開始拉票,並在指定節時間內統計得到的投票情況。

leader的啟動由LeaderElection選舉通過觸發。如圖1.2時序圖所示:

    第14步:由LeaderElection調用RaftServerImpl#changeToLeader,開啟leader上位。

    第15步:RaftServerImpl調用RoleInfo#shutDownElection,關閉LeaderElection後台服務。

    第17步:RaftServerImpl調用RoleInfo#becomeLeader,將節點的角色設置為:leader,並初始化啟動LeaderStateImpl。

    第18步:LeaderState初始化並啟動LogAppender,開啟leader日誌同步後台服務。

至此,Ratis服務leader上位就結束,可以開啟正常的服務請求處理了。

『肆』 raft保存世界在哪裡復活

去player文雀粗件夾里。
能回檔復活,只是別拿錯存檔,你應該注意到了人物存檔和地圖存檔分兩個文件夾了吧。
那麼粗物就去player文件夾里岩歲液找,player文件夾里分兩個文件,Red_user和setting,setting不用說了,就是游戲設置文件,那麼user就是你的玩家存檔,想復活,直接把這個備份就行

『伍』 fabric1.4.1新特性 — raft排序服務

在fabric1.4.1的版本中,提供了基於raft共識的raft排序服務。raft的模型可以容忍奔潰,如果有節點故障掉線可以正常運行。前提是要有大多數存活,也就是要保證1/2以上的節點個數正常運行。raft共識是「主從模型」,主節點通過動態選舉決定,從節點是主節點的復制。raft排序服務比kafka排序服務易於設置和管理空罩。並且raft的設計允許不同的組織貢獻節點來共同組成排序服務。

從提供服務的視角來看,基於raft和kafka的排序服務是類似的,他們都是基於CFT(crash fault tolerant)模型的排序服務,並且都使用了主從節點的設置。如果你是應用開發者或者智能合約開發者,你不會注意到他們之間的卻別。但是,有一些主要的區別值得探討,尤其是你需要管理排序服務。

raft排序是fabric實現拜占庭容錯排序服務的第一步,如我們所見,開發raft排序服務的決定也是基於此的。

raft節點之間通過使用TLS認證身份,如果一個攻擊者想要偽造raft節點,就必須要獲得一個有效的證書和對州衫應的私鑰。所以,沒有一個有效的TLS證書,是不可能運行raft節點的。
要使用raft共識,需要修改兩個地方

需要注意的是,每個channel有屬於它自己的raft集群。因此,在chennel中要指定raft節點,指定的方式是把raft節點的tls證書配置到channel的配置文件中。在系統通道和應用通道中的配置中,每個排序以consenter的形式列出來。下面是configtx.yaml中關於raft節點配置的章節。

orderer.yaml配置文件中有兩個關於raft排序配置的章節,分別問cluster和Consensus

當節點啟動後,如果想要斗跡鬧更改配通道置並且使配置生效,只有重啟節點服務。有一個例外是SnapshotIntervalSize配置項,它可以在運行時動態調整。

(後續實踐後,見更新具體使用步驟,敬請關注)

『陸』 Raft實現報告(12)

上期講到,時間點對於Raft至漏陪碧關重要,廣播時間應該小於選舉超時時間,為了保證系統能夠穩定運行返舉,讓follower盡量保持穩定而不會觸發leader選舉,對各種RPC的處理時間應該是小於選舉時間。在一個就是MTBF(單節點平均故障間隔時間),選舉超時應該小於MTBP為了系統穩定運行,能在節點宕機時快速恢復。

這三個時間,其中廣播時間和MTBF時底層的系統屬性,MTBF又取決於系統穩定性,而選舉超時是我們必須選擇的,或是控制的。Raft的RPC通常要就接受者將信息持久化到穩定的存儲中,因此,廣播時間可能在0.5ms-20ms之間,這還取決於存儲技術。因此選舉超時可能在10ms-500ms之間。

典型伺服器的MTBFs一邊是幾個月或者更久,相當於幾個月出現一次小故障,這就輕松滿足了之前的那個不等式。

廣播時間<<選舉時間<<MTBF

到目前為止,我們一直接受集群配置(參與支持共識演算法的伺服器集合)是固定的。在實際情況中,有時需要更改配置,例如,在伺服器發生物理故障時,更換伺服器伺服器或者更改副本的程度。雖然可以通過使整個集群離線,更新配置亂掘文件然後重啟集群來完成,但是這會讓集群在轉換期間不可用。此外,如果有任何手動步驟,則會存在操作員的錯誤風險。為了避免這些問題,在這次實現中,會把自動化配置合並到Raft共識演算法中。

『柒』 raft存檔為什麼不準

游戲沒帆漏有完善。
在admin或公用文件夾中找到AppData文件夾,點擊進入LocalLow文件夾粗滾,再點擊打開Redbeet Interactive文件夾,然後看到Raft的文件夾,點擊打開,最後進入user文件夾,打開World文件夾就可以找態凳爛到存過的檔。

『捌』 Hyperledger Fabric(高可用之Raft部署)

Raft共識在1.4.1版本時正式支持,本次基於1.4.4版本部署Raft版的Fabric網路。由於Raft共識集成了etcd,不再需要使用kafka、zookeeper等中間件。本次部署將搭建3Orderer節點粗哪拆、2組織(2peer)的Fabric網路,岩棗使用vagrant創建 8台centos虛擬機,其中一台用於nfs共享文件,具體主機組件對應如下:

192.168.33.11: orderer0

192.168.33.12: orderer1

192.168.33.13: orderer2

192.168.33.21: peer0-org1

192.168.33.22: peer1-org1

192.168.33.23: peer0-org2

192.168.33.24: peer1-org2

192.168.33.25: nfs-server

本次搭建所緩螞需文件目錄如下:

獲取源碼

啟動並進入nfsserver主機

『玖』 orderer節點啟動配置什麼

Orderer節點啟動需要毀型配置orderer.yaml文大余斗件。orderer.yaml文件是指定Orderer節點啟動配置選項的主要配置文件。在orderer.yaml文件中,需要進行以下配置:
1. Orderer節點的組織名稱和節點名稱。
2. Orderer節點的TLS設置。滾磨
3. Orderer節點的服務監聽地址和SSL監聽地址。
4. Orderer節點的共識選項,比如Solo模式、Kafka模式等
5. Orderer節點的塊文件和日誌文件存儲路徑。
6. Orderer節點的認證選項,如客戶端證書等。
7. 針對raft共識配置共識選項,包括選舉超時時間等。
8. 集群管理的配置選項,包括使用Genesis塊初始化Orderer集、添加新的組織到Orderer等。
節點啟動時,需要指定orderer.yaml文件所在的路徑,可以通過命令行參數--config來指定orderer.yaml的路徑。

『拾』 kubernetes控制平面組件:etcd

--listen-peer-urls

--listen-client-urls

--initial-advertise-peer-urls

--initial-cluster

--initial-cluster-state

--advertise-client-urls



1.code

headless svc, 像DNS RR ClusterIP:None

kubectl -n stg1 get endpoints

client 怎麼訪問:


2.配置文件

3.apply


官方的code有兩個問題

本地訪問

擴容

利用反親和性 分布etcd pod到不同節點

~ ❯❯❯ etcdctl get / --prefix


從 etcd 的架構圖中我們可以看到,etcd 主要分為四個部分。


etcd 目前支持 V2 和 V3 兩個大版本,這兩個版本在實現上有比較大的不同,一方面是對外提供介面的方式,另一方面就是底層的存儲引擎,V2 版本的實例是一個純內存的實現,所有的數據都沒有存儲在磁碟上,而 V3 版本的實例就支持了數據的持久化。

v3默認boltdb

consortium etcd2+mysql

數據默認會存放在 /var/lib/etcd/default/ 目錄。我們會發現數據所在的目錄,會被分為兩個文件夾中,分別是 snap 和 wal目錄。

解決三個問題:節點選舉、拆仿日誌復制以及安全性

每一個 Raft 集群中都包含多個伺服器,在任意時刻,每一台伺服器只可能處於 Leader Follower 以及 Candidate 三種狀態;在處於正常的狀態時,集群中只會存在一個 Leader 狀態,其旅畝纖余耐中的伺服器都是 Follower 狀態。

所有的 Follower 節點都是被動的,它們不會主動發出任何的請求 ,只會響應 Leader 和 Candidate 發出的請求。對於每一個用戶的可變操作,都會被路由給 Leader 節點進行處理,除了 Leader 和 Follower 節點之外,Candidate 節點其實只是集群運行過程中的一個臨時狀態。

每一個伺服器都會存儲當前集群的最新任期,它就像是一個單調遞增的邏輯時鍾,能夠同步各個節點之間的狀態,當前節點持有的任期會隨著每一個請求被傳遞到其他的節點上。Raft 協議在每一個任期的開始時都會從一個集群中選出一個節點作為集群的 Leader 節點,這個節點會負責集群中的日誌的復制以及管理工作。

客戶端通過 監聽指定的key可以迅速感知key的變化並作出相應處理 ,watch機制的實現依賴於 資源版本號revision的設計 ,每一次key的更新都會使得revision原子遞增,因此根據不同的版本號revision的對比就可以感知新事件的發生。etcd watch機制有著廣泛的應用,比如利用etcd實現分布式鎖; k8s中監聽各種資源的變化 ,從而實現各種controller邏輯等。


watch機制的實現主要可分為三個部分

client使用 watchClient 的watch介面發起watch請求,與server端建立一個 gRPCStream 連接。

server端會為每個client生成唯一一個watch id,並記錄每個client也就是watcher監聽的key或者key range,通過recvLoop接收client請求,通過sendLoop發送請求,server端只負責收發請求和響應。

主要的實現都放在了watchalbStore層,watchalbStore會監聽key的變化,然後通過syncWatchersLoop和syncVictimsLoop兩個處理流程將key的更新變化包裝成event,通過channel發送給gRPC server。

MVCC(Multiversion Concurrency Control)多版本並發控制機制


場景1:

這就是悲觀鎖

悲觀鎖:悲觀得認為並發事務會沖突,所以要先拿鎖,拿到鎖的作修改操作

場景2

資料庫:寫回磁碟,A寫好了。哎,B和C都是version 13,我咋寫?算了,報錯吧。。

就是樂觀鎖,默認不加鎖,你盡管寫,沖突我認慫!樂觀鎖其實不是鎖,只是相對悲觀鎖來定義,適合讀多寫少。

樂觀鎖:樂觀得認為數據不會沖突,但發生沖突時要能檢測到。


場景3


這就是MVCC,在 MVCC 資料庫中,你更新一個 key-value 數據的時候,它並不會直接覆蓋原數據,而是 新增一個版本來存儲新的數據,每個數據都有一個版本號 ,版本號是一個邏輯時鍾,不會因為伺服器時間的差異而受影響。

MVCC不等於樂觀鎖!

--rev 查的是main

在底層boltdb里,實際分布是這樣的:

底層的key是revision,/奧特曼是用戶key,「他很帥」就是用戶value

刪除

之前有delete動作,但是依然有版本記錄。為什麼?

刪除這個動作,其實etcd是在blotdb里寫了一條,「刪除用戶/奧特曼」

此時有個問題:用戶說我的確刪除了啊,真的不要了!請把空間還給我啊!

回收 compact(壓縮)

etcdctl compact {version}

compact 需要一個版本號。這個版本號就是寫事務遞增的那個版本號,compact 12345,就是說把版本12345以前的 標記刪除了的數據 釋放掉,用戶沒刪除的數據肯定不能回收。

如何壓縮:


注意修改go.mod

Watch

服務發現要解決的也是分布式系統中最常見的問題之一,即在同一個分布式集群中的進程或服務,要如何才能找到對方並建立連接。本質上來說,服務發現就是想要了解集群中是否有進程在監聽 udp 或 tcp 埠,並且通過名字就可以查找和連接。

需要實現的功能;

discover.go


eBay payment

ebay kubernetes 控制面架構

問題

閱讀全文

與raft配置文件在哪裡相關的資料

熱點內容
word無符號欄 瀏覽:294
微信恢復聊天記錄iphone 瀏覽:155
索浪磁碟無文件 瀏覽:910
哪些材料做成紅頭文件 瀏覽:212
maya做玻璃瓶教程 瀏覽:586
一條小米數據線大概多少錢 瀏覽:443
如何匹配兩個excel表格相同的數據 瀏覽:120
蘋果筆記本文件怎麼找回 瀏覽:426
資料庫怎麼用游標 瀏覽:722
不同頻率的數據如何共享 瀏覽:83
什麼時候說解讀文件 瀏覽:165
揚州前端程序員私活網站有哪些 瀏覽:657
怎麼改手機網路好一點 瀏覽:702
淺談微信卡券功能開發 瀏覽:511
線切割如何用電腦編程 瀏覽:227
vba如何獲取已經打開的excel文件 瀏覽:209
什麼是投標文件名 瀏覽:390
電腦網路斷開了怎麼辦 瀏覽:492
數控車床直角怎麼清角怎麼編程 瀏覽:414
如何從流量競爭到數據智能化 瀏覽:176

友情鏈接