ÎÊÌâµÄÆðÔ´
ÔÚµçÉ̵ÈÒµÎñÖУ¬ÏµÍ³Ò»°ãÓɶà¸ö¶ÀÁ¢µÄ·þÎñ×é³É£¬ÈçºÎ½â¾ö·Ö²¼Ê½µ÷ÓÃʱºòÊý¾ÝµÄÒ»ÖÂÐÔ£¿
¾ßÌåÒµÎñ³¡¾°ÈçÏ£¬±ÈÈçÒ»¸öÒµÎñ²Ù×÷£¬Èç¹ûͬʱµ÷Ó÷þÎñ A¡¢B¡¢C£¬ÐèÒªÂú×ãҪôͬʱ³É¹¦£»ÒªÃ´Í¬Ê±Ê§°Ü¡£A¡¢B¡¢C
¿ÉÄÜÊǶà¸ö²»Í¬²¿ÃÅ¿ª·¢¡¢²¿ÊðÔÚ²»Í¬·þÎñÆ÷ÉϵÄÔ¶³Ì·þÎñ¡£
ÔÚ·Ö²¼Ê½ÏµÍ³À´Ëµ£¬Èç¹û²»ÏëÎþÉüÒ»ÖÂÐÔ£¬CAP ÀíÂÛ¸æËßÎÒÃÇÖ»ÄÜ·ÅÆú¿ÉÓÃÐÔ£¬ÕâÏÔÈ»²»ÄܽÓÊÜ¡£ÎªÁ˱ãÓÚÌÖÂÛÎÊÌ⣬Ïȼòµ¥½éÉÜÏÂÊý¾ÝÒ»ÖÂÐԵĻù´¡ÀíÂÛ¡£
ǿһÖÂ
µ±¸üвÙ×÷Íê³ÉÖ®ºó£¬Èκζà¸öºóÐø½ø³Ì»òÕßÏ̵߳ķÃÎʶ¼»á·µ»Ø×îеĸüйýµÄÖµ¡£ÕâÖÖÊǶÔÓû§×îÓѺõ쬾ÍÊÇÓû§ÉÏÒ»´Îдʲô£¬ÏÂÒ»´Î¾Í±£Ö¤ÄܶÁµ½Ê²Ã´¡£¸ù¾Ý
CAP ÀíÂÛ£¬ÕâÖÖʵÏÖÐèÒªÎþÉü¿ÉÓÃÐÔ¡£
ÈõÒ»ÖÂÐÔ
ϵͳ²¢²»±£Ö¤Ðø½ø³Ì»òÕßÏ̵߳ķÃÎʶ¼»á·µ»Ø×îеĸüйýµÄÖµ¡£ÏµÍ³ÔÚÊý¾ÝдÈë³É¹¦Ö®ºó£¬²»³ÐŵÁ¢¼´¿ÉÒÔ¶Áµ½×îÐÂдÈëµÄÖµ£¬Ò²²»»á¾ßÌåµÄ³Ðŵ¶à¾ÃÖ®ºó¿ÉÒÔ¶Áµ½¡£
×îÖÕÒ»ÖÂÐÔ
ÈõÒ»ÖÂÐÔµÄÌØ¶¨ÐÎʽ¡£ÏµÍ³±£Ö¤ÔÚûÓкóÐø¸üеÄǰÌáÏ£¬ÏµÍ³×îÖÕ·µ»ØÉÏÒ»´Î¸üвÙ×÷µÄÖµ¡£ÔÚûÓйÊÕÏ·¢ÉúµÄǰÌáÏ£¬²»Ò»Ö´°¿ÚµÄʱ¼äÖ÷ÒªÊÜͨÐÅÑÓ³Ù£¬ÏµÍ³¸ºÔغ͸´ÖƸ±±¾µÄ¸öÊýÓ°Ïì¡£DNS
ÊÇÒ»¸öµäÐ͵Ä×îÖÕÒ»ÖÂÐÔϵͳ¡£
ÔÚ¹¤³Ìʵ¼ùÉÏ£¬ÎªÁ˱£ÕÏϵͳµÄ¿ÉÓÃÐÔ£¬»¥ÁªÍøÏµÍ³´ó¶à½«Ç¿Ò»ÖÂÐÔÐèÇóת»»³É×îÖÕÒ»ÖÂÐÔµÄÐèÇ󣬲¢Í¨¹ýϵͳִÐÐÃݵÈÐԵı£Ö¤£¬±£Ö¤Êý¾ÝµÄ×îÖÕÒ»ÖÂÐÔ¡£µ«ÔÚµçÉ̵ȳ¡¾°ÖУ¬¶ÔÓÚÊý¾ÝÒ»ÖÂÐԵĽâ¾ö·½·¨ºÍ³£¼ûµÄ»¥ÁªÍøÏµÍ³£¨Èç
MySQL Ö÷´Óͬ²½£©ÓÖÓÐÒ»¶¨Çø±ð£¬ÈºÓѵÄÌÖÂÛ·Ö³ÉÒÔÏ 6 ÖÖ½â¾ö·½°¸¡£
1. ¹æ±Ü·Ö²¼Ê½ÊÂÎñ¡ª¡ªÒµÎñÕûºÏ
ÒµÎñÕûºÏ·½°¸Ö÷Òª²ÉÓý«½Ó¿ÚÕûºÏµ½±¾µØÖ´Ðеķ½·¨¡£ÄÃÎÊÌⳡ¾°À´Ëµ£¬Ôò¿ÉÒÔ½«·þÎñ
A¡¢B¡¢C ÕûºÏΪһ¸ö·þÎñ D ¸øÒµÎñ£¬Õâ¸ö·þÎñ D ÔÙͨ¹ýת»»Îª±¾µØÊÂÎñµÄ·½Ê½£¬±ÈÈç·þÎñ D °üº¬±¾µØ·þÎñºÍ·þÎñ
E£¬¶ø·þÎñ E ÊDZ¾µØ·þÎñ A ~ C µÄÕûºÏ¡£
Óŵ㣺½â¾ö£¨¹æ±Ü£©ÁË·Ö²¼Ê½ÊÂÎñ¡£
ȱµã£ºÏÔ¶øÒ×¼û£¬°Ñ±¾À´¹æ»®²ð·ÖºÃµÄÒµÎñ£¬ÓÖñîºÏµ½ÁËÒ»Æð£¬ÒµÎñÖ°Ôð²»ÇåÎú£¬²»ÀûÓÚά»¤¡£
ÓÉÓÚÕâ¸ö·½·¨´æÔÚÃ÷ÏÔȱµã£¬Í¨³£²»½¨ÒéʹÓá£
2. ¾µä·½°¸ - eBay ģʽ
´Ë·½°¸µÄºËÐÄÊǽ«ÐèÒª·Ö²¼Ê½´¦ÀíµÄÈÎÎñͨ¹ýÏûÏ¢ÈÕÖ¾µÄ·½Ê½À´Òì²½Ö´ÐС£ÏûÏ¢ÈÕÖ¾¿ÉÒÔ´æ´¢µ½±¾µØÎı¾¡¢Êý¾Ý¿â»òÏûÏ¢¶ÓÁУ¬ÔÙͨ¹ýÒµÎñ¹æÔò×Ô¶¯»òÈ˹¤·¢ÆðÖØÊÔ¡£È˹¤ÖØÊÔ¸ü¶àµÄÊÇÓ¦ÓÃÓÚÖ§¸¶³¡¾°£¬Í¨¹ý¶ÔÕËϵͳ¶ÔʺóÎÊÌâµÄ´¦Àí¡£
ÏûÏ¢ÈÕÖ¾·½°¸µÄºËÐÄÊDZ£Ö¤·þÎñ½Ó¿ÚµÄÃݵÈÐÔ¡£
¿¼Âǵ½ÍøÂçͨѶʧ°Ü¡¢Êý¾Ý¶ª°üµÈÔÒò£¬Èç¹û½Ó¿Ú²»Äܱ£Ö¤ÃݵÈÐÔ£¬Êý¾ÝµÄΨһÐÔ½«ºÜÄѱ£Ö¤¡£
eBay ·½Ê½µÄÖ÷Ҫ˼·ÈçÏ¡£
Base£ºÒ»ÖÖ Acid µÄÌæ´ú·½°¸
´Ë·½°¸ÊÇ eBay µÄ¼Ü¹¹Ê¦ Dan Pritchett ÔÚ 2008
Äê·¢±í¸ø ACM µÄÎÄÕ£¬ÊÇһƪ½âÊÍ BASE ÔÔò£¬»òÕß˵×îÖÕÒ»ÖÂÐԵľµäÎÄÕ¡£ÎÄÖÐÌÖÂÛÁË BASE
Óë ACID ÔÔòÔÚ±£Ö¤Êý¾ÝÒ»ÖÂÐԵĻù±¾²îÒì¡£
Èç¹û ACID Ϊ·ÖÇøµÄÊý¾Ý¿âÌṩһÖÂÐÔµÄÑ¡Ôñ£¬ÄÇôÈçºÎʵÏÖ¿ÉÓÃÐÔÄØ£¿´ð°¸ÊÇ
BASE (basically available, soft state,
eventually consistent)
BASE µÄ¿ÉÓÃÐÔÊÇͨ¹ýÖ§³Ö¾Ö²¿¹ÊÕ϶ø²»ÊÇϵͳȫ¾Ö¹ÊÕÏÀ´ÊµÏֵġ£ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄÀý×Ó£ºÈç¹û½«Óû§·ÖÇøÔÚ
5 ¸öÊý¾Ý¿â·þÎñÆ÷ÉÏ£¬BASE Éè¼Æ¹ÄÀøÀàËÆµÄ´¦Àí·½Ê½£¬Ò»¸öÓû§Êý¾Ý¿âµÄ¹ÊÕÏÖ»Ó°ÏìÕâÌ¨ÌØ¶¨Ö÷»úÄÇ 20%
µÄÓû§¡£ÕâÀï²»Éæ¼°ÈκÎħ·¨£¬²»¹ýËüȷʵ¿ÉÒÔ´øÀ´¸ü¸ßµÄ¿É¸ÐÖªµÄϵͳ¿ÉÓÃÐÔ¡£
ÎÄÕÂÖÐÃèÊöÁËÒ»¸ö×î³£¼ûµÄ³¡¾°£¬Èç¹û²úÉúÁËÒ»±Ê½»Ò×£¬ÐèÒªÔÚ½»Ò×±íÔö¼Ó¼Ç¼£¬Í¬Ê±»¹ÒªÐÞ¸ÄÓû§±íµÄ½ð¶î¡£ÕâÁ½¸ö±íÊôÓÚ²»Í¬µÄÔ¶³Ì·þÎñ£¬ËùÒÔ¾ÍÉæ¼°µ½·Ö²¼Ê½ÊÂÎñÒ»ÖÂÐÔµÄÎÊÌâ¡£

ÎÄÖÐÌá³öÁËÒ»¸ö¾µäµÄ½â¾ö·½·¨£¬½«Ö÷ÒªÐ޸IJÙ×÷ÒÔ¼°¸üÐÂÓû§±íµÄÏûÏ¢·ÅÔÚÒ»¸ö±¾µØÊÂÎñÀ´Íê³É¡£Í¬Ê±ÎªÁ˱ÜÃâÖØ¸´Ïû·ÑÓû§±íÏûÏ¢´øÀ´µÄÎÊÌ⣬´ïµ½¶à´ÎÖØÊÔµÄÃݵÈÐÔ£¬Ôö¼ÓÒ»¸ö¸üмǼ±í
updates_applied À´¼Ç¼ÒѾ´¦Àí¹ýµÄÏûÏ¢¡£

ϵͳµÄÖ´ÐÐα´úÂëÈçÏÂ

»ùÓÚÒÔÉÏ·½·¨£¬ÔÚµÚÒ»½×¶Î£¬Í¨¹ý±¾µØµÄÊý¾Ý¿âµÄÊÂÎñ±£ÕÏ£¬Ôö¼ÓÁË transaction
±í¼°ÏûÏ¢¶ÓÁÐ ¡£
ÔÚµÚ¶þ½×¶Î£¬·Ö±ð¶Á³öÏûÏ¢¶ÓÁУ¨µ«²»É¾³ý£©£¬Í¨¹ýÅжϸüмǼ±í updates_applied
À´¼ì²âÏà¹Ø¼Ç¼ÊÇ·ñ±»Ö´ÐУ¬Î´±»Ö´ÐеļǼ»áÐÞ¸Ä user ±í£¬È»ºóÔö¼ÓÒ»Ìõ²Ù×÷¼Ç¼µ½ updates_applied£¬ÊÂÎñÖ´Ðгɹ¦Ö®ºóÔÙɾ³ý¶ÓÁС£
ͨ¹ýÒÔÉÏ·½·¨£¬´ïµ½ÁË·Ö²¼Ê½ÏµÍ³µÄ×îÖÕÒ»ÖÂÐÔ¡£½øÒ»²½Á˽â eBay µÄ·½°¸¿ÉÒԲο¼ÎÄÄ©Á´½Ó¡£
3. È¥ÄĶùÍø·Ö²¼Ê½ÊÂÎñ·½°¸
Ëæ×ÅÒµÎñ¹æÄ£²»¶ÏµØÀ©´ó£¬µçÉÌÍøÕ¾Ò»°ã¶¼ÒªÃæÁÙ²ð·Ö֮·¡£¾ÍÊǽ«ÔÀ´Ò»¸öµ¥ÌåÓ¦Óòð·Ö³É¶à¸ö²»Í¬Ö°ÔðµÄ×Óϵͳ¡£±ÈÈçÒÔǰ¿ÉÄܽ«ÃæÏòÓû§¡¢¿Í»§ºÍÔËÓªµÄ¹¦Äܶ¼·ÅÔÚÒ»¸öϵͳÀÏÖÔÚ²ð·ÖΪ¶©µ¥ÖÐÐÄ¡¢´úÀíÉ̹ÜÀí¡¢ÔËӪϵͳ¡¢±¨¼ÛÖÐÐÄ¡¢¿â´æ¹ÜÀíµÈ¶à¸ö×Óϵͳ¡£
²ð·ÖÊ×ÏÈÒªÃæÁÙµÄÊÇÊ²Ã´ÄØ£¿
×ʼµÄµ¥ÌåÓ¦ÓÃËùÓй¦Äܶ¼ÔÚÒ»Æð£¬´æ´¢Ò²ÔÚÒ»Æð¡£±ÈÈçÔËӪҪȡÏûij¸ö¶©µ¥£¬ÄÇÖ±½ÓÈ¥¸üж©µ¥±í״̬£¬È»ºó¸üÐÂ¿â´æ±í¾Í
ok ÁË¡£ÒòΪÊǵ¥ÌåÓ¦Ó㬿âÔÚÒ»Æð£¬ÕâЩ¶¼¿ÉÒÔÔÚÒ»¸öÊÂÎñÀÓɹØÏµÊý¾Ý¿âÀ´±£Ö¤Ò»ÖÂÐÔ¡£
µ«²ð·ÖÖ®ºó¾Í²»Í¬ÁË£¬²»Í¬µÄ×Óϵͳ¶¼ÓÐ×Ô¼ºµÄ´æ´¢¡£±ÈÈç¶©µ¥ÖÐÐľÍÖ»¹ÜÀí×Ô¼ºµÄ¶©µ¥¿â£¬¶ø¿â´æ¹ÜÀíÒ²ÓÐ×Ô¼ºµÄ¿â¡£ÄÇôÔËӪϵͳȡÏû¶©µ¥µÄʱºò¾ÍÊÇͨ¹ý½Ó¿Úµ÷Óõȷ½Ê½À´µ÷Óö©µ¥ÖÐÐÄºÍ¿â´æ¹ÜÀíµÄ·þÎñÁË£¬¶ø²»ÊÇÖ±½ÓÈ¥²Ù×÷¿â¡£Õâ¾ÍÉæ¼°Ò»¸ö¡º·Ö²¼Ê½ÊÂÎñ¡»µÄÎÊÌâ¡£
·Ö²¼Ê½ÊÂÎñÓÐÁ½ÖÖ½â¾ö·½Ê½
1. ÓÅÏÈʹÓÃÒì²½ÏûÏ¢¡£
ÉÏÎÄÒѾ˵¹ý£¬Ê¹ÓÃÒì²½ÏûÏ¢ Consumer ¶ËÐèҪʵÏÖÃݵȡ£
ÃݵÈÓÐÁ½ÖÖ·½Ê½£¬Ò»ÖÖ·½Ê½ÊÇÒµÎñÂß¼±£Ö¤Ãݵȡ£±ÈÈç½Óµ½Ö§¸¶³É¹¦µÄÏûÏ¢¶©µ¥×´Ì¬±ä³ÉÖ§¸¶Íê³É£¬Èç¹ûµ±Ç°×´Ì¬ÊÇÖ§¸¶Íê³É£¬ÔòÔÙÊÕµ½Ò»¸öÖ§¸¶³É¹¦µÄÏûÏ¢Ôò˵Ã÷ÏûÏ¢ÖØ¸´ÁË£¬Ö±½Ó×÷ΪÏûÏ¢³É¹¦´¦Àí¡£
ÁíÍâÒ»ÖÖ·½Ê½Èç¹ûÒµÎñÂß¼ÎÞ·¨±£Ö¤Ãݵȣ¬ÔòÒªÔö¼ÓÒ»¸öÈ¥ÖØ±í»òÕßÀàËÆµÄʵÏÖ¡£¶ÔÓÚ
producer ¶ËÔÚÒµÎñÊý¾Ý¿âµÄͬʵÀýÉÏ·ÅÒ»¸öÏûÏ¢¿â£¬·¢ÏûÏ¢ºÍÒµÎñ²Ù×÷ÔÚͬһ¸ö±¾µØÊÂÎñÀï¡£·¢ÏûÏ¢µÄʱºòÏûÏ¢²¢²»Á¢¼´·¢³ö£¬¶øÊÇÏòÏûÏ¢¿â²åÈëÒ»ÌõÏûÏ¢¼Ç¼£¬È»ºóÔÚÊÂÎñÌá½»µÄʱºòÔÙÒì²½½«ÏûÏ¢·¢³ö£¬·¢ËÍÏûÏ¢Èç¹û³É¹¦Ôò½«ÏûÏ¢¿âÀïµÄÏûϢɾ³ý£¬Èç¹ûÓöµ½ÏûÏ¢¶ÓÁзþÎñÒì³£»òÍøÂçÎÊÌ⣬ÏûϢûÓгɹ¦·¢³öÄÇôÏûÏ¢¾ÍÁôÔÚÕâÀïÁË£¬»áÓÐÁíÍâÒ»¸ö·þÎñ²»¶ÏµØ½«ÕâЩÏûϢɨ³öÖØÐ·¢ËÍ¡£
2. ÓеÄÒµÎñ²»ÊʺÏÒì²½ÏûÏ¢µÄ·½Ê½£¬ÊÂÎñµÄ¸÷¸ö²ÎÓë·½¶¼ÐèҪͬ²½µÄµÃµ½½á¹û¡£ÕâÖÖÇé¿öµÄʵÏÖ·½Ê½ÆäʵºÍÉÏÃæÀàËÆ£¬Ã¿¸ö²ÎÓë·½µÄ±¾µØÒµÎñ¿âµÄͬʵÀýÉÏÃæ·ÅÒ»¸öÊÂÎñ¼Ç¼¿â¡£
±ÈÈç A ͬ²½µ÷Óà B£¬C¡£A ±¾µØÊÂÎñ³É¹¦µÄʱºò¸üб¾µØÊÂÎñ¼Ç¼״̬£¬B
ºÍ C ͬÑù¡£Èç¹ûÓÐÒ»´Î A µ÷Óà B ʧ°ÜÁË£¬Õâ¸öʧ°Ü¿ÉÄÜÊÇ B ÕæµÄʧ°ÜÁË£¬Ò²¿ÉÄÜÊǵ÷Óó¬Ê±£¬Êµ¼Ê
B ³É¹¦¡£ÔòÓÉÒ»¸öÖÐÐÄ·þÎñ¶Ô±ÈÈý·½µÄÊÂÎñ¼Ç¼±í£¬×öÒ»¸ö×îÖÕ¾ö¶¨¡£¼ÙÉèÏÖÔÚÈý·½µÄÊÂÎñ¼Ç¼ÊÇ A ³É¹¦£¬B
ʧ°Ü£¬C ³É¹¦¡£ÄÇô×îÖÕ¾ö¶¨ÓÐÁ½ÖÖ·½Ê½£¬¸ù¾Ý¾ßÌ峡¾°£º
ÖØÊÔ B£¬Ö±µ½ B ³É¹¦£¬ÊÂÎñ¼Ç¼±íÀï¼Ç¼Á˸÷Ïîµ÷ÓòÎÊýµÈÐÅÏ¢£»
Ö´ÐÐ A ºÍ B µÄ²¹³¥²Ù×÷(Ò»ÖÖ¿ÉÐеIJ¹³¥·½Ê½Êǻعö)¡£
¶Ô b ³¡¾°×öÒ»¸öÌØÊâ˵Ã÷£º±ÈÈç B ÊÇ¿Û¿â´æ·þÎñ£¬ÔÚµÚÒ»´Îµ÷ÓõÄʱºòÒòΪijÖÖÔÒòʧ°ÜÁË£¬µ«ÊÇÖØÊÔµÄʱºò¿â´æÒѾ±äΪ
0£¬ÎÞ·¨ÖØÊԳɹ¦£¬Õâ¸öʱºòÖ»Óлعö A ºÍ C ÁË¡£
ÄÇô¿ÉÄÜÓÐÈ˾õµÃÔÚÒµÎñ¿âµÄͬʵÀýÀï·ÅÏûÏ¢¿â»òÊÂÎñ¼Ç¼¿â£¬»á¶ÔÒµÎñÇÖÈ룬ҵÎñ»¹Òª¹ØÐÄÕâ¸ö¿â£¬ÊÇ·ñÒ»¸öºÏÀíµÄÉè¼Æ£¿
ʵ¼ÊÉÏ¿ÉÒÔÒÀ¿¿ÔËάµÄÊÖ¶ÎÀ´¼ò»¯¿ª·¢µÄÇÖÈ룬ÎÒÃǵķ½·¨ÊÇÈà DBA ÔÚ¹«Ë¾ËùÓÐ
MySQL ʵÀýÉÏÔ¤³õʼ»¯Õâ¸ö¿â£¬Í¨¹ý¿ò¼Ü²ã£¨ÏûÏ¢µÄ¿Í»§¶Ë»òÊÂÎñ RPC ¿ò¼Ü£©Í¸Ã÷µÄÔÚ±³ºó²Ù×÷Õâ¸ö¿â£¬ÒµÎñ¿ª·¢ÈËÔ±Ö»ÐèÒª¹ØÐÄ×Ô¼ºµÄÒµÎñÂß¼£¬²»ÐèÒªÖ±½Ó·ÃÎÊÕâ¸ö¿â¡£
×ܽáÆðÀ´£¬ÆäʵÁ½ÖÖ·½Ê½µÄ¸ù±¾ÔÀíÊÇÀàËÆµÄ£¬Ò²¾ÍÊǽ«·Ö²¼Ê½ÊÂÎñת»»Îª¶à¸ö±¾µØÊÂÎñ£¬È»ºóÒÀ¿¿ÖØÊԵȷ½Ê½´ïµ½×îÖÕÒ»ÖÂÐÔ¡£
4. Ä¢¹½½Ö½»Ò×´´½¨¹ý³ÌÖеķֲ¼Ê½Ò»ÖÂÐÔ·½°¸
½»Ò×´´½¨µÄÒ»°ãÐÔÁ÷³Ì
ÎÒÃǰѽ»Ò×´´½¨Á÷³Ì³éÏó³öһϵÁпÉÀ©Õ¹µÄ¹¦Äܵ㣬ÿ¸ö¹¦Äܵ㶼¿ÉÒÔÓжà¸öʵÏÖ£¨¾ßÌåµÄʵÏÖÖ®¼äÓÐ×éºÏ/»¥³â¹ØÏµ£©¡£°Ñ¸÷¸ö¹¦Äܵ㰴ÕÕÒ»¶¨Á÷³Ì´®ÆðÀ´£¬¾ÍÍê³ÉÁ˽»Ò×´´½¨µÄ¹ý³Ì¡£
ÃæÁÙµÄÎÊÌâ
ÿ¸ö¹¦ÄܵãµÄʵÏÖ¶¼¿ÉÄÜ»áÒÀÀµÍⲿ·þÎñ¡£ÄÇôÈçºÎ±£Ö¤¸÷¸ö·þÎñÖ®¼äµÄÊý¾ÝÊÇÒ»ÖµÄÄØ£¿±ÈÈçËø¶¨ÓÅ»Ýȯ·þÎñµ÷Óó¬Ê±ÁË£¬²»ÄÜÈ·¶¨µ½µ×ÓÐûÓÐËøÈ¯³É¹¦£¬¸ÃÈçºÎ´¦Àí£¿ÔÙ±ÈÈçËøÈ¯³É¹¦ÁË£¬µ«Êǿۼõ¿â´æÊ§°ÜÁË£¬¸ÃÈçºÎ´¦Àí£¿
·½°¸Ñ¡ÐÍ
·þÎñÒÀÀµ¹ý¶à£¬»á´øÀ´¹ÜÀí¸´ÔÓÐÔÔö¼ÓºÍÎȶ¨ÐÔ·çÏÕÔö´óµÄÎÊÌâ¡£ÊÔÏëÈç¹ûÎÒÃÇÇ¿ÒÀÀµ
10 ¸ö·þÎñ£¬9 ¸ö¶¼Ö´Ðгɹ¦ÁË£¬×îºóÒ»¸öÖ´ÐÐʧ°ÜÁË£¬ÄÇôÊDz»ÊÇÇ°Ãæ 9 ¸ö¶¼Òª»Ø¹öµô£¿Õâ¸ö³É±¾»¹ÊǷdz£¸ßµÄ¡£
ËùÒÔÔÚ²ð·Ö´óµÄÁ÷³ÌΪ¶à¸öСµÄ±¾µØÊÂÎñµÄǰÌáÏ£¬¶ÔÓÚ·Çʵʱ¡¢·ÇǿһÖÂÐԵĹØÁªÒµÎñдÈ룬ÔÚ±¾µØÊÂÎñÖ´Ðгɹ¦ºó£¬ÎÒÃÇÑ¡Ôñ·¢ÏûϢ֪ͨ¡¢¹ØÁªÊÂÎñÒì²½»¯Ö´Ðеķ½°¸¡£
ÏûϢ֪ͨÍùÍù²»Äܱ£Ö¤ 100% ³É¹¦£»ÇÒÏûϢ֪ͨºó£¬½ÓÊÕ·½ÒµÎñÊÇ·ñÄÜÖ´Ðгɹ¦»¹ÊÇδ֪Êý¡£Ç°ÕßÎÊÌâ¿ÉÒÔͨ¹ýÖØÊÔ½â¾ö£»ºóÕß¿ÉÒÔÑ¡ÓÃÊÂÎñÏûÏ¢À´±£Ö¤¡£
µ«ÊÇÊÂÎñÏûÏ¢¿ò¼Ü±¾Éí»á¸øÒµÎñ´úÂë´øÀ´ÇÖÈëÐԺ͸´ÔÓÐÔ£¬ËùÒÔÎÒÃÇÑ¡Ôñ»ùÓÚ DB
ʼþ±ä»¯Í¨Öªµ½ MQ µÄ·½Ê½×öϵͳ¼ä½âñͨ¹ý¶©ÔÄ·½Ïû·Ñ MQ ÏûϢʱµÄ ACK »úÖÆ£¬±£Ö¤ÏûÏ¢Ò»¶¨Ïû·Ñ³É¹¦£¬´ïµ½×îÖÕÒ»ÖÂÐÔ¡£ÓÉÓÚÏûÏ¢¿ÉÄÜ»á±»ÖØ·¢£¬ÏûÏ¢¶©ÔÄ·½ÒµÎñÂß¼´¦ÀíÒª×öºÃÃݵȱ£Ö¤¡£
ËùÒÔĿǰֻʣÏÂÐèҪʵʱͬ²½×ö¡¢ÓÐǿһÖÂÐÔÒªÇóµÄÒµÎñ³¡¾°ÁË¡£ÔÚ½»Ò×´´½¨¹ý³ÌÖУ¬ËøÈ¯ºÍ¿Û¼õ¿â´æÊÇÕâÑùµÄÁ½¸öµäÐͳ¡¾°¡£
Òª±£Ö¤¶à¸öϵͳ¼äÊý¾ÝÒ»Ö£¬Õ§Ò»¿´£¬±ØÐëÒªÒýÈë·Ö²¼Ê½ÊÂÎñ¿ò¼Ü²ÅÄܽâ¾ö¡£µ«ÒýÈë·Ç³£ÖصÄÀàËÆ¶þ½×¶ÎÌá½»·Ö²¼Ê½ÊÂÎñ¿ò¼Ü»á´øÀ´¸´ÔÓÐԵļ±¾çÉÏÉý£»ÔÚµçÉÌÁìÓò£¬¾ø¶ÔµÄǿһÖÂÊǹýÓÚÀíÏ뻯µÄ£¬ÎÒÃÇ¿ÉÒÔÑ¡Ôñ׼ʵʱµÄ×îÖÕÒ»ÖÂÐÔ¡£

ÎÒÃÇÔÚ½»Ò×´´½¨Á÷³ÌÖУ¬Ê×ÏÈ´´½¨Ò»¸ö²»¿É¼û¶©µ¥£¬È»ºóÔÚͬ²½µ÷ÓÃËøÈ¯ºÍ¿Û¼õ¿â´æÊ±£¬Õë¶Ôµ÷ÓÃÒì³££¨Ê§°Ü»òÕß³¬Ê±£©£¬·¢³ö·Ïµ¥ÏûÏ¢µ½MQ¡£Èç¹ûÏûÏ¢·¢ËÍʧ°Ü£¬±¾µØ»á×öʱ¼ä½×ÌÝʽµÄÒì²½ÖØÊÔ£»ÓÅ»ÝȯϵͳºÍ¿â´æÏµÍ³ÊÕµ½ÏûÏ¢ºó£¬»á½øÐÐÅжÏÊÇ·ñÐèÒª×öÒµÎñ»Ø¹ö£¬ÕâÑù¾Í׼ʵʱµØ±£Ö¤Á˶à¸ö±¾µØÊÂÎñµÄ×îÖÕÒ»ÖÂÐÔ¡£
5. Ö§¸¶±¦¼°ÂìÒϽðÈÚÔÆµÄ·Ö²¼Ê½·þÎñ DTS ·½°¸
Òµ½ç³£ÓõϹÓÐÖ§¸¶±¦µÄÒ»ÖÖ xts ·½°¸£¬ÓÉÖ§¸¶±¦ÔÚ 2PC µÄ»ù´¡ÉϸĽø¶øÀ´¡£Ö÷Ҫ˼·ÈçÏ£¬´ó²¿·ÖÐÅÏ¢ÒýÓÃ×Ô¹Ù·½ÍøÕ¾¡£
·Ö²¼Ê½ÊÂÎñ·þÎñ¼ò½é
·Ö²¼Ê½ÊÂÎñ·þÎñ (Distributed Transaction Service,
DTS) ÊÇÒ»¸ö·Ö²¼Ê½ÊÂÎñ¿ò¼Ü£¬ÓÃÀ´±£ÕÏÔÚ´ó¹æÄ£·Ö²¼Ê½»·¾³ÏÂÊÂÎñµÄ×îÖÕÒ»ÖÂÐÔ¡£DTS ´Ó¼Ü¹¹ÉÏ·ÖΪ xts-client
ºÍ xts-server Á½²¿·Ö£¬Ç°ÕßÊÇÒ»¸öǶÈë¿Í»§¶ËÓ¦ÓÃµÄ JAR °ü£¬Ö÷Òª¸ºÔðÊÂÎñÊý¾ÝµÄдÈëºÍ´¦Àí£»ºóÕßÊÇÒ»¸ö¶ÀÁ¢µÄϵͳ£¬Ö÷Òª¸ºÔðÒì³£ÊÂÎñµÄ»Ö¸´¡£
ºËÐÄÌØÐÔ
´«Í³¹ØÏµÐÍÊý¾Ý¿âµÄÊÂÎñÄ£ÐͱØÐë×ñÊØ ACID ÔÔò¡£ÔÚµ¥Êý¾Ý¿âģʽÏ£¬ACID
Ä£ÐÍÄÜÓÐЧ±£ÕÏÊý¾ÝµÄÍêÕûÐÔ£¬µ«ÊÇÔÚ´ó¹æÄ£·Ö²¼Ê½»·¾³Ï£¬Ò»¸öÒµÎñÍùÍù»á¿çÔ½¶à¸öÊý¾Ý¿â£¬ÈçºÎ±£Ö¤Õâ¶à¸öÊý¾Ý¿âÖ®¼äµÄÊý¾ÝÒ»ÖÂÐÔ£¬ÐèÒªÆäËûÐÐÖ®ÓÐЧµÄ²ßÂÔ¡£ÔÚ
JavaEE ¹æ·¶ÖÐʹÓà 2PC (2 Phase Commit, Á½½×¶ÎÌá½») À´´¦Àí¿ç DB »·¾³ÏµÄÊÂÎñÎÊÌ⣬µ«ÊÇ
2PC ÊÇ·´¿ÉÉìËõģʽ£¬Ò²¾ÍÊÇ˵£¬ÔÚÊÂÎñ´¦Àí¹ý³ÌÖУ¬²ÎÓëÕßÐèÒªÒ»Ö±³ÖÓÐ×ÊÔ´Ö±µ½Õû¸ö·Ö²¼Ê½ÊÂÎñ½áÊø¡£ÕâÑù£¬µ±ÒµÎñ¹æÄ£´ïµ½Ç§Íò¼¶ÒÔÉÏʱ£¬2PC
µÄ¾ÖÏÞÐÔ¾ÍÔ½À´Ô½Ã÷ÏÔ£¬ÏµÍ³¿ÉÉìËõÐÔ»á±äµÃºÜ²î¡£»ùÓÚ´Ë£¬ÎÒÃDzÉÓà BASE µÄ˼ÏëʵÏÖÁËÒ»Ì×ÀàËÆ 2PC
µÄ·Ö²¼Ê½ÊÂÎñ·½°¸£¬Õâ¾ÍÊÇ DTS¡£DTSÔÚ³ä·Ö±£ÕÏ·Ö²¼Ê½»·¾³Ï¸߿ÉÓÃÐÔ¡¢¸ß¿É¿¿ÐÔµÄͬʱ¼æ¹ËÊý¾ÝÒ»ÖÂÐÔµÄÒªÇ󣬯ä×î´óµÄÌØµãÊDZ£Ö¤Êý¾Ý×îÖÕÒ»ÖÂ
(Eventually consistent)¡£
¼òµ¥µÄ˵£¬DTS ¿ò¼ÜÓÐÈçÏÂÌØÐÔ£º
×îÖÕÒ»Ö£ºÊÂÎñ´¦Àí¹ý³ÌÖУ¬»áÓжÌÔݲ»Ò»ÖµÄÇé¿ö£¬µ«Í¨¹ý»Ö¸´ÏµÍ³£¬¿ÉÒÔÈÃÊÂÎñµÄÊý¾Ý´ïµ½×îÖÕÒ»ÖµÄÄ¿±ê¡£
ÐÒé¼òµ¥£ºDTS ¶¨ÒåÁËÀàËÆ 2PC µÄ±ê×¼Á½½×¶Î½Ó¿Ú£¬ÒµÎñϵͳֻÐèҪʵÏÖ¶ÔÓ¦µÄ½Ó¿Ú¾Í¿ÉÒÔʹÓÃ
DTS µÄÊÂÎñ¹¦ÄÜ¡£
Óë RPC ·þÎñÐÒéÎ޹أºÔÚ SOA ¼Ü¹¹Ï£¬Ò»¸ö»ò¶à¸ö DB ²Ù×÷ÍùÍù±»°ü×°³ÉÒ»¸öÒ»¸öµÄ
Service£¬Service Óë Service Ö®¼äͨ¹ý RPC ÐÒéͨÐÅ¡£DTS ¿ò¼Ü¹¹½¨ÔÚ SOA
¼Ü¹¹ÉÏ£¬Óëµ×²ãÐÒéÎ޹ء£
Óëµ×²ãÊÂÎñʵÏÖÎ޹أº DTS ÊÇÒ»¸ö³éÏóµÄ»ùÓÚ Service ²ãµÄ¸ÅÄÓëµ×²ãÊÂÎñʵÏÖÎ޹أ¬Ò²¾ÍÊÇ˵ÔÚ
DTS µÄ·¶Î§ÄÚ£¬ÎÞÂÛÊǹØÏµÐÍÊý¾Ý¿â MySQL£¬Oracle£¬»¹ÊÇ KV ´æ´¢ MemCache£¬»òÕßÁдæÊý¾Ý¿â
HBase£¬Ö»Òª½«¶ÔÆäµÄ²Ù×÷°ü×°³É DTS µÄ²ÎÓëÕߣ¬¾Í¿ÉÒÔ½ÓÈëµ½ DTS ÊÂÎñ·¶Î§ÄÚ¡£
ÒÔÏÂÊÇ·Ö²¼Ê½ÊÂÎñ¿ò¼ÜµÄÁ÷³Ìͼ

ʵÏÖ
1.Ò»¸öÍêÕûµÄÒµÎñ»î¶¯ÓÉÒ»¸öÖ÷ÒµÎñ·þÎñÓëÈô¸É´ÓÒµÎñ·þÎñ×é³É¡£
2.Ö÷ÒµÎñ·þÎñ¸ºÔð·¢Æð²¢Íê³ÉÕû¸öÒµÎñ»î¶¯¡£
3.´ÓÒµÎñ·þÎñÌṩ TCC ÐÍÒµÎñ²Ù×÷¡£
ÒµÎñ»î¶¯¹ÜÀíÆ÷¿ØÖÆÒµÎñ»î¶¯µÄÒ»ÖÂÐÔ£¬ËüµÇ¼ÇÒµÎñ»î¶¯ÖеIJÙ×÷£¬²¢ÔڻÌύʱȷÈÏËùÓеÄÁ½½×¶ÎÊÂÎñµÄ
confirm ²Ù×÷£¬ÔÚÒµÎñ»î¶¯È¡Ïûʱµ÷ÓÃËùÓÐÁ½½×¶ÎÊÂÎñµÄ cancel ²Ù×÷¡£¡±
Óë 2PC ÐÒé±È½Ï
ûÓе¥¶ÀµÄ Prepare ½×¶Î£¬½µµÍÐÒé³É±¾
ϵͳ¹ÊÕÏÈÝÈ̶ȸߣ¬»Ö¸´¼òµ¥
6. Å©ÐÅÍøÊý¾ÝÒ»ÖÂÐÔ·½°¸
1. µçÉÌÒµÎñ
¹«Ë¾µÄÖ§¸¶²¿ÃÅ£¬Í¨¹ý½ÓÈëÆäËüµÚÈý·½Ö§¸¶ÏµÍ³À´Ìṩ֧¸¶·þÎñ¸øÒµÎñ²¿ÃÅ£¬Ö§¸¶·þÎñÊÇÒ»¸ö»ùÓÚ
Dubbo µÄ RPC ·þÎñ¡£
¶ÔÓÚÒµÎñ²¿ÃÅÀ´Ëµ£¬µçÉ̲¿ÃŵĶ©µ¥Ö§¸¶£¬ÐèÒªµ÷ÓÃ
1.Ö§¸¶Æ½Ì¨µÄÖ§¸¶½Ó¿ÚÀ´´¦Àí¶©µ¥£»
2.ͬʱÐèÒªµ÷Óûý·ÖÖÐÐĵĽӿڣ¬°´ÕÕÒµÎñ¹æÔò£¬¸øÓû§Ôö¼Ó»ý·Ö¡£
´ÓÒµÎñ¹æÔòÉÏÐèҪͬʱ±£Ö¤ÒµÎñÊý¾ÝµÄʵʱÐÔºÍÒ»ÖÂÐÔ£¬Ò²¾ÍÊÇÖ§¸¶³É¹¦±ØÐë¼Ó»ý·Ö¡£
ÎÒÃDzÉÓõķ½Ê½ÊÇͬ²½µ÷Óã¬Ê×ÏÈ´¦Àí±¾µØÊÂÎñÒµÎñ¡£¿¼Âǵ½»ý·ÖÒµÎñ±È½Ïµ¥Ò»ÇÒÒµÎñÓ°ÏìµÍÓÚÖ§¸¶£¬ÓÉ»ý·Öƽ̨ÌṩÔö¼ÓÓë»Ø³·½Ó¿Ú¡£
¾ßÌåµÄÁ÷³ÌÊÇÏȵ÷Óûý·Öƽ̨Ôö¼ÓÓû§»ý·Ö£¬ÔÙµ÷ÓÃÖ§¸¶Æ½Ì¨½øÐÐÖ§¸¶´¦Àí£¬Èç¹û´¦Àíʧ°Ü£¬catch
·½·¨µ÷Óûý·Öƽ̨µÄ»Ø³··½·¨£¬½«±¾´Î´¦ÀíµÄ»ý·Ö¶©µ¥»Ø³·¡£

2. Óû§ÐÅÏ¢±ä¸ü
¹«Ë¾µÄÓû§ÐÅÏ¢£¬Í³Ò»ÓÉÓû§ÖÐÐÄά»¤£¬¶øÓû§ÐÅÏ¢µÄ±ä¸üÐèҪͬ²½¸ø¸÷ÒµÎñ×Óϵͳ£¬ÒµÎñ×ÓϵͳÔÙ¸ù¾Ý±ä¸üÄÚÈÝ£¬´¦Àí¸÷×ÔÒµÎñ¡£Óû§ÖÐÐÄ×÷Ϊ
MQ µÄ producer£¬Ìí¼Ó֪ͨ¸ø MQ¡£APP Server ¶©ÔĸÃÏûÏ¢£¬Í¬²½±¾µØÊý¾ÝÐÅÏ¢£¬ÔÙ´¦ÀíÏà¹ØÒµÎñ±ÈÈç
APP Í˳öÏÂÏߵȡ£
ÎÒÃDzÉÓÃÒì²½ÏûϢ֪ͨ»úÖÆ£¬Ä¿Ç°Ö÷ҪʹÓà ActiveMQ£¬»ùÓÚ Virtual
Topic µÄ¶©ÔÄ·½Ê½£¬±£Ö¤µ¥¸öÒµÎñ¼¯Èº¶©Ôĵĵ¥´ÎÏû·Ñ¡£

×ܽá
·Ö²¼Ê½·þÎñ¶ÔÑÜÉúµÄÅäÌ×ϵͳҪÇó±È½Ï¶à£¬ÌرðÊÇÎÒÃÇ»ùÓÚÏûÏ¢¡¢ÈÕÖ¾µÄ×îÖÕÒ»ÖÂÐÔ·½°¸£¬ÐèÒª¿¼ÂÇÏûÏ¢µÄ»ýѹ¡¢Ïû·ÑÇé¿ö¡¢¼à¿Ø¡¢±¨¾¯µÈ¡£
|