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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Raft Ëã·¨Ô­Àí¼°ÆäÔÚ CMQ ÖеÄÓ¦Óã¨Ï£©
 
×÷ÕߣºÌÚÑ¶ÔÆÖмä¼þÍŶÓ
  1652  次浏览      29
 2020-6-4
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜRaftÔÚCMQÖеÄÓ¦ÓõÄÏêϸ¹ý³Ì,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚÔÆÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­ÍƼö¡£

½Ó¡¶Raft Ëã·¨Ô­Àí¼°ÆäÔÚ CMQ ÖеÄÓ¦Óã¨ÉÏ£©¡·

Èý RaftÔÚCMQÖеÄÓ¦ÓÃ

ÔçÆÚÎÒÃÇÔÚrabbitmqµÄ»ù´¡ÉϴÁËÒ»Ì׿ÉÀ©Õ¹ÏûÏ¢Öмä¼þCRMQ1.0£¬ÓÉÓÚrabbitmqµÄGMͬ²½Ëã·¨ÔÚÐÔÄܵȷ½Ãæ´æÔÚÆ¿¾±£¬ËùÒÔ×ÔÑÐÁË»ùÓÚraftËã·¨µÄÄÚ²¿°æ±¾CRMQ2.0ºÍÌÚÑ¶ÔÆCMQ£¬ÔÚ±£Ö¤Ç¿Ò»Ö¸߿ɿ¿µÄǰÌáÏ£¬ÐÔÄܺͿÉÓÃÐÔ¶¼ÓÐÏÔÖøÌáÉý¡£ÊµÏÖÉϲÉÓÃÁËÉú²úConfirm + Ïû·ÑAck»úÖÆ±£Ö¤ÏûÏ¢²»¶ªÊ§£¬ConfirmºÍAck»úÖÆ¾ùͨ¹ýraftÀ´±£Ö¤¡£Éú²úµÄÏûϢͨ¹ýRaftתΪEntryͬ²½µ½´ó¶àÊý½Úµã²¢Ìá½»£¬Íê³Éºó¸÷½Úµã״̬»úÓ¦ÓøÃEntry£¬½«ÏûÏ¢ÄÚÈÝдÈë´ÅÅÌ£¬Ö®ºóÓÉLeader½Úµã»Ø¸´¿Í»§¶ËConfirm£¬±íʾÏûÏ¢Éú²ú³É¹¦¡£Ïû·Ñʱ¿Í»§¶Ë´ÓLeader½ÚµãÀ­È¡ÏûÏ¢£¬Ïû·ÑÍê³Éºóͨ¹ýAckÃüÁî֪ͨ·þÎñ¶ËÏûÏ¢ÒÑÏû·Ñ¿Éɾ³ý£¬AckÇëÇó¾­Raftͬ²½ºó£¬¸÷½ÚµãÓ¦ÓøÃÇëÇó£¬Ö®ºóÏûÏ¢±»É¾³ý²»»áÔÙͶµÝ¡£ÏÂÃæ½éÉÜÏêϸ¹ý³Ì£º

Éú²úÁ÷³Ì£º

1£©Éú²úÕß½«Éú²úÏûÏ¢µÄÇëÇó·¢ÍùLeaderµÄRaftÄ£¿é¡£

2£©RaftÄ£¿éÍê³ÉEntryµÄ´´½¨ºÍͬ²½¡£

3£©´ó¶àÊý½ÚµãÉϳ־û¯²¢·µ»Ø³É¹¦ºóEntry±ê¼ÇΪCommitted¡£

4£©ËùÓнڵãµÄState MachineÓ¦ÓøÃÈÕÖ¾£¬È¡³öʵ¼ÊµÄÉú²úÇëÇ󣬽«ÏûÏ¢ÄÚÈÝдÈë´ÅÅÌ£¬¸üÐÂApplyIndex¡£¸Ã²½Öè²»ÐèҪˢÅÌ¡£

5£©Leader»Ø¸´¿Í»§¶ËConfirm£¬Í¨ÖªÉú²ú³É¹¦¡£

6£©Èç¹û´Ëºó»úÆ÷ÖØÆô£¬Í¨¹ýraftÈÕÖ¾»Ö¸´Éú²úÏûÏ¢£¬±£Ö¤ÁËÒÑConfirmµÄÏûÏ¢²»¶ªÊ§¡£

Ïû·ÑÁ÷³Ì£º

1£©Ïû·ÑÕß´ÓLeader½ÚµãÀ­È¡ÏûÏ¢¡£

2£©LeaderÊÕµ½ºó´Ó´ÅÅ̼ÓÔØÎ´É¾³ýµÄÏûϢͶµÝ¸ø¿Í»§¶Ë¡£

3£©¿Í»§¶Ë´¦ÀíÍê³ÉºóAckÏûÏ¢£¬Í¨Öª·þÎñÆ÷ɾ³ýÏûÏ¢¡£

4£©AckÇëÇó¾­Raftͬ²½ºó±ê¼ÇΪCommitted¡£

5£©¸÷½Úµã״̬»úÓ¦ÓøÃÈÕÖ¾£¬½«ÏûÏ¢¶ÔÓ¦µÄbitÖÃ룬½«ÆäÉèÖÃΪÒÑɾ³ý²¢¸üÐÂApplyIndex¡£

6£©Í¨Öª¿Í»§¶Ëɾ³ý³É¹¦¡£

7£©Èç¹û»úÆ÷ÖØÆô£¬Í¨¹ýRaftÈÕÖ¾»Ö¸´AckÇëÇ󣬱£Ö¤ÁËÒÑɾ³ýµÄÏûÏ¢²»»áÔÙͶµÝ¡£

¿ìÕÕ¹ÜÀí£º

¿ìÕÕ¹ÜÀíÓëÒµÎñ½ôÃÜÏà¹Ø£¬²»Í¬ÏµÍ³¿ìÕÕÖÆ×÷µÄ³É±¾²îÒìºÜ´ó£¬CMQÖпìÕÕµÄÄÚÈÝÊ®·ÖÇáÁ¿£¬Ò»´Î¿ìÕյĺÄʱÔÚºÁÃë¼¶£¬Æ½¾ù5min´´½¨Ò»´Î£¬¸÷½Úµã¶ÀÁ¢Íê³É¡£ÊµÏÖÉÏÄÚ´æÖÐά»¤ÁËÒ»·Ý¶¯Ì¬µÄ¿ìÕÕ£¬ÖÆ×÷¿ìÕÕʱÊ×ÏÈ¿½±´³ö¶¯Ì¬¿ìÕյĸ±±¾£¬Ö®ºó´¦ÀíÁ÷¼ÌÐø¸üж¯Ì¬¿ìÕÕ£¬Óÿ½±´³öµÄ¸±±¾´´½¨¿ìÕÕÎļþ£¬²»Ó°Ïìʵ¼ÊµÄ´¦ÀíÁ÷¡£¿ìÕÕ¾ßÌåÄÚÈݰüÀ¨£º

1£©term£º¿ìÕÕ¶ÔÓ¦EntryµÄterm £¨²ÎÕÕËã·¨£©

2£©index£º¿ìÕÕ¶ÔÓ¦EntryµÄ index £¨²ÎÕÕËã·¨£©

3£©node_info£ºEntryʱµÄ¼¯ÈºÅäÖÃÐÅÏ¢¡£

4£©topic info£ºÃ¿¸ö¶ÓÁÐÒ»Ïî¡£CMQÖÐͬһ¶ÓÁÐÉú²úµÄÏûϢ˳ÐòдÈ룬·ÖƬ´æ´¢£¬Òò´ËÖ»Ðè¼Ç¼×îºóÒ»¸ö·ÖƬµÄ״̬£¨·ÖƬÎļþÃû£¬ÎļþÆ«ÒÆÁ¿£©¡£

5£©queue info£ºÃ¿¸ö¶ÓÁÐÒ»Ïî¡£CMQÖвÉÓÃbitmap¼Ç¼ÏûÏ¢µÄɾ³ýÇé¿ö£¬ÔÚÄÚ´æÖÐά»¤£¬ÔÚÖÆ×÷¿ìÕÕʱdumpµ½¿ìÕÕÎļþ¡£

¿É¿¿ÐÔ£ºÒµ½çͳһµÄºâÁ¿±ê׼ΪRPO(Recovery Point Objective)£¬·´Ó³¹ÊÕÏʱÊý¾Ý»Ö¸´ÍêÕûÐÔµÄÖ¸±ê¡£ÓÉÓÚÖ»ÓÐÌá½»µÄÈÕÖ¾²Å»á±»Ó¦Óõ½×´Ì¬»ú£¬ÇÒraftÈÕÖ¾ÔÚдÈëʱ»áÇ¿ÖÆË¢ÅÌ£¬ËùÒÔ¹ÊÕÏÖØÆôºóͨ¹ý¿ìÕÕ+raftÈÕÖ¾¼´¿É»Ö¸´£¬²»»á¶ªÊ§Êý¾Ý£¬RPO=0¡£²»¹ý£¬Èç2.7½ÚËùÊö£¬Leader¹ÊÕÏʱ¿ÉÄÜ»á²úÉúÖØ¸´Êý¾Ý£¬ÐèҪͨ¹ýÃݵÈÐÔ±£Ö¤»òÈ¥ÖØ»úÖÆÀ´½â¾ö¸ÃÎÊÌâ¡£

¿ÉÓÃÐÔ£ºÒµ½çͳһµÄºâÁ¿±ê׼ΪRTO(Recovery Time Objective)£¬·´Ó³¹ÊÕÏʱҵÎñ»Ö¸´¼°Ê±ÐÔµÄÖ¸±ê¡£follower¹ÊÕ϶ÔϵͳûÓÐÓ°Ï죨RTO=0£©£¬leader¹ÊÕÏʱÆäËû½Úµãͨ¹ý×Ô·¢Ñ¡³öÐÂleader£¬¶øÇÒCMQÖÐǰ¶Ë¾ß±¸×Ô¶¯ÖØÁ¬¹¦ÄÜ£¬µ±Á¬½Ó¶Ï¿ªºó»á×Ô¶¯Ñ°ÕÒÐÂleader£¬ÏµÍ³²»¿ÉÓÃʱ¼ä´ó´ó½µµÍ¡£Ä¿Ç°CMQÖÐÅäÖõÄÑ¡¾Ù³¬Ê±Ê±¼äΪ2s~4s£¬ÔÚ²»¿¼ÂÇÑ¡¾Ù³åÍ»µÄǰÌáÏ£¬RTOÉÏÏÞΪ4s¡£

ÔÚCMQÖУ¬Leaderͨ¹ýÓëFollowerµÄÐÄÌøÅжÏ×Ô¼ºÊÇ·ñÒÑÍøÂç·ÖÇø£¬µ±¼ì²âµ½·ÖÇøÊ±£¨´ó¶àÊý½ÚµãÉÏ´ÎÐÄÌø»Ø¸´Ê±¼ä¾àÏÖÔÚ³¬¹ý2s£©£¬Ö÷¶¯¶Ï¿ªÇ°¶ËÁ¬½Ó£¬Ç°¶Ë·¢ÏÖºó»á×Ô¶¯Ñ°ÕÒÐÂLeader¡£Õâ¶Îʱ¼äÄÚ¿Í»§¶ËÇëÇó»á³¬Ê±£¬ÔÚÁ¬ÉÏÐÂLeaderºó£¬¿Í»§¶ËÖØÊÔ֮ǰ³¬Ê±µÄÈÎÎñ£¬ºóÐøÇëÇó»Ö¸´Õý³£¡£

ËÄ RaftËã·¨ÐÔÄÜÓÅ»¯

RaftËã·¨µÄÐÔÄÜÆ¿¾±Ö÷ÒªÓÐÁ½·½Ã棺

1£© ÿ´ÎÈÕ־дÈëºó¶¼ÐèҪˢÅ̲ÅÄÜ·µ»Ø³É¹¦£¬¶øË¢ÅÌÊÇÒ»¸ö±È½ÏºÄʱµÄ²Ù×÷¡£

2£© ÓÉÓÚËã·¨ÏÞÖÆ£¬ËùÓеÄÇëÇó¶¼ÓÉLeader´¦Àí£¬²»ÄÜ×öµ½ËùÓнڵã½Ô¿ÉÌṩ·þÎñ¡£

Õë¶ÔÒÔÉÏÁ½¸öÎÊÌ⣬ÎÒÃÇ×öÁËÒÔÏÂÓÅ»¯£º

1£©Batch Processing£ºÔÚÇëÇóÁ¿½Ï´óʱ£¬²¢²»ÊÇÿһÌõÈÕ־дÈ붼ˢÅÌ£¬»¹ÊÇÀÛ»ýÒ»¶¨Á¿µÄÈÕÖ¾ºó¼¯ÖÐË¢ÅÌ£¬´Ó¶ø¼õÉÙË¢ÅÌ´ÎÊý¡£¶ÔÓ¦µÄ£¬ÔÚͬ²½µ½FollowerʱҲ²ÉÓÃÅúÁ¿Í¬²½µÄ·½Ê½£¬Follower½ÓÊÕºó½«ÈÕÖ¾ÅúÁ¿Ð´ÅÌ¡£

2£©Multi-Raft£º ½ø³ÌÖÐͬʱÔËÐжà¸öraftʵÀý£¬»úÆ÷Ö®¼ä×齨¶àraft ×飬¿Í»§¶ËÇëÇó·Óɵ½²»Í¬µÄgroupÉÏ£¬´Ó¶øÊµÏÖ¶àÖ÷¶Áд£¬Ìá¸ß²¢·¢ÐÔÄÜ¡£Í¨¹ý½«leader·Ö²¼ÔÚ²»Í¬»úÆ÷ÉÏ£¬Ìá¸ßÁËϵͳµÄÕûÌåÀûÓÃÂÊ¡£

3£©Async-rpc£º ÔÚÈÕ־ͬ²½¹ý³ÌÖвÉÓÃͬ²½rpc·½Ê½£¬ÔÚÒ»¶Ë´¦ÀíʱÁíÒ»¶ËÖ»Äܵȴý£¬ÐÔÄܽϲÎÒÃDzÉÓÃÒì²½µÄ·½Ê½Ê¹µÃleader¶Ë·¢ËͺÍFollower¶Ë´¦Àí²¢·¢½øÐС£·¢Ë͹ý³ÌÖÐleader¶Ëά³ÖÒ»¸ö·¢ËÍ´°¿Ú£¬µ±´ýÈ·ÈϵÄrpcÊý´ïµ½ÉÏÏÞÍ£Ö¹·¢ËÍ£¬´°¿ÚÖµÉÏÏÞ£º

ÔÚÓëͬÊôÓڸ߿ɿ¿(¶à¸±±¾Í¬²½Ë¢ÅÌ)µÄRabbitmqÐÔÄܶԱÈÖУ¬Ïàͬѹ²â³¡¾°ÏÂCMQËÙ¶È¿ÉÒÔ´ïµ½RabbitMQµÄËı¶×óÓÒ¡£

ÒÔÏÂΪTS60»úÆ÷1KBÏûÏ¢´óСʱÐÔÄÜÊý¾Ý£º

²âÊÔÖÐCMQ²ÉÓõ¥Raft×鷽ʽÒÔ±£Ö¤²âÊÔ¹«Æ½ÐÔ¡£¼à¿ØÏÔʾCPU¡¢ÄÚ´æºÍÍø¿¨¾ùδ´ïµ½Æ¿¾±£¬ÏµÍ³Æ¿¾±ÔÚ´ÅÅÌIO£¬iostatÏÔʾw_awaitÔ¶´óÓÚsvctm¡£Ö÷ÒªÔ­ÒòÔÚÓÚË¢Å̺Äʱ£¬Ôì³Éд²Ù×÷ÅŶӵȴý¡£

ʵ¼ÊÉú²ú»·¾³CMQÖÐÎÒÃǽ«raft×éºÍ´ÅÅ̽øÐа󶨣¬ÊµÏÖraft×éÖ®¼ä´ÅÅ̵ĸôÀ룬һ·½Ãæ±£Ö¤ÁË´ÅÅ̵Ä˳Ðò¶Áд£¬ÁíÒ»·½Ãæ³ä·ÖÀûÓûúÆ÷µÄcpu ¡¢ÄÚ´æ¡¢Íø¿¨µÈ×ÊÔ´¡£

Îå ͨÓÃRaft¿â

CMQÖÐÍêÕûʵÏÖÁËRaftËã·¨²¢½â¾öÁ˺ܶàϸ½ÚÄѵ㡣¿¼Âǵ½·Ö²¼Ê½ÏµÍ³Éè¼ÆµÄ¸´ÔÓÐÔ£¬Èç¹û¿ª·¢ÕßֻרעÓÚÒµÎñÏà¹Ø²¿·Ö£¬½«¿ÉÒÔÏÔÖø½µµÍ¿ª·¢ÄѶȣ¬Ìá¸ßϵͳµÄÖÊÁ¿£¬ËùÒÔÎÒÃǽ«CMQÖеÄraft²¿·ÖÒÔ¿âµÄ·½Ê½¶ÀÁ¢³öÀ´£¬Ê¹ÓÃÕßÓÃËü¼´¿É´î½¨Ò»Ì×ǿһÖ¸߿ÉÓ÷ֲ¼Ê½ÏµÍ³¡£Ä¿Ç°¸Ã¿âÒѾ­Íê³É»ùÏß°æ±¾¿ª·¢²¢ÔÚ²¿ÃÅÂäµØÊ¹Óã¬ÑéÖ¤Íê³Éºó»áÂ½Ðø¿ª·Å¸ø¸ü¶àÒµÎñʹÓá£

Áù ×ܽá

ÏûÏ¢Öмä¼þͨ³£·ÖΪ¸ß¿É¿¿°æ±¾ºÍ¸ßÐÔÄܰ汾Á½ÖÖ¡£CMQÊÇÒ»¿î½ðÈÚ¼¶µÄ¸ß¿É¿¿·Ö²¼Ê½ÏûÏ¢Öмä¼þ£¬Í¨¹ýraft±£Ö¤ÁËÏûÏ¢µÄ¿É¿¿²»¶ªÊ§¡£Í¬Ê±ÔÚÐÔÄܺͿÉÓÃÐÔ·½ÃæÏà±È¾ºÆ·¶¼ÓÐÏÔÖøÌá¸ß¡£

RaftË㷨ǿµ÷ÁËLeaderµÄµØÎ»£¬Ñ¡¾ÙºÍÈÕ־ͬ²½¶¼ÊÇÎ§ÈÆLeaderÕ¹¿ª¡£ÓÉLeader¸ºÔð´¦ÀíËùÓÐÇëÇó±£Ö¤ÁËϵͳµÄǿһÖÂÐÔ£»LeaderÑ¡¾ÙºÍÈÕ־ͬ²½Ëã·¨±£Ö¤ÁËÊý¾ÝµÄ¿É¿¿²»¶ªÊ§£»´ËÍâÉÏÊö²½ÖèÖ»ÐèÒª´ó¶àÊýÕý³£»¥Áª¼´¿É£¬´Ó¶ø¼«´óÌá¸ßÁËϵͳµÄ¿ÉÓÃÐÔ£¬ÉÙÁ¿»úÆ÷¹ÊÕϲ»ÊÜÓ°Ïì¡£²»¹ý£¬ËùÓÐÇëÇóÓÉLeader´¦Àí²¢Ã»Óгä·ÖÀûÓôӽڵãµÄ×ÊÔ´£¬Ä¿Ç°googleµÄSpannerÒÑÖ§³Ö´Ó´Ó½Úµã¶ÁÈ¡£¬ºóÐøÎÒÃÇÒ²»áÔÚÕâ·½Ãæ×÷¸ü½øÒ»²½µÄÑо¿¡£RaftËã·¨Ò×ÓÚÀí½âºÍ¹¤³Ì»¯£¬ÏàÐÅδÀ´»áÓ¦ÓÃÔÚÔ½À´Ô½¶àµÄ·Ö²¼Ê½ÏµÍ³ÖС£

 

   
1652 ´Îä¯ÀÀ       29
????

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Æû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ