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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
΢·þÎñ¼Ü¹¹Ö®Ê¼þÇý¶¯¼Ü¹¹
 
À´Ô´£ºcsdn ·¢²¼ÓÚ£º 2017-7-7
  5762  次浏览      27
 

ǰÑÔ

ΪÁ˽â¾ö´«Í³µÄµ¥ÌåÓ¦Óã¨Monolithic Application£©ÔÚ¿ÉÀ©Õ¹ÐÔ¡¢¿É¿¿ÐÔ¡¢ÊÊÓ¦ÐÔ¡¢¸ß²¿Êð³É±¾µÈ·½ÃæµÄÎÊÌ⣬Ðí¶à¹«Ë¾£¨±ÈÈçAmazon¡¢eBayºÍNetFlixµÈ£©¿ªÊ¼Ê¹ÓÃ΢·þÎñ¼Ü¹¹£¨Microservice Architecture£©¹¹½¨×Ô¼ºµÄÓ¦Óá£

΢·þÎñ¼Ü¹¹£¨Î¬»ù°Ù¿Æ£©£º

΢·þÎñ (Microservices) ÊÇÒ»ÖÖÈí¼þ¼Ü¹¹·ç¸ñ (Software Architecture Style)£¬ËüÊÇÒÔרעÓÚµ¥Ò»ÔðÈÎÓ빦ÄܵÄСÐ͹¦ÄÜÇø¿é (Small Building Blocks) Ϊ»ù´¡£¬ÀûÓÃÄ£×黯µÄ·½Ê½×éºÏ³ö¸´ÔӵĴóÐÍÓ¦ÓóÌÐò£¬¸÷¹¦ÄÜÇø¿éʹÓÃÓëÓïÑÔÎÞ¹Ø (Language-Independent/Language agnostic) µÄ API ¼¯Ï໥ͨѶ¡£

µ«ÊÇ£¬Î¢·þÎñ¼Ü¹¹ÔÚ´øÀ´Ò»ÏµÁкô¦µÄͬʱ£¬Ò²´øÀ´ÁËÈô¸ÉÌôÕ½¡£³ýÁË·Ö²¼Ê½ÏµÍ³¹ÌÓеĸ´ÔÓÐÔÒÔÍ⣬΢·þÎñ¼Ü¹¹Ò²Éî¿ÌÓ°ÏìÁËÓ¦ÓúÍÊý¾Ý¿âÖ®¼äµÄ¹ØÏµ£¬Ó봫ͳ¶à¸ö·þÎñ¹²ÏíÒ»¸öÊý¾Ý¿âµÄ·½Ê½²»Í¬£¬Î¢·þÎñ¼Ü¹¹Ã¿¸ö·þÎñ¶¼ÓÐ×Ô¼ºµÄÊý¾Ý¿â¡£¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬Õâ¾ÍΪ΢·þÎñÖеÄÊý¾Ý¹ÜÀíÌá³öÁ˸ü¸ßµÄÒªÇó¡£

΢·þÎñ¼Ü¹¹ÖеÄÊý¾Ý¹ÜÀí

ÔÚ´«Í³µÄµ¥ÌåÓ¦ÓÃÖУ¬Í¨³£Ê¹Óõ¥¸öµÄ¹ØÏµÐÍÊý¾Ý¿â¡£ÕâÀàÊý¾Ý¿âËùÌṩµÄÊÂÎñÓïÒ壬¾ß±¸ACIDÌØÐÔ¡£

ACID£º

- Atomicity£¨Ô­×ÓÐÔ£©£ºÒ»¸öÊÂÎñÖеIJÙ×÷ÊÇÔ­×ӵ쬯äÖÐÈκÎÒ»²½Ê§°Ü£¬ÏµÍ³¶¼Äܹ»ÍêÈ«»Øµ½ÊÂÎñǰµÄ״̬

- Consistency£¨Ò»ÖÂÐÔ£©£ºÊý¾Ý¿âµÄ״̬ʼÖÕ±£³ÖÒ»ÖÂ

- Isolation£¨¸ôÀëÐÔ£©£º¶à¸ö²¢·¢Ö´ÐеÄÊÂÎñ²»»á»¥ÏàÓ°Ïì

- Durability£¨³Ö¾ÃÐÔ£©£ºÊÂÎñ´¦Àí½áÊøºó£¬¶ÔÊý¾ÝµÄÐÞ¸ÄÊÇÓÀ¾ÃµÄ

Ó¦ÓõÃÒæÓÚÊý¾Ý¿âµÄÕâÐ©ÌØÐÔ£¬Äܹ»Óüòµ¥µÄ·½Ê½¶ÔÊý¾Ý½øÐÐÐÞ¸ÄÓë¶ÁÈ¡£¬¶øÎÞÐ軨·ÑÌ«¶à¾«Á¦¿¼ÂÇÊý¾ÝÒ»ÖÂÐÔÎÊÌâ¡£

µ«ÊÇ£¬ÔÚ΢·þÎñ¼Ü¹¹Ï£¬ÎªÁËÔÚ΢·þÎñÖ®¼ä½¨Á¢ËÉñîºÏµÄ¹ØÏµ£¬Í¨³£Ã¿Ò»¸ö΢·þÎñ¶¼»áÓµÓÐ×Ô¼º¶ÀÁ¢µÄÊý¾Ý¿â£¬½ö½öͨ¹ý¶ÔÍⱩ¶µÄAPIÀ´½øÐÐÊý¾Ý½»»»¡£ÕâÖÖÇé¿öÏ£¬ÎÒÃǾÍÒªÃæÁÙ·Ö²¼Ê½Êý¾Ý¹ÜÀí´øÀ´µÄÌôÕ½¡£Ò²¾ÍÊÇ˵£¬ÔÚʵÏÖÒµÎñÂß¼­Ê±£¬ÈçºÎ±£Ö¤·þÎñÖ®¼äµÄÊý¾ÝÒ»ÖÂÐÔ¡£

ʵʱһÖÂÐÔ

ÎÒÃÇÊ×ÏÈ¿¼ÂÇÔÚϵͳÖÐʵÏÖʵʱһÖÂÐÔµÄÇé¿ö¡£±ÈÈçÒÔÒ»¸öÒøÐÐϵͳΪÀý£¬¿Í»§Í¨³£»áÓÐÒ»¸ö´¢ÐîÕË»§ºÍÒ»¸öÀí²ÆÕË»§¡£ÏÖÔÚ£¬¿¼Âǿͻ§´Ó×Ô¼ºµÄ´¢ÐîÕË»§ÏòÀí²ÆÕË»§×ªÕË10000ÔªµÄ³¡¾°¡£

¼ÙÉèÏÖÔÚÓÐÁ½Õűí deposit_account ºÍ finance_account£¬·Ö±ðÓÃÓÚ´æ´¢´¢ÐîÕË»§ºÍÀí²ÆÕË»§µÄÐÅÏ¢£¬Óû§µÄIDÊÇ201¡£ÄÇô£¬ÔÚµ¥Ò»Êý¾Ý¿â³¡¾°Ï£¬Í¨¹ýÊý¾Ý¿âÊÂÎñ¿ÉÒÔºÜÈÝÒ×Íê³ÉÕâ¸ö²Ù×÷£º

Begin transaction
update deposit_account_table set amount=amount-10000 where userId=201;
update finance_account amount=amount+10000 where userId=1;
End transaction
commit;

ÕâÑùÔÚµ¥ÌåÓ¦ÓÃÖУ¬ÓÉÓÚËùÓÐÊý¾Ý¶¼ÊDZ£´æÔÚͬһ¸öÊý¾Ý¿âÖУ¬Í¨¹ýÊý¾Ý¿âÌṩµÄACIDÌØÐÔ£¬¾Í¿ÉÒÔÇáËÉʵÏÖÊý¾ÝµÄʵʱһÖÂÐÔ¡£

µ«ÊÇ£¬ÔÚ΢·þÎñ¼Ü¹¹ÖУ¬¿ÉÄܵÄÉè¼ÆÊÇ´æÔÚÁ½¸ö·þÎñ£º´¢Ðî·þÎñ£¨Deposit Service£©ºÍÀí²Æ·þÎñ£¨Finance Service£©£¬¼ÙÉèÓÉ´¢Ðî·þÎñ¸ºÔð´¦Àí¿Í»§µÄתÕËÇëÇó¡£¶øÈçÏÂͼËùʾ£¬ÕâÁ½¸ö·þÎñ¶¼·Ö±ðά»¤×Ô¼ºµÄÊý¾Ý£¬Òò´Ë´¢Ðî·þÎñÎÞ·¨Ö±½Ó·ÃÎÊÀí²Æ·þÎñµÄÊý¾Ý£¬¶øÖ»ÄÜͨ¹ýAPIÈ¥Ð޸Ŀͻ§µÄÓà¶î¡£

´Ëʱ£¬ÎªÁËÂú×ã¶©µ¥·þÎñÓë¿Í»§·þÎñÖ®¼äµÄʵʱһÖÂÐÔÒªÇ󣬿ÉÒÔ²ÉÓ÷ֲ¼Ê½ÊÂÎñ£¬±ÈÈç»ùÓÚÁ½½×¶ÎÌύЭÒé(Two-phase commit, 2PC£©µÄʵÏÖÀ´×öµ½ÕâÒ»µã¡££¨¹ØÓÚ2PC£¬ÒѾ­ÓдóÁ¿µÄÑо¿³É¹ûºÍ³É¹¦Êµ¼ù¾­Ñ飬±¾ÎĽ«²»ÔÙ×öÌ«¶à²ûÊö£¬¾ßÌå¿É×ÔÐвμûÏà¹ØÎÄÏ׺Í×ÊÁÏ£©

¸ù¾ÝCAP¶¨Àí£¬ÎÒÃÇ×·ÇóʵʱһÖÂÐÔʱ£¬Í¨³£ÐèÒªÎþÉüµô²¿·Ö¿ÉÓÃÐÔ¡£±ÈÈçÒÔÉϳ¡¾°ÖУ¬µ± Finance Service ÓÉÓÚÈíÓ²¼þ¹ÊÕÏ»òÍøÂçÎÊÌâ¶ø²»¿ÉÓõÄʱºò£¬ÏµÍ³½«ÎÞ·¨ÎªÓû§ÌṩÄÚ²¿×ªÕË·þÎñ¡£

´ËÍ⣬×÷ΪµäÐ͵Äͬ²½²Ù×÷£¬2PCÒ²´æÔÚ×űȽϱȽÏÑÏÖØµÄÐÔÄÜÎÊÌ⣬²¢²»Êʺϸ߲¢·¢³¡¾°¡£Òò´Ë£¬ÔÚÊý¾ÝÒ»ÖÂÐÔÉÏÎÒÃÇÐèҪѰÇóÆäËûµÄ½â¾ö·½°¸¡£

×îÖÕÒ»ÖÂÐÔ

Èç¹ûÎÒÃÇ¿¼ÂÇÖ»±£Ö¤ÏµÍ³µÄ×îÖÕÒ»ÖÂÐÔ£¬ÄÇô¾Í¿ÉÒÔ±ÜÃâʹÓÃ2PC£¬´Ó¶øÌá¸ßϵͳ¿ÉÓÃÐÔºÍÐÔÄÜ¡£

ÈÔÈ»ÒÔÒÔÉϵÄÓû§ÄÚ²¿ÕË»§Ö®¼äµÄתÕË·þÎñΪÀý¡£µ±Óû§´Ó´¢ÐîÕË»§ÏòÀí²ÆÕË»§×ªÕËʱ£¬¼õÉÙ´¢ÐîÕË»§µÄ½ð¶îÓëÔö¼ÓÀí²ÆÕË»§µÄ½ð¶îÕâÁ½¸ö¶¯×÷£¬¿ÉÒÔÎÞÐèÔÚÒ»¸öÊÂÎñÀïÃæÍê³É£¬¶øÊÇ·Ö³ÉÁ½²½£º

0. ´¢Ðî·þÎñ¼õÈ¥´¢ÐîÕË»§ÖеĽð¶î£¬²¢Éú³ÉÒ»¸öƾ֤£¨ÏûÏ¢£©·¢Ë͸øÀí²Æ·þÎñ£»

0. Àí²Æ·þÎñÊÕµ½Æ¾Ö¤ºó£¬ÔÚÀí²ÆÕË»§ÖÐÔö¼ÓÏàÓ¦µÄ½ð¶î¡£

ÎÒÃǻᷢÏÖÒÔÉϹý³ÌÔÚµÚ1²½Íê³ÉÖ®ºó£¬µÚ2²½Íê³É֮ǰ£¬´¢ÐîÕË»§ÓëÀí²ÆÕË»§Ö®¼äʵ¼ÊÉÏÊÇ´æÔÚ¶Ìʱ¼äµÄÊý¾Ý²»Ò»Öµġ£µ«ÊÇ£¬Ö»Òª×îÖÕµÚ2²½Äܹ»Íê³É£¬ÏµÍ³µÄÊý¾Ý¾ÍÈÔÈ»Äܹ»±£³ÖÒ»ÖÂÐÔ£¬Õâ¾ÍÊÇÎÒÃÇËù˵µÄ×îÖÕÒ»ÖÂÐÔ¡£

ÔÚ×îÖÕÒ»ÖÂÐÔÕâ¸öǰÌáÏ£¬¼´Ê¹Àí²Æ·þÎñÔÚij¶Îʱ¼äÄÚ²»¿ÉÓã¬ÏµÍ³ÈÔÈ»Äܹ»ÄÜΪÓû§ÌṩÄÚ²¿×ªÕË·þÎñ£¬´Ó¶øÌá¸ßÁËϵͳµÄ¿ÉÓÃÐÔ¡£

¶øÕâÑùÒ»ÖÖ»ùÓÚ×îÖÕÒ»ÖÂÐԵĽâ¾ö·½°¸£¬¾ÍÊDZ¾ÎĽ«Òª½éÉܵÄʼþÇý¶¯µÄ¼Ü¹¹£¨Event-driven Architecture£©¡£

ʼþÇý¶¯µÄ¼Ü¹¹

ËùνʼþÇý¶¯µÄ¼Ü¹¹£¬Ò²¾ÍÊÇʹÓÃʼþÀ´ÊµÏÖ¿ç¶à¸ö·þÎñµÄÒµÎñÂß¼­¡£

ÔÚÕâÒ»¼Ü¹¹Àµ±ÓÐÖØÒªÊ¼þ·¢Éúʱ£¬±ÈÈç¸üÐÂÒµÎñÊý¾Ý£¬Ä³¸ö΢·þÎñ»á·¢²¼Ê¼þ£¬ÆäËü΢·þÎñÔò¶©ÔÄÕâЩʼþ£»µ±Ä³Ò»Î¢·þÎñ½ÓÊÕµ½Ê¼þ¾Í¿ÉÒÔ¸üÐÂ×Ô¼ºµÄÒµÎñÊý¾Ý£¬Í¬Ê±·¢²¼ÐµÄʼþ´¥·¢ÏÂÒ»²½¸üС£¶øÊ¼þµÄ·¢²¼Óë¶©ÔÄ£¬ÔòÒÀÀµÓÚÒ»¸ö¿É¿¿µÄÏûÏ¢´úÀí£¨Message Broker£©¡£

ÒÔÉÏÎĵij¡¾°ÎªÀý£¬ÔÚʼþÇý¶¯µÄ¼Ü¹¹ÖУ¬´Ó´¢ÐîÕË»§×ªÕ˵½Àí²ÆÕË»§µÄ¹ý³ÌÈçÏ£º

0. ´¢Ðî·þÎñ½«Óû§µÄ´¢ÐîÕË»§ÖеĽð¶î¼õÉÙ10000£¬²¢·¢²¼¡°ÏòÀí²ÆÕË»§×ªÕË¡±Ê¼þ£»

0. Àí²Æ·þÎñ»ñÈ¡¡°×ªÕ˵½Àí²ÆÕË»§¡±Ê¼þ£¬ ¸üÐÂÀí²ÆÕË»§£¬½«Àí²ÆÕË»§µÄ½ð¶îÔö¼Ó10000£¬²¢·¢²¼¡°Àí²ÆÕË»§×ªÈ롱ʼþ£»

0. ´¢Ðî·þÎñ»ñÈ¡¡°Àí²ÆÕË»§×ªÈ롱ʼþ£¬½áÊø±¾´ÎתÕ˽»Òס£

ÔÚÕâÀïÐèÒª¿¼ÂǵÄÒ»¸öÎÊÌ⣬¾ÍÊÇתÕËʧ°Ü´¦Àí¡£±ÈÈçÒÔÉϵÚ2²½Èç¹ûÒòΪ¡°Àí²ÆÕË»§±»¶³½áÎÞ·¨×ªÈë×ʽð¡±Ö®ÀàµÄÔ­Òòʧ°ÜÁË£¬Àí²Æ·þÎñ¾ÍÓ¦¸Ã·¢²¼¡°Àí²ÆÕË»§×ªÈëʧ°Ü¡±Ê¼þ£¬´¢Ðî·þÎñ»ñÈ¡µ½¸Ãʼþºó£¬ÐèÒª¶Ô´¢ÐîÕË»§½øÐлعö£¬½«¼õÉٵĽð¶îÖØÐÂÔö¼Ó»ØÈ¥¡£

ÒÔÉϵĹý³ÌÓ봫ͳµÄÊý¾Ý¹ÜÀí»ùÓÚACIDÄ£ÐͲ»Ò»ÑùµÄÊÇ£¬ËüÊÇ»ùÓÚBASEÄ£Ð͵ġ£

BASE£º

- Basically Available£¨»ù±¾¿ÉÓã©£ºÏµÍ³ÔÚ³öÏÖ²»¿ÉÔ¤ÖªµÄ¹ÊÕϵÄʱºò£¬ÔÊÐíËðʧ²¿·Ö¿ÉÓÃÐÔ£¬µ«²»µÈÓÚϵͳ²»¿ÉÓÃ

- Soft State£¨Èí״̬£©£ºÔÊÐíϵͳÖеÄÊý¾Ý´æÔÚÖмä״̬£¬²¢ÈÏΪ¸ÃÖмä״̬µÄ´æÔÚ²»»áÓ°ÏìϵͳµÄÕûÌå¿ÉÓÃÐÔ

- Eventually Consistent£¨×îÖÕÒ»ÖÂÐÔ£©£ºÏµÍ³±£Ö¤×îÖÕÊý¾ÝÄܹ»´ïµ½Ò»ÖÂ

ʼþ·¢²¼

ÔÚʼþÇý¶¯µÄ¼Ü¹¹ÖУ¬¿ç·þÎñÍê³ÉÒµÎñÂß¼­µÄÒ»¸ö¹Ø¼üµãÊÇÿ¸ö·þÎñ×Ô¶¯¸üÐÂÊý¾Ý¿âºÍ·¢²¼Ê¼þ£¬Ò²¾ÍÊÇÒªÒÔÔ­×ÓÁ£¶È¸üÐÂÊý¾Ý¿âºÍ·¢²¼Ê¼þ¡£ÀýÈ磬´¢Ðî·þÎñ±ØÐëÔÚ¶Ô´¢ÐîÕË»§±í½øÐиüУ¬È»ºó·¢²¼¡°ÏòÀí²ÆÕË»§×ªÕË¡±Ê¼þ£¬ÕâÁ½¸ö²Ù×÷ÐèÒªÔ­×Ó»¯ÊµÏÖ¡£Èç¹û·þÎñÔÚ¸üÐÂÊý¾Ý¿âÖ®ºó¡¢·¢²¼Ê¼þ֮ǰ±ÀÀ££¬ÏµÍ³»á±äµÃ²»Ò»Ö¡£

±£Ö¤Êý¾Ý¸üÐÂÓëʼþ·¢²¼Ô­×Ó»¯µÄ·½·¨£¬ÓÐÒÔϼ¸ÖÖ£º

- ʹÓñ¾µØÊÂÎñ·¢²¼Ê¼þ

- ÍÚ¾òÊý¾Ý¿âÊÂÎñÈÕÖ¾

- ʹÓÃʼþÔ´

ʹÓñ¾µØÊÂÎñ·¢²¼Ê¼þ

Ò»¸öʵÏÖÔ­×Ó»¯µÄ·½·¨ÊÇʹÓñ¾µØÊÂÎñÀ´¸üÐÂÒµÎñʵÌåºÍʼþÁÐ±í£¬ÓÉÒ»¸ö¶ÀÁ¢½ø³ÌÀ´·¢²¼Ê¼þ¡£¾ßÌåÀ´Ëµ£¬¾ÍÊÇÔÚ´æ´¢ÒµÎñʵÌå״̬µÄÊý¾Ý¿âÖУ¬Ê¹ÓÃÒ»¸öʼþ±íÀ´³äµ±ÏûÏ¢¶ÓÁС£Ó¦ÓÃÆô¶¯Ò»¸ö£¨±¾µØ£©Êý¾Ý¿âÊÂÎñ£¬¸üÐÂÒµÎñʵÌåµÄ״̬£¬ÔÚʼþ±íÖвåÈëÒ»¸öʼþ£¬²¢Ìá½»¸ÃÊÂÎñ¡£Ò»¸ö¶ÀÁ¢µÄÏûÏ¢·¢²¼Ï̻߳ò½ø³Ì²éѯ¸Ãʼþ±í£¬½«Ê¼þ·¢²¼µ½ÏûÏ¢´úÀí£¬²¢±ê×¢¸ÃʼþΪÒÑ·¢²¼¡£ÏÂͼչʾÁËÕâÒ»Éè¼Æ¡£

´¢Ðî·þÎñ¸üд¢ÐîÕË»§µÄÓà¶î£¬È»ºóÔÚʼþ±íÖвåÈ롰תÕ˵½Àí²ÆÕË»§¡±µÄʼþ¡£Ê¼þ·¢²¼Ï̻߳ò½ø³ÌÔÚʼþ±íÖвéѯδ·¢²¼µÄʼþ²¢·¢²¼£¬È»ºó¸üÐÂʼþ±í£¬½«¸Ãʼþ±ê¼ÇΪÒÑ·¢²¼¡£

ÕâÖÖ·½·¨µÄÓŵãÊÇ£º

- ʹÓñ¾µØÊÂÎñ£¬±£Ö¤ÁËÊý¾Ý±»¸üÐÂʱʼþÒ»¶¨Äܹ»±»·¢²¼

- ʵÏÖ¼òµ¥£¬Ö»ÐèҪϵͳ¾ß±¸±¾µØÊÂÎñµÄÄÜÁ¦¼´¿ÉʵÏÖ

ÕâÖÖ·½·¨µÄÒ»¸öȱµãÊÇ£¬Êý¾Ý¸üвÙ×÷ÓëËùÒª·¢²¼µÄʼþÖ®¼äµÄ¶ÔÓ¦¹ØÏµ£¬ÊÇÓÉÓ¦ÓõĿª·¢ÕßʵÏֵģ¬Òò´ËÓкܴó¿ÉÄܳö´í¡£

ÍÚ¾òÊý¾Ý¿âÊÂÎñÈÕÖ¾

ʵÏÖÔ­×Ó»¯µÄÁíÒ»ÖÖ·½Ê½ÊÇÓÉÏ̻߳òÕß½ø³Ìͨ¹ýÍÚ¾òÊý¾Ý¿âÊÂÎñ»òÌá½»ÈÕÖ¾À´·¢²¼Ê¼þ¡£Ó¦ÓøüÐÂÊý¾Ý¿â£¬Êý¾Ý¿âµÄÊÂÎñÈÕÖ¾»á¼Ç¼ÕâЩ±ä¸ü¡£ÊÂÎñÈÕÖ¾ÍÚ¾òÏ̻߳ò½ø³Ì¶ÁÈ¡ÕâЩÈÕÖ¾£¬²¢°Ñʼþ·¢²¼µ½ÏûÏ¢´úÀí¡£

±ÈÈçÒ»¸öB2CµÄµçÉÌÍøÕ¾£¬¾Í¿ÉÒÔͨ¹ýÍÚ¾ò¶©µ¥Êý¾ÝµÄ¸üÐÂÈÕÖ¾£¬À´½øÐÐʼþ·¢²¼¡£ÈçÏÂͼËùʾ£º

ÕâÒ»·½·¨µÄ·¶ÀýÊÇ¿ªÔ´µÄ LinkedIn Databus ÏîÄ¿¡£Databus ÍÚ¾ò Oracle ÊÂÎñÈÕÖ¾²¢·¢²¼ÓëÖ®¶ÔÓ¦µÄʼþ£¬LinkedIn ÔòʹÓà Databus ά³Ö¸÷ÖÖÀ´Ô´µÄÊý¾Ý´æ´¢Óë¼Ç¼ϵͳһÖ¡£

ÁíÒ»¸ö·¶ÀýÔòÊÇ AWS DynamoDB ²ÉÓõÄÁ÷»úÖÆ¡£AWS DynamoDB ÊÇÒ»¸ö¿É¹ÜÀíµÄ NoSQL Êý¾Ý¿â£¬ÆäÖÐÿ¸ö DynamoDB Á÷°üÀ¨ DynamoDB ±íÔÚ¹ýÈ¥ 24 Сʱ֮ÄÚµÄʱÐò±ä»¯£¬°üÀ¨´´½¨¡¢¸üкÍɾ³ý²Ù×÷¡£Ó¦ÓÃÄܹ»¶ÁÈ¡ÕâЩ±ä¸ü£¬½«Æä×÷Ϊʼþ·¢²¼¡£

ÕâÖÖ·½·¨µÄÓŵãÊÇ£º

- Òª·¢²¼µÄʼþÖ±½ÓÀ´Ô´ÓÚÊý¾Ý¿âµÄÊÂÎñÈÕÖ¾£¬Òò´Ë²»»á³ö´í

- Ó¦ÓÃÎÞÐè¹Ø×¢Ê¼þµÄ·¢²¼£¬¼ò»¯ÁËÓ¦Óÿª·¢ÕߵŤ×÷

µ«ÊÇÕâÖÖ·½·¨Ò²ÓÐһЩȱµã£º

- ÊÂÎñÈÕÖ¾µÄ¸ñʽÓëËùʹÓõÄÊý¾Ý¿âÏà¹Ø£¬Òò´ËʼþÍÚ¾ò µÄʵÏÖ»áÓÉÓÚÊý¾Ý¿âµÄÖÖÀà»ò°æ±¾µÄ±ä»¯¶øËæÖ®ÐèÒªÐÞ¸Ä

- ÓÉÓÚÊÇÖ±½Ó´ÓÊý¾Ý¿âµÄ¸üмǼÉú³Éʼþ£¬Òò´Ë¿ÉÄÜ»áÎÞ·¨ÄæÏòÍÆ¶Ï³öÒµÎñÂß¼­£¬Òò´Ë²¢²»ÊʺÏÓÚËùÓг¡¾°£¨±ÈÈçǰÎÄËùÊöµÄתÕ˳¡¾°£©

ʹÓÃʼþÔ´

ʼþÔ´²ÉÓÃÒ»ÖÖ½ØÈ»²»Í¬µÄ¡¢ÒÔʼþΪÖÐÐĵķ½·¨À´±£´æÒµÎñʵÌ塪¡ª²»Í¬Óڴ洢ʵÌåµÄµ±Ç°×´Ì¬£¬Ó¦Óô洢µÄÊÇ״̬¸Ä±äµÄʼþÐòÁС£Ã¿µ±ÒµÎñʵÌåµÄ״̬¸Ä±ä£¬ÐÂʼþ¾Í±»¸½¼Óµ½Ê¼þÁÐ±í£¬²¢ÇÒÓ¦ÓÿÉÒÔͨ¹ýʼþ»Ø·ÅÀ´Öع¹ÊµÌåµÄµ±Ç°×´Ì¬¡£¼øÓÚ±£´æÊ¼þÊÇÒ»¸öµ¥Ò»µÄ²Ù×÷£¬Òò´Ë±¾ÖÊÉÏÒ²ÊÇÔ­×Ó»¯µÄ¡£

ÒªÁ˽âʼþÔ´ÈçºÎÔËÐУ¬¿ÉÒÔÒÔ´¢Ðî·þÎñΪÀý¡£ÔÚ´«Í³µÄ·½·¨ÖУ¬Ã¿´ÎתÕ˽»Ò×¶¼»á¸üд¢ÐîÕË»§±íµÄ¼Ç¼¡£¶øÊ¹ÓÃʼþÔ´µÄʱºò£¬´¢Ðî·þÎñÒÔ״̬¸ü¸ÄʼþµÄ·½Ê½´æ´¢Óû§µÄ´¢ÐîÕË»§£¬Ã¿¸öʼþ¶¼°üº¬×ã¹»µÄÊý¾ÝÈ¥ÖØ½¨´¢ÐîÕË»§×´Ì¬¡£

ʼþ³¤ÆÚ±£´æÔÚʼþ²Ö¿â£¨Event Store£©£¬Ê¹Óà API Ìí¼ÓºÍ¼ìË÷ʵÌåµÄʼþ¡£Í¬Ê±£¬Ê¼þ²Ö¿âÆðµ½ÀàËÆÉÏÎÄÌá¼°µÄÏûÏ¢´úÀíµÄ×÷Óã¬Í¨¹ý API È÷þÎñ¶©ÔÄʼþ£¬½«ËùÓÐʼþ´«´ïµ½ËùÓиÐÐËȤµÄ¶©ÔÄÕß¡£ËùÒÔ£¬Ê¼þ²Ö¿â¿ÉÒÔÈÏΪÊÇÊý¾Ý¿âÓëÏûÏ¢´úÀíµÄ×ÛºÏÌ壬ÊÇʼþÔ´·½·¨µÄÖ§Öù¡£

ʼþÔ´·½·¨ÓÐÈçϵÄÓŵ㣺

- ʼþ¼´×´Ì¬£¬·¢²¼Ê¼þ¾ÍÊÇÔÚ¸üÐÂ״̬£¬Òò´ËÌìÈ»¾ßÓÐÔ­×ÓÐÔ£¬²¢ÇÒ²»»á³ö´í

- ÓÉÓÚ´æ´¢µÄÊÇʼþ£¬¶ø²»ÊÇÓò¶ÔÏó£¬Òò´Ë±ÜÃâÁ˶ÔÏó¹ØÏµ¿¹×費ƥÅäµÄÎÊÌ⣨object?relational impedance mismatch problem£©

- ÓÉÓÚ´æ´¢ÁËËùÓеÄÒµÎñ״̬¸üÐÂʼþ£¬Òò´Ë¿ÉÒÔͨ¹ýʼþ»Ø·ÅÍÆ¶Ï³öÈÎһʱ¼äµãµÄÒµÎñʵÌå״̬

ʼþÔ´·½·¨Ò²ÓÐÒÔÏÂÕâЩȱµã£º

- ҪʵÏÖÒ»¸ö¿É¿¿ºÍ¸ßÐÔÄܵÄʼþ²Ö¿â²¢²»ÊÇÒ»¼þÈÝÒ×µÄÊÂÇé

- Ó¦ÓôúÂëÐèÒª¸ù¾Ýʼþ²Ö¿âµÄ API ½øÐÐÖØÐ´

- ʼþ²Ö¿âÖ»Ö±½ÓÖ§³Öͨ¹ýÖ÷¼ü²éѯҵÎñʵÌ壬Òò´Ë¶ÔÓÚ¸´ÔÓÊÓͼµÄ²éѯ±È½ÏÀ§ÄÑ£¨¿ÉÒÔͨ¹ýCQRS·½·¨½â¾ö£¬¾ßÌå²Î¼ûÏÂÎÄ£©

ÃüÁî²éѯ·ÖÀ루CQRS£©

ÔÚʼþÔ´·½·¨ÖУ¬²»ÔÙÖ±½Ó´æ´¢ÈκÎÒµÎñʵÌåµÄ״̬£¬¶øÊÇ´úÖ®ÒÔ״̬±ä¸üʼþ¡£ÔÚ½øÐи´ÔÓÊÓͼµÄ²éѯʱ£¬Èç¹û»¹°´ÕÕÓëÃüÁî²Ù×÷ͬÑùµÄ·½Ê½£¬½«»áÓöµ½Ò»Ð©À§ÄÑ¡£±ÈÈçÒª·¢ÆðÈçϵÄÒ»¸öÍ¬Ê±Éæ¼°´¢ÐîÕË»§ºÍÀí²ÆÕË»§µÄ²éѯ²Ù×÷£º

SELECT *
FROM DEPOSIT_ACCOUNT deposit, FINANCE_ACCOUNT finance
WHERE
deposit.user_id = finance.user_id
AND finance.state = 'active'
AND deposit.amount > 100000
AND finance.amount > 5000

ÔÚ·ÇʼþÔ´µÄ·½Ê½Ï£¬¿ÉÒÔºÜÈÝÒ׵ĴӴ¢ÐîÕË»§±íºÍÀí²ÆÕË»§±í²éѯµ½ÏàÓ¦Êý¾Ý¡£µ«ÊÇÔÚʼþÔ´·½Ê½Ï£¬Ê¼þ²Ö¿âÖд洢µÄÊÇһϵÁÐʼþ£¬²¢ÇÒÖ»ÄÜͨ¹ýÖ÷¼ü£¨±ÈÈç deposit_account.id »ò finance_account.id£©È¥²éѯÏàÓ¦µÄÒµÎñʵÌ壬´ËʱҪ´¦ÀíÀàËÆ deposit.amount > 100000 ÕâÑùµÄ²éѯÌõ¼þÒÔ¼°Ìõ¼þ×éºÏʱ£¬ÊǷdz£¸´ÔӺ͵ÍЧµÄ¡£

ΪÁ˽â¾öÕâÒ»ÎÊÌ⣬¿ÉÒÔ²ÉÓÃCQRS·½·¨£¬½«ÃüÁîÓë²éѯ·ÖÀë¡£ÃüÁî²Ù×÷ÈÔȻͨ¹ý¸÷·þÎñµÄ API ÒÔ¸üÐÂʼþÁбíµÄ·½Ê½½øÐУ¬¶ø²éѯ²Ù×÷Ôòͨ¹ýÒ»¸öͳһµÄÊÓͼ²éѯ·þÎñ£¨View Query Service£©Íê³É¡£

¸ù¾Ý´æ´¢ÔÚʼþ²Ö¿âÖеÄʼþ¼¯ºÏ£¬¿ÉÒÔ¼ÆËãµÃµ½Ã¿¸öÒµÎñʵÌåµÄ״̬£¬ÕâЩ״̬ÒÔÎﻯÊÓͼ£¨Materialized View£©µÄ·½Ê½´æ´¢ÔÚÒ»¸öÊý¾Ý¿âÖС£µ±ÓÐеÄʼþ²úÉúʱ£¬Ò²Í¬Ñù»á×Ô¶¯¸üÐÂÊÓͼ¡£ÕâÑù£¬ÊÓͼ²éѯ·þÎñ¾Í¿ÉÒÔÏñ²éѯÆÕͨµÄÊý¾Ý¿âÊý¾ÝÒ»ÑùʵÏÖ¸÷ÖÖ²éѯ³¡¾°¡£¾ßÌåµÄÉè¼Æ¿É²Î¿¼ÏÂͼËùʾ£º

½áÂÛ

ÔÚ΢·þÎñ¼Ü¹¹ÖУ¬Ã¿¸ö΢·þÎñ¶¼ÓÐÆä˽ÓÐÊý¾Ý´æ´¢£¬²»Í¬µÄ΢·þÎñ¿ÉÄÜʹÓò»Í¬µÄÊý¾Ý¿â¡£ÕâÖּܹ¹´øÀ´±ãÀûµÄͬʱ£¬Ò²¸ø·Ö²¼Ê½Êý¾Ý¹ÜÀí´øÀ´ÌôÕ½£¬ÆäÖÐ×î´óµÄÌôÕ½¾ÍÊÇÔÚʵÏÖ¿ç·þÎñµÄÒµÎñÂß¼­Ê±£¬ÈçºÎ±£³Ö·þÎñÖ®¼äµÄÊý¾ÝÒ»ÖÂÐÔ¡£

¶ÔÓÚÐí¶àÓ¦Ó㬽â¾ö·½°¸¾ÍÊÇʹÓÃʼþÇý¶¯µÄ¼Ü¹¹¡£Ê¼þÇý¶¯µÄ¼Ü¹¹´øÀ´µÄÌôÕ½ÊÇÈçºÎÔ­×Ó»¯µØ¸üÐÂ״̬ºÍ·¢²¼Ê¼þ¡£Óм¸¸ö·½·¨¿ÉÒÔ×öµ½ÕâÒ»µã£¬°üÀ¨°ÑÊý¾Ý¿âÓÃ×÷ÏûÏ¢¶ÓÁС¢ÊÂÎñÈÕÖ¾ÍÚ¾òºÍʼþÔ´¡£

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

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù