Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
½â¶ÁRaftÒ» £¨Ëã·¨»ù´¡£©
 
×÷Õߣºº¼ÖÝ.Mark
  1521  次浏览      28
2020-6-11 
 
±à¼­ÍƼö:
ÎÄÕÂÖ÷Òª½éÉÜÁË Ëã·¨»ù´¡ ¡¢Ñ¡¾ÙºÍÈÕÖ¾¸´ÖÆ ¡¢°²È«ÐÔ ¡¢½Úµã±ä¸ü £¬Ï£Íû¶Ô´ó¼ÒÓаïÖú¡£
±¾ÎÄÀ´×ÔÓÚ²©¿ÍÔ°£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­ÍƼö¡£

ÎһὫRaftЭÒé²ð³ÉËĸö²¿·ÖÈ¥×ܽ᣺

Ëã·¨»ù´¡

Ñ¡¾ÙºÍÈÕÖ¾¸´ÖÆ

°²È«ÐÔ

½Úµã±ä¸ü

ÕâÊǵÚһƪ£º¡¶½â¶ÁRaft£¨Ò» Ëã·¨»ù´¡£©¡·

ʲôÊÇRAFT

·Ö²¼Ê½ÏµÍ³³ýÁËÌáÉýÕû¸öÌåͳµÄÐÔÄÜÍ⻹ÓÐÒ»¸öÖØÒªÌØÕ÷¾ÍÊÇÌá¸ßϵͳµÄ¿É¿¿ÐÔ¡£

Ìṩ¿É¿¿ÐÔ¿ÉÒÔÀí½âΪϵͳÖÐһ̨»ò¶ą̀µÄ»úÆ÷¹ÊÕϲ»»áʹϵͳ²»¿ÉÓ㨻òÕß¶ªÊ§Êý¾Ý£©¡£

±£Ö¤ÏµÍ³¿É¿¿ÐԵĹؼü¾ÍÊǶั±¾£¨¼´Êý¾ÝÐèÒªÓб¸·Ý£©£¬Ò»µ©Óжั±¾£¬ÄÇô¾ÃÃæÁٶั±¾Ö®¼äµÄÒ»ÖÂÐÔÎÊÌâ¡£

Ò»ÖÂÐÔËã·¨ÕýÊÇÓÃÓÚ½â¾ö·Ö²¼Ê½»·¾³Ï¶ั±¾Ö®¼äÊý¾ÝÒ»ÖÂÐÔµÄÎÊÌâµÄ¡£

Òµ½ç×îÖøÃûµÄÒ»ÖÂÐÔËã·¨¾ÍÊÇ´óÃû¶¦¶¦µÄPaxos£¨ChubbyµÄ×÷ÕßÔøËµ¹ý£ºÊÀÉÏÖ»ÓÐÒ»ÖÖÒ»ÖÂÐÔËã·¨£¬¾ÍÊÇPaxos£©¡£µ«PaxosÊdzöÁËÃûµÄÄѶ®£¬¶øRaftÕýÊÇΪÁË̽Ë÷Ò»ÖÖ¸üÒ×ÓÚÀí½âµÄÒ»ÖÂÐÔËã·¨¶ø²úÉúµÄ¡£

Raft is a consensus algorithm for managing a replicated log.

RaftÊÇÒ»ÖÖ¹ÜÀí¸´ÖÆÈÕÖ¾µÄÒ»ÖÂÐÔËã·¨¡£

ËüµÄÊ×ÒªÉè¼ÆÄ¿µÄ¾ÍÊÇÒ×ÓÚÀí½â£¬ËùÒÔÔÚÑ¡Ö÷µÄ³åÍ»´¦ÀíµÈ·½Ê½ÉÏËü¶¼Ñ¡ÔñÁ˷dz£¼òµ¥Ã÷Á˵Ľâ¾ö·½°¸¡£

Raft½«Ò»ÖÂÐÔ²ð·ÖΪ¼¸¸ö¹Ø¼üÔªËØ£º

LeaderÑ¡¾Ù

ÈÕÖ¾¸´ÖÆ

°²È«ÐÔ

RaftËã·¨

ËùÓÐÒ»ÖÂÐÔËã·¨¶¼»áÉæ¼°µ½×´Ì¬»ú£¬¶ø×´Ì¬»ú±£Ö¤ÏµÍ³´ÓÒ»¸öÒ»ÖµÄ״̬¿ªÊ¼£¬ÒÔÏàͬµÄ˳ÐòÖ´ÐÐһЩÁÐÖ¸Áî×îÖÕ»á´ïµ½ÁíÒ»¸öÒ»ÖµÄ״̬¡£

ÒÔÉÏÊÇ״̬»úµÄʾÒâͼ¡£ËùÓеĽڵãÒÔÏàͬµÄ˳Ðò´¦ÀíÈÕÖ¾£¬ÄÇô×îÖÕx¡¢y¡¢zµÄÖµÔÚ¶à¸ö½ÚµãÖж¼ÊÇÒ»Öµġ£

Ëã·¨»ù´¡

½ÇÉ«

Raftͨ¹ýÑ¡¾ÙLeader²¢ÓÉLeader½Úµã¸ºÔð¹ÜÀíÈÕÖ¾¸´ÖÆÀ´ÊµÏֶั±¾µÄÒ»ÖÂÐÔ¡£

ÔÚRaftÖУ¬½ÚµãÓÐÈýÖÖ½ÇÉ«£º

Leader£º¸ºÔð½ÓÊÕ¿Í»§¶ËµÄÇëÇ󣬽«ÈÕÖ¾¸´ÖƵ½ÆäËû½Úµã²¢¸æÖªÆäËû½ÚµãºÎʱӦÓÃÕâЩÈÕÖ¾Êǰ²È«µÄ

Candidate£ºÓÃÓÚÑ¡¾ÙLeaderµÄÒ»ÖÖ½ÇÉ«

Follower£º¸ºÔðÏìÓ¦À´×ÔLeader»òÕßCandidateµÄÇëÇó

½Çɫת»»ÈçÏÂͼËùʾ£º

ËùÓнڵã³õʼ״̬¶¼ÊÇFollower½ÇÉ«

³¬Ê±Ê±¼äÄÚûÓÐÊÕµ½LeaderµÄÇëÇóÔòת»»ÎªCandidate½øÐÐÑ¡¾Ù

CandidateÊÕµ½´ó¶àÊý½ÚµãµÄѡƱÔòת»»ÎªLeader£»·¢ÏÖLeader»òÕßÊÕµ½¸ü¸ßÈÎÆÚµÄÇëÇóÔòת»»ÎªFollower

LeaderÔÚÊÕµ½¸ü¸ßÈÎÆÚµÄÇëÇóºóת»»ÎªFollower

ÈÎÆÚ

Raft°Ñʱ¼äÇиîΪÈÎÒⳤ¶ÈµÄÈÎÆÚ£¬Ã¿¸öÈÎÆÚ¶¼ÓÐÒ»¸öÈÎÆÚºÅ£¬²ÉÓÃÁ¬ÐøµÄÕûÊý¡£

ÿ¸öÈÎÆÚ¶¼ÓÉÒ»´ÎÑ¡¾Ù¿ªÊ¼£¬ÈôÑ¡¾Ùʧ°ÜÔòÕâ¸öÈÎÆÚÄÚûÓÐLeader£»Èç¹ûÑ¡¾Ù³öÁËLeaderÔòÕâ¸öÈÎÆÚÄÚÓÐLeader¸ºÔð¼¯Èº×´Ì¬¹ÜÀí¡£

Ëã·¨

״̬

AppendEntries RPC

prevLogIndexºÍprevLogTerm±íʾÉÏÒ»´Î·¢Ë͵ÄÈÕÖ¾µÄË÷ÒýºÍÈÎÆÚ£¬ÓÃÓÚ±£Ö¤ÊÕµ½µÄÈÕÖ¾ÊÇÁ¬ÐøµÄ¡£

½ÓÊÕÕßʵÏÖÂß¼­

·µ»Øfalse£¬Èç¹ûÊÕµ½µÄÈÎÆÚ±Èµ±Ç°ÈÎÆÚС

·µ»Øfalse£¬Èç¹û²»°üº¬Ö®Ç°µÄÈÕÖ¾ÌõÄ¿£¨Ã»ÓÐÆ¥ÅäprevLogIndexºÍprevLogTerm£©

Èç¹û´æÔÚindexÏàͬµ«ÊÇterm²»ÏàͬµÄÈÕÖ¾£¬É¾³ý´Ó¸ÃλÖÿªÊ¼ËùÓеÄÈÕÖ¾

×·¼ÓËùÓв»´æÔÚµÄÈÕÖ¾

Èç¹ûleaderCommit>commitIndex£¬½«commitIndexÉèÖÃΪcommitIndex = min(leaderCommit, index of last new entry)

RequestVote RPC

½ÓÊÕÕßµÄʵÏÖÂß¼­

·µ»Øfalse£¬Èç¹ûÊÕµ½µÄÈÎÆÚ±Èµ±Ç°ÈÎÆÚС

Èç¹û±¾µØ×´Ì¬ÖÐvotedForΪnull»òÕßcandidateId£¬ÇÒcandidateµÄÈÕÖ¾µÈÓÚ»ò¶àÓࣨ°´ÕÕindexÅжϣ©½ÓÊÕÕßµÄÈÕÖ¾£¬Ôò½ÓÊÕÕßͶƱ¸øcandidate£¬¼´·µ»Øtrue

½ÚµãµÄÖ´ÐйæÔò

ËùÓнڵã

Èç¹ûcommitIndex > lastApplied£¬Ó¦ÓÃlog[lastApplied]µ½×´Ì¬»ú£¬Ôö¼ÓlastApplied

Èç¹ûRPCÇëÇó»òÕßÏìÓ¦°üº¬µÄÈÎÆÚT > currentTerm£¬½«currentTermÉèÖÃΪT²¢×ª»»ÎªFollower

Followers

ÏìÓ¦À´×ÔLeaderºÍCandidateµÄRPCÇëÇó

Èç¹ûÔÚÑ¡¾Ù³¬Ê±ÖÜÆÚÄÚûÓÐÊÕµ½AppendEntriesµÄÇëÇó»òÕ߸øCandidateͶƱ£¬×ª»»ÎªCandidate½ÇÉ«

Candidates

ת»»Îªcandidate½ÇÉ«£¬¿ªÊ¼Ñ¡¾Ù£º

µÝÔöcurrentTerm

¸ø×Ô¼ºÍ¶Æ±

ÖØÖÃÑ¡¾Ùʱ¼ä

·¢ËÍRequestVote¸øÆäËûËùÓнڵã

Èç¹ûÊÕµ½ÁË´ó¶àÊý½ÚµãµÄѡƱ£¬×ª»»ÎªLeader½Úµã

Èç¹ûÊÕµ½Leader½ÚµãµÄAppendEntriesÇëÇó£¬×ª»»ÎªFollower½Úµã

Èç¹ûÑ¡¾Ù³¬Ê±£¬ÖØÐ¿ªÊ¼ÐÂÒ»ÂÖµÄÑ¡¾Ù

Leaders

Ò»µ©Ñ¡¾ÙÍê³É£º·¢ËÍÐÄÌø¸øËùÓнڵ㣻ÔÚ¿ÕÏеÄÖÜÆÚÄÚ²»¶Ï·¢ËÍÐÄÌø±£³ÖLeaderÉí·Ý

Èç¹ûÊÕµ½¿Í»§¶ËµÄÇëÇ󣬽«ÈÕÖ¾×·¼Óµ½±¾µØlog£¬ÔÚÈÕÖ¾±»Ó¦Óõ½×´Ì¬»úºóÏìÓ¦¸ø¿Í»§¶Ë

Èç¹û¶ÔÓÚÒ»¸ö¸úËæÕߣ¬×îºóÈÕÖ¾ÌõÄ¿µÄË÷ÒýÖµ´óÓÚµÈÓÚ nextIndex£¬ÄÇô£º·¢ËÍ´Ó nextIndex ¿ªÊ¼µÄËùÓÐÈÕÖ¾ÌõÄ¿£º

Èç¹û³É¹¦£º¸üÐÂÏàÓ¦¸úËæÕßµÄ nextIndex ºÍ matchIndex

Èç¹ûÒòΪÈÕÖ¾²»Ò»Ö¶øÊ§°Ü£¬¼õÉÙ nextIndex ÖØÊÔ

Èç¹û´æÔÚÒ»¸öÂú×ãN > commitIndexµÄ N£¬²¢ÇÒ´ó¶àÊýµÄmatchIndex[i] ¡Ý N³ÉÁ¢£¬²¢ÇÒlog[N].term == currentTerm³ÉÁ¢£¬ÄÇôÁîcommitIndexµÈÓÚÕâ¸öN

 

   
1521 ´Îä¯ÀÀ       28
????

HTTP????
nginx??????
SD-WAN???
5G?????
 
????

??????????
IPv6???????
??????????
???????
????

????????
????????
???????????????
??????????
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
ÔÆÔ­Éú¼Ü¹¹¸ÅÊö
K8S¸ß¿ÉÓü¯Èº¼Ü¹¹ÊµÏÖ
ÈÝÆ÷ÔÆ¹ÜÀíÖ®K8S¼¯Èº¸ÅÊö
k8s-ÕûÌå¸ÅÊöºÍ¼Ü¹¹
Ê®·ÖÖÓѧ»áÓÃdocker²¿Êð΢·þÎñ
×îпγÌ
ÔÆ¼ÆË㡢΢·þÎñÓë·Ö²¼Ê½¼Ü¹¹
Æóҵ˽ÓÐÔÆÔ­ÀíÓë¹¹½¨
»ùÓÚKubernetesµÄDevOpsʵ¼ù
ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦Ó㨰¢ÀïÔÆ£©
Docker²¿Êð±»²âϵͳÓë×Ô¶¯»¯¿ò¼Üʵ¼ù
³É¹¦°¸Àý
±±¾© ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ùÅàѵ
ij¾ü¹¤Ñо¿µ¥Î» MDA£¨Ä£ÐÍÇý¶¯¼Ü¹¹£©
ÖªÃûÏû·Ñ½ðÈÚ¹«Ë¾ ÁìÓòÇý¶¯Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ