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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
·Ö²¼Ê½»·¾³RaftÒ»ÖÂÐÔ¹²Ê¶Ëã·¨½â¶Á
 
×÷ÕߣºÌÕ»Ô
  1568  次浏览      27
2021-1-19
 
±à¼­ÍƼö:
±¾ÎÄÖ÷ÒªÏÈ´ÓËã·¨ÕûÌåÉÏ˵Ã÷·Ö²¼Ê½»·¾³RaftµÄÌØµã£¬ÔÙϸ˵ÆäʵÏÖ¡£
±¾ÎÄÀ´×Ôcsdn£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼­¡¢ÍƼö¡£

RaftÊÇ·Ö²¼Ê½»·¾³ÏµÄÒ»ÖÂÐÔËã·¨£¬Ëüͨ¹ýÉÙÊý·þ´Ó¶àÊýµÄÑ¡¾ÙÀ´Î¬³Ö¼¯ÈºÄÚÊý¾ÝµÄÒ»ÖÂÐÔ¡£ËüÓëRBFTËã·¨Ãû³ÆÓеãÏñ£¬È»¶øRaftËã·¨Àï²»ÄÜ´æÔÚ°Ýռͥ½Úµã£¬¶øRBFTÔòÄÜÈÝÈÌBFT½ÚµãµÄ´æÔÚ¡£Raft·Ç³£ÀàËÆÓÚpaxosЭÒ飨²Î¼ûÎÒµÄÕâÆªÎÄÕ¡¶paxosËã·¨ÈçºÎÈÝ´íµÄ¨C½²ÊöÎ廢½«µÄʵ¼ù¡·£©£¬È»¶øËü±ÈpaxosЭÒéºÃÀí½âÐí¶à£¨ÒòΪpaxosЭÒéÄÑÒÔ¾ßÌåʵÏÖ£¬ËùÒÔzookeeper²Î¿¼paxosʵÏÖÁËËü×Ô¼ºµÄZabËã·¨£©¡£Í¬Ñù£¬RaftÓÐÒ»¸öÓÃGOÓïÑÔʵÏÖµÄetcd·þÎñ£¬ËüµÄ¹¦ÄÜÓëZookeeperÏàͬ£¬ÔÚÈÝÆ÷²Ù×÷ϵͳCoreOS×÷ΪºËÐÄ×é¼þ±»Ê¹Óá£

±¾ÎÄÏÈ´ÓËã·¨ÕûÌåÉÏ˵Ã÷ÆäÌØµã£¬ÔÙϸ˵ÆäʵÏÖ¡£Îª·½±ã´ó¼ÒÀí½â£¬±¾ÎÄ»¹ÊÇÒÔͼΪÖ÷£¬Ã»Óйý¶àÉæ¼°Ëã·¨µÄϸ½Ú¡£RaftÒ×Àí½âÒ×ʵÏÖ£¬ÊÇÎÒÃÇÈëÃÅ·Ö²¼Ê½Ò»ÖÂÐÔËã·¨µÄ½Ý¾¶£¡

1.Ëã·¨Ò×±»Àí½â

RaftЭÒéµÄÐÔÄܲ¢²»±ÈpaxosµÄ¸÷ÖÖʵÏÖ¸ü¸ß£¬ËüµÄÓŵãÖ÷ÒªÔÚÓÚЭÒéµÄ¿ÉÀí½âÐԺã¬Çҷdz£¾ß±¸¿É²Ù×÷ÐÔ£¬ºÜÈÝÒ×ÕÕ×ÅЭÒé¾Í¿ÉÒÔʵÏÖ³öÎȶ¨¡¢½¡×³µÄËã·¨¡£ÂÛÎÄ×÷ÕßÔÚ˹̹¸£ºÍ¼ÓÖÝ´óѧ×ö¹ý²âÊÔ£¬¶Ô±¾¿Æ¼°Ñо¿Éú·Ö±ðѧϰpaxosºÍRaftЭÒé¿Î³Ìºó²âÑ飬ÔÚ×Ü·Ö60·ÖµÄ²âÊÔÀïÆäµÃ·ÖÈçÏÂͼËùʾ£º

´ÓÉÏͼ¿É¼û£¬RaftЭÒéµÄµÃ·Ö£¨Æ½¾ù25.7£©Ã÷ÏÔ¸ßÓÚpaxos£¨Æ½¾ù20.8£©¡£ÎÒÏàÐÅѧϰ¹ýpaxosËã·¨µÄÈ˶¼ÓÐÐĵ㺺ÜÐÁ¿àµÄÀí½âºó£¬Ò»¶Îʱ¼äºó¾ÍÍêÈ«²»¼ÇµÃϸ½ÚÁË£¬ÖÁÉÙÎÒ±¾ÈËÊÇÈç´Ë¡£¶øRaftЭÒé·Ç³£¼òµ¥Çåˬ£¬Õâ¸ö²âÊÔÒ²ºÜÄÜ·´Ó³ÎÊÌâ¡£ÔÚ²âÊÔºó£¬×÷Õß»¹·¢ÆðÁËÒ»¸öµ÷²éÎÊ¾í£¬Ñ¯ÎÊѧÉúÕâÁ½¸öËã·¨Äĸö¸üÈÝÒ×ʵÏÖ£¿Äĸö¸üÈÝÒ×Àí½â£¿Æä´ð°¸ÈçÏÂͼËùʾ£º

¿É¼û£¬Õâ¸ö´øÓÐÖ÷¹ÛÐԵĵ÷²éÎʾí³ÊÏÖѹµ¹ÐÔÓÅÊÆ£ºRaftÊÇÒ»¸öÈÝÒ×Àí½â¡¢ÈÝÒ×ʵÏÖµÄËã·¨¡£

2.Ë㷨ʵÏÖetcdµÄÐÔÄܲâÊÔÊý¾Ý

RaftÓкܶàÓïÑÔµÄʵÏÖ£¬°üÀ¨C++¡¢GO¡¢Scala¡¢JavaµÈ£¨Ïê¼ûhttps://raft.github.io/£©£¬µ«×îÓÐÃûµÄʵÏÖ¾ÍÊÇetcdÁË£¬Ëü×÷ΪCoreOSÉú̬µÄÖØÒª×é¼þ¶øÎÅÃû¡£ÎÒÃÇ¿ÉÒÔͨ¹ýetcdµÄÐÔÄÜÊý¾Ý¿´Ò»¿´RaftËã·¨µÄʵ¼Ê±íÏÖ¡£

²âÊÔ¼¯ÈºÓÉ3̨·þÎñÆ÷¹¹³É£¬ÆäÅäÖÃÈçÏ£º

Google Cloud Compute Engine

3 machines of 8 vCPUs + 16GB Memory + 50GB SSD

1 machine(client) of 16 vCPUs + 30GB Memory + 50GB SSD

Ubuntu 17.04

etcd 3.2.0, go 1.8.3

ÏÂÃæ·Ö±ð²âÊÔдºÍ¶ÁµÄÐÔÄÜ¡£Ð´ÐÔÄÜÊý¾ÝÈçϱíËùʾ£º

¶ø¶ÁÐÔÄÜÊý¾ÝÈçϱíËùʾ£º

ÔÚ¶ÁÐÔÄÜÊý¾ÝÖУ¬LinearizableÒ»ÖÂÐÔ¸ßÓÚSerializable£¬¹ÊÐÔÄÜÉԲÆäÔ­Ê¼Ò³ÃæÔÚÕâÀhttps://coreos.com/etcd/docs/latest/op-guide/performance.html¡£

ÊÂʵÉÏ£¬ÔÚËã·¨µÄÕý³£ÔËÐÐÖÐÓëpaxos²¢ÎÞ²îÒì¡£¶øÒ»µ©leaderå´»ú£¬´Ó·¢ÏÖµ½ÖØÐÂÑ¡¾Ù³öÐÂleader¡¢ÐÂleader¿ªÊ¼¹¤×÷µÄÕâ¶Îʱ¼äµÄ³¤¶Ì£¬ÊÇÓ°ÏìÐÔÄܵÄÖØÒªÖ¸±ê¡£ÏÂͼÖжÔ5¸ö½Úµã¹¹³ÉµÄ¼¯Èº·´¸´µÄÈÃleaderå´»ú£¬¹Û²ì»Ö¸´µÄʱ¼ä£¬Æä½á¹ûÈçÏ£º

ÔÚÉÏͼÖÐÓÐÒÔϼ¸¸ö¹Ø×¢µã£º

²»Í¬ÑÕÉ«¼°ÏßÌõ´ú±í×ÅfollowerµÄ¶¨Ê±Æ÷¡£ÈçÔÚ300msÄÚûÓÐÊÕµ½leaderµÄÐÄÌø£¬Ôò·¢ÆðÑ¡¾Ù¡£ÆäÖÐ150-300msÕâÑùµÄÊý¾Ý±íÃ÷£¬Õâ5̨followerµÄ¶¨Ê±Æ÷·Ö²¼ÔÚ150msµ½300msÖ®¼ä£¬³ÊÏÖËæ»ú»¯¡£¶ø150-150ms±íʾûÓÐËæ»ú»¯£¬ËùÓнڵãµÄ³¬Ê±Ê±¼äÊÇÒ»ÑùµÄ¡£

ºá×ø±ê´ú±í×Å·¢ÏÖµ½Ìæ»»µôå´»úleader¿ªÊ¼·þÎñµÄʱ¼ä¡£ÊýÖµµÄµ¥Î»ÎªºÁÃë¡£

×Ý×ø±ê±íʾ²âÊÔʱ¼äÔÚÈ«²¿²âÊÔÊý¾ÝÖеıÈÀý¡£ÒÔÉÏÿÌõÏß¶¼×öÁË1000´ÎÊÔÑ飨³ý150-150msÖ»ÊÔÑéÁË100´Î£©¡£

ÉÏͼ±íÃ÷£¬Ôö¼ÓËæ»ú»¯ºó£¬¿ÉÒÔ´ó·ù¼õÉÙÑ¡¾ÙµÄƽ¾ùÓÃʱ¡£ÏÂÃæµÄͼ±íÃ÷£¬Í¨¹ý½µµÍ×î¶ÌµÄ³¬Ê±Ê±¼ä£¬Ò²¿ÉÒÔ¼õÉÙå´»úʱ¼ä¡£RaftÍÆ¼öµÄʱ¼äΪ150-300ms¡£

3¡¢RaftËã·¨¸ÅÊö

¸´ÔÓµÄÎÊÌâ¿ÉÒÔͨ¹ý·Ö½âΪ¶à¸ö¼òµ¥µÄ×ÓÎÊÌâÀ´½â¾ö£¬RaftÕýÊÇÈç´Ë£¨paxosºÜÄѷֽ⣩¡£RaftÊ×Ïȶ¨Òå×Ô¼ºÊÇÒ»¸ökey/valueÊý¾Ý¿â¡£ÄÇô£¬ÇëÇó¾Í·ÖΪ¶ÁºÍд¡£Raft½«ÎÊÌâ·Ö½âΪÒÔϼ¸¸öÒªµã£º

¼¯ÈºÀïÓÐһ̨Ϊleader½Úµã·þÎñÆ÷£¬ÇÒ¶ÁдÇëÇó¶¼Ö»ÄÜÏò¸Ã½Úµã·¢ËÍ£¬ÒԴ˱£Ö¤Ò»ÖÂÐÔ£»

µ±¼¯ÈºÄÚûÓÐleader½Úµãʱ£¬leader½Úµã±»¶àÊý½ÚµãÑ¡³öÀ´¡£±ÈÈ缯ȺÓÐ3¸ö½Úµã£¬ÄÇô2¸ö½ÚµãͬÒâµÄ»°£¬¾Í¿ÉÒÔÑ¡³ö1¸ö×÷Ϊleader£»

³ýleader½ÚµãÍ⣬ÆäËû½Úµã½Ð×öfollower×·ËæÕß¡£leader½ÚµãÏòfollower½Úµãͬ²½Ã¿ÌõдÇëÇó£»

Òò´ËRaft½«Ò»ÖÂÐÔÎÊÌâת»»ÎªleaderµÄÑ¡¾ÙÉÏ£¬ÒÔ¼°leaderÓëfollowerÖ®¼äµÄÊý¾Ýͬ²½¡£ÎÒÃÇÏÈÀ´Ì¸leaderÓë followerÖ®¼äµÄÊý¾Ýͬ²½ÎÊÌ⡣ÿһ´ÎдÇëÇó»áÐÞ¸ÄÊý¾Ý£¬¶ÁÇëÇóÔò²»»á£¬ËùÒÔ°ÑleaderÊÕµ½µÄдÇëÇóµ±×÷Ò»´Î²Ù×÷ÈÕÖ¾¼Ç¼ÏÂÀ´£¬ÇÒͬʱ°Ñ²Ù×÷ÈÕ־ͬ²½¸øËùÓеÄfollower½Úµã£¬¶øÓÐÒ»¸ö×îÖÕ״̬Êý¾Ý¿â¼Ç¼ijһ¸ökeyµÄ×îÖÕÖµ£¬ÈçÏÂͼËùʾ£¨ÊÂʵÉÏÕâÓëfabricÇø¿éÁ´À¶àÌõ½»Ò×ÈÕÖ¾¹¹³ÉµÄÊÀ½ç״̬Êý¾Ý¿â·Ç³£ÏàËÆ£¬ÏêÇéÇë²Î¼û¡¶Çø¿éÁ´¿ªÔ´ÊµÏÖhyperledger fabric¼Ü¹¹Ïê½â¡·£©£º

ÉÏͼÖÐÆä²½Ö躬ÒåÈçÏ£º

leaderÊÕµ½Ð´ÇëÇóy=9£¬´Ëʱ״̬Êý¾Ý¿âÊÇy=1£»

½«y=9ÕâÌõÈÕÖ¾×·¼Óµ½LogµÄĩβ£¬Í¬Ê±½«¸ÃÌõÈÕ־ͬ²½¸øÆäËûfollower£»

µ±¶àÊýfollower³É¹¦ÊÕµ½ÕâÌõy=9µÄÈÕÖ¾ºó£¬leader½«×´Ì¬Êý¾Ý¿â´Óy=1¸üÐÂΪy=9£»

·µ»Øclient±íʾy=9ÉèÖóɹ¦¡£

4¡¢ÈçºÎÑ¡¾Ù³öleader

µ±Ò»¸ö¼¯Èº¸ÕÆô¶¯Ê±£¬ËùÓеĽڵ㶼ÊÇfollower£¬followerÖ»Äܱ»¶¯µÄ½ÓÊÕleaderµÄÏûÏ¢²¢ÏìÓ¦¡£´Ëʱ¾­¹ýÒ»¶Îʱ¼äÈôfollower½Úµã·¢ÏÖÈ«¼¯ÈºÃ»ÓÐleader£¬¿ªÊ¼°Ñ×Ô¼º×÷ΪleaderµÄºòÑ¡ÈËÏò´ó¼ÒÕ÷ѯͶƱ£¬´Ëʱ¸Ã½Úµã½Ð×öCandidateºòÑ¡ÈË¡£Èô¶àÊýfollower½ÚµãͬÒâºó£¬ÔòÉý¼¶Îªleader½Úµã¡£¶øleader½ÚµãÓÐÒåÎñ¶¨Ê±ÐÄÌøÍ¨ÖªËùÓÐµÄ follower½Úµã£¬Ê¹follower½ÚµãÖªµÀ´Ëʱ¼¯ÈºÖеÄleaderÊÇË­¡£ÈçÏÂͼËùʾ£º

ÉÏͼµÄ״̬±äǨÀfollowerÔÚÒ»¸öËæ»ú¶¨Ê±Æ÷£¨ÀýÈç150msµ½300msÖ®¼ä£©ÄÚûÓÐÊÕµ½leaderµÄÐÄÌø£¬Ôò¿ªÊ¼·¢ÆðÑ¡¾Ù£¬¶øºòÑ¡È˾ÍÊÇ×Ô¼º£¬ËùÒÔ×Ô¼º×ª»¯ÎªCandidate£¬ÇÒ×Ô¼ºÊ×ÏÈͶ×Ô¼ºÒ»Æ±¡£ÈôÔÚͶƱδÍê³Éʱ£¬·¢ÏÖеÄleader³öÏÖ£¬ÔòÈ¡ÏûͶƱ£¬ÓÉcandidateת»»Îªfollower¡£

ÿ´ÎÑ¡¾ÙÊÇÒ»¸öÈÎÆÚ£¬Õâ¸öÈÎÆÚ½Ð×öterm¡£Ã¿´ÎÈÎÆÚÓÐÒ»¸öÈÎÆÚºÅ£¬ËüÊÇÈ«¾ÖµÄ¡¢µÝÔöµÄ£¬µ±ÍøÂçÖжÏʱËäÈ»»áÔÝʱ²»Ò»Ö£¬µ«ÍøÂ糩ͨºó»áºÜ¿ìͬ²½£¬ÈçÏÂͼËùʾ£º

ÈçÉÏͼÖУ¬À¶É«ÊÇÑ¡¾ÙÆÚ£¬ÂÌÉ«ÊDzúÉúleaderºó¡£Èç¹û²»³öÏÖÒâÍ⣬Õâ¸öleader»áÒ»Ö±µ±ÏÂÔÆ£¬ËùÒÔtermÖÜÆÚ»áºÜ³¤¡£³öÏÖå´»ú»òÕßÍøÂ粨¶¯Ê±£¬ÖØÐÂÑ¡¾ÙÓÚÊdzöÏÖterm2¡£ÔÚterm3ʱҲ¿ÉÄÜһֱѡ¾Ù²»³öеÄleader£¬´ËʱºÜ¿ÉÄܶà¸öcandidate·¢ÆðÁËͶƱ£¬Æ±Êý±»Æ½Ì¯ºó˭ҲûÄõ½´ó¶àÊý£¨ÓÉÓÚÿ̨followerµÄ¶¨Ê±Æ÷ʱ¼äÊÇËæ»úµÄ£¬Òò´Ë¸ÃÇé¿ö·¢Éú¸ÅÂʺÜС£¬ÇÒ·¢ÉúºóÒ²ÄÜºÜ¿ì»Ø¹éÕý³££©¡£ÓÚÊÇ»á½øÈëterm4¡£

5¡¢²Ù×÷ÈÕÖ¾µÄͬ²½

leaderÐèÒª°ÑдÈÕ־ͬ²½µ½´ó¶àÊýfollowerºó²ÅÄܸüÐÂ״̬Êý¾Ý¿â£¬²¢Ïòclient»Ø¸´Ð´³É¹¦¡£Èç¹ûûÓеõ½¶àÊýfollowerµÄ³É¹¦Ó¦´ð£¬leader»áÖØ¸´·¢ËÍÕâÌõÈÕÖ¾¸üÐÂÇëÇó¡£ÏÂͼÖÐÓÐ8ÌõÈÕÖ¾3¸öÈÎÆÚ5¸ö½Úµã£¬Ã¿ÌõÈÕÖ¾Àï³ý¼Ç¼Á˲Ù×÷ÐÐΪÍ⻹¼Ç¼Á˵±Ê±µÄÈÎÆÚ£º

ÉÏͼÖУ¬ÂÌÉ«ÊǵÚÒ»¸öÈÎÆÚ£¬ÆäÖÐ3ÌõÈÕÖ¾ÌõÄ¿ÖеÚ3ÌõÈÕÖ¾y=9ûÓб»µÚ4¸ö½Úµã½ÓÊÕµ½¡£»ÆÉ«ÊǵÚ2¸öÈÎÆÚ¡£ÂÌÉ«Óë»ÆÉ«ÈÎÆÚÄÚ£¬ËùÓеÄÈÕÖ¾½Ô±»¶àÊý½ÚµãÊÕµ½£¬Òò´Ë¶¼ÊÇдÈë״̬Êý¾Ý¿âµÄ£¬ÕâЩÈÕÖ¾µÄ״̬¶¼ÊÇcommitedÒÑÌύ״̬¡£À¶É«ÊǵÚ3¸öÈÎÆÚ£¬ÆäµÚ8ÌõÈÕÖ¾x=4ûÓб»¶àÊý½ÚµãÊÕµ½£¬Òò´Ë¸ÃÈÕÖ¾²»ÊÇcommitted״̬¡£

leaderÓë followerÖ®¼äµÄÈÕÖ¾Ò²¿ÉÄÜ´æÔÚ²»Ò»ÖµÄÇé¿ö£¬follower»òÕßÉÙÁËһЩÈÕÖ¾£¬»òÕß¶àÁËһЩÈÕÖ¾£¬ÈçÏÂͼËùʾ£º

ÉÏͼÖÐ×îÉÏÃæÒ»ÐÐÊÇleaderµÄÈÕÖ¾£¬¶øfollowerµÄÈÕÖ¾´æÔÚÒÔÏÂÇé¿ö£º

a¡¢b±íʾfollowerÏà±ÈleaderÉÙÁ˼¸ÌõÈÕÖ¾£»

c¡¢d±íʾfollowerÏà±Èleader¶àÁ˼¸ÌõÈÕÖ¾£»

e¡¢f±íʾͬʱÉÙÁËһЩÈÕÖ¾£¬ÓÖ¶àÁËһЩÈÕÖ¾¡£±ÈÈçfÇé¿ö¾ÍÊÇÕą̂followerÔÚÈÎÆÚ2ʱ±»Ñ¡Îªleader£¬¸ÕÌí¼Ó3ÌõÈÕÖ¾»¹Ã»ÓÐÌá½»ÄØ¾Íå´»úÁË£¬ÖØÆôºó±»Ñ¡Îªleader£¬ÓÖѸËÙÊÕµ½5¸öдÇëÇó¼ÓÁË5ÌõÈÕÖ¾£¬»¹Ã»Ìá½»ÓÖå´»úÁË£¬´ËʱÔÙÆô¶¯×÷Ϊfollower´æÔÚʱµÄ״̬¾ÍÊÇÉÏͼfµÄ״̬¡£

leaderÈç¹ûÈ·¶¨¶àÊý»úÆ÷ÊÕµ½ÈÕÖ¾£¬×ÔÈ»¿ÉÒÔÌá½»¡£Èç¹ûÐÂleader¸Õ±»Ñ¡³öÀ´£¬Ëü»áÊÔͼ°Ñ¶àÊý»úÆ÷Éϱ£´æµÄÈÕÖ¾£¨¼´Ê¹Ëü×Ô¼ºÃ»ÓÐÕâÌõÈÕÖ¾£©¨CÒ²¾ÍÊÇǰÈεÄÈÕÖ¾Ò²Ìá½»£¬µ«Õâδ±Ø±£Ö¤Ò»¶¨³É¹¦£¬ÈçÏÂͼËùʾ£º

ÔÚÉÏͼÖУ¬dºÍe¾ÍÊÇÌύǰÈÎÈÕ־ŬÁ¦Ï¿ÉÄܵ¼ÖµÄÁ½ÖÖ×´¿ö£º

ÔÚaÖУ¬S1ÊÇleader£¬Ç°Ð´ÈëÈÕÖ¾2²¢Ö»Í¬²½ÈÕÖ¾µ½S1ºÍS2£¬»¹Î´µ½ÆäËû½Úµãʱ¾Íå´»úÁË£»

ÔÚbÖУ¬S5ͨ¹ýËü×Ô¼º¡¢S3¡¢S4µÄͶƱ±»Ñ¡Îªleader£¬Òò´ËËü²¢²»ÖªµÀÈÕÖ¾2µÄ´æÔÚ¡£´ËʱËüÊÕµ½clientµÄÐÂÇëÇóдÈëÈÕÖ¾3£¬¶ø¸ÕдÈëÈÕÖ¾3¾Íå´»úÁË£»

ÔÚcÖУ¬S1ÖØÐ±»Ñ¡Îªleader£¬´ËʱËü·¢ÏÖÈÕÖ¾2»¹Î´±»¸´ÖƵ½¶àÊýfollower£¬¿ªÊ¼¸´ÖÆÈÕÖ¾2¡£´ËʱS1ÊÕµ½ÐÂÇëÇ󣬲¢¼Ç¼ÁËÈÕÖ¾4£»

ÔÚdÖÐÊǵÚÒ»ÖÖ³¡¾°£¬´ËʱÀϵÄÈÕÖ¾2±»¸´ÖƵ½ÁËS3ÉÏ£¬È»¶ø´ËʱµÄÈÕÖ¾2ËäÈ»±»S1¡¢S2¡¢S3¶àÊý½Úµã³ÖÓУ¬µ«È´ÊÇͨ¹ý2´ÎÈÎÆÚÍê³ÉµÄ£¬ÇÒÐÂÈÎÆÚÀïµÄÈÕÖ¾4²¢Î´±»¸´ÖƵ½¶àÊý»úÆ÷ÉÏ£¬ËùÒÔÈÕÖ¾2²¢²»ÄÜÈ϶¨¿ÉÒÔ´¦ÓÚcommited״̬¡£Èô´ËʱS1å´»ú£¬S5ÖØÐµ±Ñ¡£¬ÔòÈÕÖ¾2»á±»¸²¸Ç¶ªÆú£¬µ±È»Ò²°üÀ¨Î´±»¸´ÖƵ½¶àÊý»úÆ÷µÄÈÕÖ¾4£»

ÔÚeÖÐÊǽÓ×ÅcµÄµÚ¶þÖÖ³¡¾°£¬ÈôÈÕÖ¾4Ò²±»¸´ÖƵ½S1¡¢S2¡¢S3Õâ¶àÊý»úÆ÷ÉÏ£¬ÔòÈÕÖ¾2ÓëÈÕÖ¾3ͬʱ´¦ÓÚcommited״̬£¬ÓÀÔ¶²»»á±»¸²¸Ç¡£

6¡¢¼¯Èº¹æÄ£µÄÅäÖñ仯

ͨ³£ÎÒÃǰÑraft¼¯ÈºÅäÖÃΪ3»òÕß5¸ö½Úµã£¬ÌرðÊÇ5¸ö½Úµãʱ¿ÉÒÔÈÝÈÌ2¸ö½Úµãå´»ú¡£Õâ¸øÎÒÃÇÆ½»¬Éý¼¶Ê±´øÀ´Á˺ô¦£º1̨̨Éý¼¶Ê±ÈÔÈ»¿ÉÒÔÈÝÈÌ1̨崻ú¡£µ«ÈôÎÒÃǵļ¯ÈºÔ­À´ÊÇ3¸ö½ÚµãµÄ×éºÏ£¬È´¸ÄΪ5¸ö½Úµã£¬Èç¹ûÕâ¸ö¹ý³ÌÊDz»Í£Ö¹·þÎñ¶¯Ì¬Íê³ÉµÄ£¬Õâ¿ÉÄܳöÏÖÎÊÌ⣬ÈçÏÂͼËùʾ£º

ÔÚÉÏͼÖУ¬ÂÌÉ«µÄÀÏÅäÖÃÖ»ÓÐ1¡¢2¡¢3ÕâÈý̨server×é³É¼¯Èº£¬¶øÔÚÀ¶É«µÄÐÂÅäÖÃÀïÔòÔÚ1¡¢2¡¢3¡¢4¡¢5ÕâÎą̊server×é³ÉµÄм¯Èº¡£ÓÚÊÇ£¬´æÔÚºìÉ«¼ýÍ·Ö¸±êµÄµã£¬ÔڸõãÉÏ£¬¿ÉÄÜ1¡¢2ÕâÁ½Ì¨server¸ù¾ÝÀÏÅäÖÃÔÚËüÃÇ2¸öÖÐÑ¡³öµÚ1¸öleader£¬¶ø3¡¢4¡¢5¸ù¾ÝÐÂÅäÖÃÔÚËüÃÇ3¸öÖÐÑ¡³öÁ˵Ú2¸öleader¡£Í¬Ò»Ê±¿Ì³öÏÖÁË2¸öleader£¬ÕâÑùÊý¾Ý¾Í»á²»Ò»Ö¡£

ΪÁ˽â¾öÉÏÊöÎÊÌ⣬RaftÌá³öÁËÒ»¸ö¹²Í¬Ò»ÖÂ״̬£¬¸Ã״̬´¦ÓÚÀÏÅäÖúÍÐÂÅäÖÃÉúЧµÄÖмä½×¶Î¡£Ê×ÏÈ£¬ÎÒÃÇÉèC(old)ΪÀÏÅäÖ㬶øÐÂÅäÖÃΪC(new)£¬Óû´ÓC(old)״̬ÖÃC(new)£¬±ØÐë¾­ÀúC(old,new)״̬¡£ÆäÖУ¬¸üе½C(old,new)ÒÔ¼°C(new)ʱ£¬ÈÔÈ»ÒÔ¸´ÖÆÈÕÖ¾µÄ·½Ê½½øÐУ¬¼´£ºÏȽøÐÐÈÕÖ¾¸´ÖÆ£¬µ±È·¶¨¶àÊý½ÚµãÊÕµ½¸ÃÈÕÖ¾ºó£¬Ôò¸ÃÈÕ־ΪcommitedÒÑÌύ״̬¡£ÈçÏÂͼËùʾ£º

´ÓÉÏͼÖпÉÒÔ¿´µ½£º

ÔÚC(old,new)ÈÕÖ¾¿ªÊ¼¸´ÖÆÊ±£¬ÈÔÈ»½öʹÓÃC(old)ÕâÒ»ÖÖÅäÖã¬ËùÒÔ²»»á³öÏÖË«leader£»

¶øC(old,new)Ò»µ©½øÈëcommitedÌύ״̬£¬´ËʱÈôleaderå´»úÖØÐÂÑ¡¾Ù£¬ÔòÒªÇó±ØÐëÊǾ߱¸C(old,new)µÄcandidate²ÅÄܱ»Ñ¡ÎªÐÂleader£»

Ö®ºó£¬leader¿ªÊ¼¸´ÖÆÈÕÖ¾C(new)£¬´ÓÕâÒ»¿ÌÆðleaderµÄÐÂÅäÖÿªÊ¼ÉúЧ¡£

7¡¢ÈÕÖ¾µÄÓÅ»¯

¿ÉÒÔ¿´µ½£¬RaftËã·¨µÄºËÐľÍÊÇleaderÑ¡¾ÙÒÔ¼°ÈÕÖ¾¸´ÖÆ¡£¶øÈÕÖ¾µÄÎÞÏÞÔö³¤£¬±ØÈ»´øÀ´ÐÔÄÜÎÊÌ⣬ÕâÊÇ´Ó¹¤³Ì½Ç¶È±ØÐë½â¾öµÄÎÊÌâ¡£ÈÕÖ¾±íʾµÄÊǹý³Ì£¬×´Ì¬Êý¾Ý¿â±íʾµÄÊǽá¹û£»Í¬Ñù£¬ÎÒÃÇ¿ÉÒÔ¶¨ÆÚ°Ñijһʱ¼äµã֮ǰµÄÈÕÖ¾×ö³É״̬Êý¾Ý¿â£¬»òÕß³ÆÎª¿ìÕÕ£¬½ö±£Áô¸Ãʱ¼äµãºóµÄÈÕÖ¾£¬ÕâÑù¾Í¿ÉÒÔ´ó·ù¼õÉÙÈÕÖ¾µÄÊýÁ¿¡£ÈçÏÂͼËùʾ£º

ÔÚÉÏͼÖУ¬Ô­ÏȵÄÒѾ­±»Ìá½»µÄ5ÌõÈÕÖ¾×îÖÕµ¼ÖµÄ״̬ÊÇx=0&&y=9£¬¹Ê¿ÉÒÔ±»¿ìÕÕÌæ´ú£¬Õâ±ã¼õÉÙÁËÈÕÖ¾Á¿¡£

8¡¢Ð¡½á

Raft»¹ÓÐÒ»¸ö·Ç³£ÐÎÏóµÄËã·¨ÑÝʾ¶¯»­£¬°üº¬ÁËÒ»ÖÂÐÔËã·¨µÄÓÉÀ´¡¢leaderµÄÑ¡¾Ù¡¢¸ôÀëÍøÂçϵÄleaderÑ¡¾Ù¡¢ÈÕÖ¾µÄ¸´ÖƵȳ¡¾°£¬Çë´ò¿ªRaftUnderstandable Distributed ConsensusÁ´½Ó¹Û¿´¡£

ѧϰRaftËã·¨ÓÐÖúÓÚÎÒÃÇÀí½â·Ö²¼Ê½»·¾³ÏµÄÒ»ÖÂÐÔ½â¾ö·½°¸£¬¶øÇÒËüȷʵ±ÈpaxosºÃÀí½âÐí¶à£¬¿ÉÒÔ×÷ΪÎÒÃǵÄÈëÃÅËã·¨¡£

 

 

   
1568 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ