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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Amazon Dynamoϵͳ¼Ü¹¹
 
±à¼­£ºÊ©²ýȨ À´Ô´£ºLinuxEye ·¢²¼ÓÚ£º 2015-04-15
  3537  次浏览      28
 

Ò»¡¢ÏµÍ³¸ÅÊö

1¡¢Amazonƽ̨¸ÅÊö

Amazonƽ̨ÊÇÒ»¸öÓÉÊý°Ù·þÎñ×é³ÉµÄÃæÏò·þÎñµÄ¼Ü¹¹£¬Æä±ü³Ð¸ß¶ÈÈ¥ÖÐÐÄ»¯¡¢ËÉÉ¢ñîºÏ¡¢ÍêÈ«·Ö²¼Ê½µÄÔ­Ôò£¬¾ßÌå¼Ü¹¹²Î¿¼ÏÂͼ1¡£

ͼ1 Amazonϵͳ¼Ü¹¹

ÔÚÕâÖÖ»·¾³ÖУ¬ÓÈÆäÐèÒªÒ»¸öʼÖÕ¿ÉÓõĴ洢ϵͳ£¬ÓÉ´Ë£¬Dynamoµ®ÉúÁË¡£

2¡¢Dynamo¸ÅÊö

DynamoÊÇAmazonÌṩµÄÒ»¿î¸ß¿ÉÓõķֲ¼Ê½Key-Value´æ´¢ÏµÍ³£¬ÆäÂú×ã¿ÉÉìËõÐÔ¡¢¿ÉÓÃÐÔ¡¢¿É¿¿ÐÔ¡£

CAPÔ­ÀíÂú×㣺ͨ¹ýÒ»ÖÂÐÔ¹þÏ£Âú×ãP£¬Óø´ÖÆÂú×ãA£¬ÓöÔÏó°æ±¾ÓëÏòÁ¿Ê±ÖÓÂú×ãC¡£ÓÃÎþÉüCÀ´Âú×ã¸ß¿ÉÓõÄA£¬µ«ÊÇ×îÖÕ»áÒ»Ö¡£µ«ÊÇ£¬ÊÇÎþÉüCÂú×ãA£¬»¹ÊÇÎþÉüAÂú×ãC£¬¿ÉÒÔ¸ù¾ÝNWRÄ£ÐÍÀ´µ÷Å䣬ÒÔ´ïµ½ÊÕÒæ³É±¾Æ½ºâ¡£

DynamoÄÚ²¿ÓÐ3¸ö²ãÃæµÄ¸ÅÄ

Key-Value£ºKeyΨһ±êʶһ¸öÊý¾Ý¶ÔÏó£¬Value±êʶÊý¾Ý¶ÔÏóʵÌ壬ͨ¹ý¶ÔKeyÀ´Íê³É¶ÔÊý¾Ý¶ÔÏóµÄ¶Áд²Ù×÷¡£

½Úµãnode£º½ÚµãÊÇÖ¸Ò»¸öÎïÀíÖ÷»ú¡£ÔÚÿ¸ö½ÚµãÉÏ£¬»áÓÐ3¸ö±Ø±¸×é¼þ£ºÇëÇóЭµ÷Æ÷£¨request coordination£©¡¢³ÉÔ±Óëʧ°Ü¼ì²â¡¢±¾µØ³Ö¾ÃÒýÇæ£¨local persistence engine£©£¬ÕâЩ×é¼þ¶¼ÓÉJavaʵÏÖ¡£±¾µØ³Ö¾ÃÒýÇæÖ§³Ö²»Í¬µÄ´æ´¢ÒýÇæ£¬×îÖ÷ÒªµÄÒýÇæÊÇBerkeley Database Transactional Data Store£¨´æ´¢Êý°ÙKµÄ¶ÔÏó¸üºÏÊÊ£©£¬ÆäËü»¹ÓÐBDB Java Edtion¡¢MySQLÒÔ¼°Ò»ÖÂÐÔÄÚ´æCache¡£±¾µØ³Ö¾Ã»¯ÒýÇæ×é¼þÊÇÒ»¸ö¿É²å°ÎµÄ³Ö¾Ã»¯×é¼þ£¬Ó¦ÓóÌÐò¿ÉÒÔ¸ù¾ÝÐèҪѡÔñ×îºÏÊʵĴ洢ÒýÇæ£¬±ÈÈ磺Èç¹û´æ´¢¶ÔÏóµÄͨ³£ÎªÊýǧ×Ö½ÚÔò¿ÉÒÔÑ¡ÔñBDB£¬Èç¹ûÊǸü¶à³ß´çÔò¿ÉÒÔÑ¡ÔñMySQL¡£Éú²úÖУ¬Dynamoͨ³£Ê¹ÓÃBDBÊÂÎïÊý¾Ý´æ´¢¡£

ʵÀýinstance£º´ÓÓ¦ÓõĽǶÈÀ´¿´¾ÍÊÇÒ»¸ö·þÎñ£¬ÌṩIO¹¦ÄÜ¡£Ã¿¸öʵÀýÓÉÒ»×é½Úµã×é³É£¬ÕâЩ½Úµã¿ÉÄÜλÓÚ²»Í¬µÄIDC£¬ÕâÑùIDC³öÏÖÎÊÌâÒ²²»»áµ¼ÖÂÊý¾Ý¶ªÊ§£¬ÕâÑù»áÓиüºÃµÄÈÝÔֺͿɿ¿ÐÔ¡£

¶þ¡¢±³¾°Ìõ¼þ

1¡¢ÏµÍ³¼ÙÉèÓëÒªÇó

£¨1£©²éѯģÐÍ

»ùÓÚKey-ValueÄ£ÐÍ£¬¶ø²»ÊÇSQL¼´¹ØÏµÄ£ÐÍ¡£´æ´¢¶ÔÏó±È½ÏС£¬Í¨³£Ð¡ÓÚ1MB¡£

£¨2£©ACIDÊôÐÔ

´«Í³µÄ¹ØÏµÊý¾Ý¿âÖУ¬ÓÃACID£¨AÔ­×ÓÐÔ¡¢CÒ»ÖÂÐÔ¡¢I¸ôÀëÐÔ¡¢D³Ö¾ÃÐÔ£©À´±£Ö¤ÊÂÎñ£¬ÔÚ±£Ö¤ACIDµÄǰÌáÏÂÍùÍùÓкܲîµÄ¿ÉÓÃÐÔ¡£DynamoÓÃÈõÒ»ÖÂÐÔCÀ´´ïµ½¸ß¿ÉÓ㬲»ÌṩÊý¾Ý¸ôÀëI£¬Ö»ÔÊÐíµ¥Key¸üС£

£¨3£©Ð§ÂÊ

ÔÚÁ®¼ÛµÄ»úÆ÷ÉÏÂú×ãSLA£¬Í¨¹ýÅäÖÃÀ´Âú×ãÑÓʱºÍÍÌÍÂÁ¿µÄÒªÇó£¬Òò´Ë£¬±ØÐëÔÚÐÔÄÜ¡¢³É±¾¡¢¿ÉÓÃÐԺͳ־ÃÐÔ±£Ö¤Ö®¼ä×öȨºâ¡£

£¨4£©ÆäËü¼ÙÉè

Dynamo½öÔÚAmazonÄÚ²¿Ê¹Óã¬Òò´Ë£¬ÈÏΪÆäʹÓû·¾³ÊÇ¿ÉÐÅÀµµÄ¡£

2¡¢·þÎñˮƽЭÒ飨SLA£©

Ëùν·þÎñˮƽЭÒéÊÇÖ¸¿Í»§¶ËºÍ·þÎñ¶ËÔÚij¼¸¸öÖ¸±êÉÏ´ï³ÉÒ»ÖµÄÒ»¸öЭÒ飬ͨ³£°üÀ¨¿Í»§¶ËÇëÇóAPIµÄËÙÂÊ¡¢·þÎñ¶ËµÄÔ¤ÆÚÑÓʱ£¬±ÈÈ磺ÔÚ¿Í»§¶ËÿÃë500¸öÇëÇó¸ºÔصĸ߷åʱ£¬99.9%µÄÏìӦʱ¼äΪ300ºÁÃë¡£

Ò»°ãÒµ½ç£¬¶ÔÕâÖÖÃæÏòÐÔÄܵÄSLA²ÉÓÃÆ½¾ùÊý£¨average£©¡¢ÖÐÖµ£¨median£©ºÍÔ¤ÆÚ±ä»¯£¨expected variance£©¡£µ«ÊÇÕâЩָ±êÖ»ÄܶԴó¶àÊý¿Í»§¶ËÓÐÁ¼ºÃÌåÑ飬¶ø²»ÊÇËùÓС£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬Dynamo²ÉÓÃ99.9%°Ù·ÖλÀ´´úÌæÕâЩָ±ê¡£

3¡¢Éè¼Æ¿¼ÂÇ£¨¸´ÖÆÊý¾Ý£©

´«Í³µÄÊý¾Ý¸´ÖÆËã·¨£¬ÔÚ³öÏÖ¹ÊÕÏʱ£¬ÎªÁ˱£Ö¤Êý¾ÝÒ»ÖÂÐÔ±»ÆÈÎþÉüµô¿ÉÓÃÐÔ£¬¼´£ºÓëÆä²»ÄÜÈ·¶¨Êý¾ÝÊÇ·ñÕýÈ·£¬²»ÈçÈÃÊý¾ÝÒ»Ö±²»¿ÉÓÃÖ±µ½Êý¾Ý¾ø¶ÔÕýȷʱ¡£

µ«ÊÇ£¬Ò»¸ö¸ß¶ÈÁé»îµÄϵͳӦ¸ÃÄܹ»ÈÃÓû§ÖªµÀÔÚºÎÖÖÇé¿öÏÂÄܵ½´ïÄÄЩÊôÐÔ£¬Dynamo¾ÍÊÇÈç´Ë¡£

¶ÔÓÚ¹ÊÕÏÊdz£Ì¬µÄϵͳÀ´Ëµ£¬²ÉÓÃÀÖ¹Û¸´ÖƼ¼Êõ¿ÉÒÔÌṩϵͳµÄ¿ÉÓÃÐÔ£¬µ«´øÀ´µÄÎÊÌâÊÇÐèÒª¼ì²â²¢Ð­µ÷½â¾ö³åÍ»£¬Ð­µ÷½â¾ö³åÍ»µÄ¹ý³ÌÓÖ°üº¬Á½¸öÎÊÌ⣬¼´£ººÎʱЭµ÷ºÍÓÉ˭Эµ÷¡£DynamoµÄÉè¼ÆÊÇÊý¾Ý´æ´¢×îÖÕÒ»Ö£¬¼´ËùÓиüвÙ×÷×îÖÕµ½´ïËùÓи±±¾¡£

£¨1£©ºÎʱЭµ÷

ÎÞÍâºõÁ½ÖÖÇé¿ö£ºÐ´»òÕß¶ÁʱЭµ÷³åÍ»¡£

´«Í³Êý¾Ý´æ´¢ÔÚдʱЭµ÷³åÍ»£¬¼´Èç¹û¸ø¶¨Ê±¼äÄÚÊý¾Ý²»ÄÜ´ïµ½ËùÒªÇóµÄËùÓлò´ó¶àÊý¸±±¾Êý£¬ÔòдÈë¿ÉÄܻᱻ¾Ü¾ø¡£

AmazonÈÏΪ¾Ü¾ø¿Í»§µÄ¸üвÙ×÷»áµ¼ÖÂÔã¸âµÄÓû§ÌåÑ飬µäÐÍÓ¦ÓÃÊǹºÎï³µ·þÎñ£¬¼´Ê¹³öÏÖ¹ÊÕÏ£¬¿Í»§ÈÔÈ»¿ÉÒÔÏò¹ºÎï³µÌí¼Ó»òÕßɾ³ýÎïÆ·£¬»ùÓÚ´Ë£¬DynamoµÄÄ¿±ê¶¨Î»Îª¡°ÓÀÔ¶¿Éд¡±£¨always writable£©¼´Êý¾Ý´æ´¢µÄ¡°Ð´¡±ÊǸ߿ÉÓõġ£Ò²¾ÍÊÇ˵DynamoΪÁËÈ·±£¡°Ð´¡±ÓÀÔ¶²»»á±»¾Ü¾ø£¬ÄÇôÊý¾Ý´æ´¢ÔÚ¶ÁʱЭµ÷³åÍ»¡£

£¨2£©ÓÉ˭Эµ÷

ÎÞÍâºõÁ½ÖÖÇé¿ö£ºÓÉÊý¾Ý´æ´¢±¾Éí»ò¿Í»§¶ËÓ¦ÓóÌÐòÀ´Ð­µ÷¡£

Èç¹ûÊÇÊý¾Ý´æ´¢±¾ÉíЭµ÷£¬ÔòÖ»ÄÜʹÓüòµ¥²ßÂÔÀ´Ð­µ÷³åÍ»µÄ¸üвÙ×÷£¬±ÈÈ磺¡°×îºóÒ»´ÎдÈë»ñʤ¡±£¨last write wins£©¡£

Èç¹ûÊǿͻ§¶ËÓ¦ÓóÌÐòЭµ÷£¬ÔòÓ¦ÓóÌÐò¿ÉÒÔ¸ù¾ÝÒµÎñÐèÇóÀ´Ñ¡Ôñ×îÊʺÏЭµ÷³åÍ»µÄ·½·¨¡£

DynamoÑ¡ÔñÁ˺óÕߣ¬µäÐÍÓ¦Óû¹ÊǹºÎï³µ·þÎñ£¬·µ»ØËùÓÐÊý¾Ý¶ÔÏó°æ±¾£¬×îºóÑ¡ÔñºÏ²¢Íê³åÍ»µÄ°æ±¾¡£

Èý¡¢¹Ø¼ü¼¼Êõ

Dynamo×÷ΪһÀà·Ö²¼Ê½ÏµÍ³µÄµäÐÍ´ú±í£¬ÆäÖÚ¶à¹Ø¼ü¼¼Êõ¸øÆä´øÀ´Ò»ÏµÁеÄÓÅÊÆ£¬¾ßÌå²Î¿´ÏÂ±í£º

±í1 DynamoʹÓõļ¼ÊõºÍÓÅÊÆ

1¡¢Êý¾Ý·ÖÇø

HashËã·¨£ºÊ¹ÓÃMD5¶ÔKey½øÐÐHashÒÔ²úÉúÒ»¸ö128λµÄ±êʾ·û£¬ÒÔ´ËÀ´È·¶¨KeyµÄ´æ´¢½Úµã¡£

ΪÁË´ïµ½ÔöÁ¿¿ÉÉìËõÐÔµÄÄ¿µØ£¬Dynamo²ÉÓÃÒ»ÖÂÐÔ¹þÏ£À´Íê³ÉÊý¾Ý·ÖÇø¡£ÔÚÒ»ÖÂÐÔ¹þÏ£ÖУ¬¹þÏ£º¯ÊýµÄÊä³ö·¶Î§ÎªÒ»¸öÔ²»·£¬Èçͼ2Ëùʾ£¬ÏµÍ³ÖÐÿ¸ö½ÚµãÓ³Éäµ½»·ÖÐij¸öλÖ㬶øKeyÒ²±»Hashµ½»·ÖÐij¸öλÖã¬Key´ÓÆä±»Ó³ÉäµÄλÖÿªÊ¼ÑØË³Ê±Õë·½ÏòÕÒµ½µÚÒ»¸öλÖÃ±ÈÆä´óµÄ½Úµã×÷ΪÆä´æ´¢½Úµã£¬»»¸ö½Ç¶È˵£¬¾ÍÊÇÿ¸öϵͳ½Úµã¸ºÔð´ÓÆäÓ³ÉäµÄλÖÃÆðµ½ÄæÊ±Õë·½ÏòµÄµÚÒ»¸öϵͳ½Úµã¼äµÄÇøÓò¡£

Ò»ÖÂÐÔ¹þÏ£×î´óµÄÓŵãÔÚÓÚ½ÚµãµÄÀ©ÈÝÓëËõÈÝ£¬Ö»Ó°ÏìÆäÖ±½ÓµÄÁھӽڵ㣬¶ø¶ÔÆäËü½ÚµãûÓÐÓ°Ïì¡£ÕâÑù¿´ËƺÜÍêÃÀÁË£¬µ«ÊÇÑÇÂíѷûÓÐÒò´Ë¶øÍ£Ö¹½Å±¾£¬ÕâÊÇÆäΰ´óÖ®´¦£¬Æäʵ»¹´æÔÚÁ½¸öÎÊÌ⣺½ÚµãÊý¾Ý·Ö²¼²»¾ùÔȺÍÎÞÊÓ½ÚµãÐÔÄܵÄÒìÖÊÐÔ¡£ÎªÁ˽â¾öÕâÁ½¸öÎÊÌ⣬Dynamo¶ÔÒ»ÖÂÐÔ¹þÏ£½øÐÐÁ˸Ľø¶øÒýÈëÁËÐéÄâ½Úµã£¬¼´Ã¿¸ö½Úµã´ÓÂß¼­ÉÏÇзÖΪ¶à¸öÐéÄâ½Úµã£¬Ã¿¸öÐéÄâ½Úµã´ÓÂß¼­ÉÏ¿´ÏñÒ»¸öÕæÊµ½Úµã£¬ÕâÑùÿ¸ö½Úµã¾Í±»·ÖÅäµ½»·É϶à¸öµã¶ø²»ÊÇÒ»¸öµ¥µã¡£

2¡¢Êý¾Ý¸´ÖÆ

ΪÁËʵÏָ߿ÉÓã¬Dynamo½«Ã¿¸öÊý¾Ý¸´ÖƵ½N̨Ö÷»úÉÏ£¬ÆäÖÐNÊÇÿ¸öʵÀý£¨per-instance£©µÄÅäÖòÎÊý£¬½¨ÒéֵΪ3¡£Ã¿¸öKey±»·ÖÅäµ½Ò»¸öЭµ÷Æ÷£¨coordinator£©½Úµã£¬Ð­µ÷Æ÷½Úµã¹ÜÀíÆä¸ºÔð·¶Î§Äڵĸ´ÖÆÊý¾ÝÏÆä³ýÁËÔÚ±¾µØ´æ´¢ÆäÔðÈη¶Î§ÄÚµÄÿ¸öKeyÍ⣬»¹¸´ÖÆÕâЩKeyµ½»·ÉÏ˳ʱÕë·½ÏòµÄN-1¸öºó¼Ì½Úµã¡£ÕâÑù£¬ÏµÍ³ÖÐÿ¸ö½Úµã¸ºÔð»·ÉÏ´ÓÆä×Ô¼ºÎ»ÖÿªÊ¼µ½µÚN¸öǰÇý½Úµã¼äµÄÒ»¶ÎÇøÓò¡£¾ßÌåÂß¼­¼ûͼ2£¬Í¼ÖнڵãB³ýÁËÔÚ±¾µØ´æ´¢¼üKÍ⣬»¹ÔÚ½ÚµãCºÍD´¦¸´ÖƼüK£¬ÕâÑù½ÚµãD½«´æ´¢ÂäÔÚ·¶Î§(A, B]¡¢(B, C]ºÍ(C, D]ÉϵÄËùÓмü£º

ͼ2 ÔÚDynamo»·ÉϵķÖÇøÓëKey¸´ÖÆ

¶ÔÓÚÒ»¸öÌØ¶¨µÄ¼ü¶¼ÓÐÒ»¸öÊ×Ñ¡½ÚµãÁÐ±í£¬ÓÉÓÚÐéÄâ½ÚµãµÄ´æÔÚ£¬ÎªÁ˽â¾ö½Úµã¹ÊÕϵÄÎÊÌ⣬¹¹½¨Ê×ÏȽڵãÁбíʱ»áÌø¹ý»·ÉÏijЩλÖã¬ÈÃÕâЩ½Úµã·Ö±ðλÓÚ²»Í¬µÄÎïÀí½ÚµãÉÏ£¬ÒÔ±£Ö¤¸ß¿ÉÓá£

ΪÁ˱£Ö¤¸´ÖÆÊ±Êý¾Ý¸±±¾µÄÒ»ÖÂÐÔ£¬Dynamo²ÉÓÃÀàËÆÓÚQuorumϵͳµÄÒ»ÖÂÐÔЭÒéʵÏÖ¡£ÕâÀïÉæ¼°µ½Èý¸ö¹Ø¼ü²ÎÊý(N, R, W)£¬ÆäÖУ¬NÊÇÖ¸Êý¾Ý¶ÔÏó¸´ÖƵ½N̨Ö÷»ú£¬Ð­µ÷Æ÷¸ºÔð½«Êý¾Ý¸´ÖƵ½N-1¸ö½ÚµãÉÏ£¬ÑÇÂíÑ·½¨ÒéNÅäÖÃΪ3£¬R´ú±íÒ»´Î³É¹¦µÄ¶ÁÈ¡²Ù×÷ÖÐ×îС²ÎÓë½ÚµãÊýÁ¿£¬W´ú±íÒ»´Î³É¹¦µÄд²Ù×÷ÖÐ×îС²ÎÓë½ÚµãÊýÁ¿¡£R+W>N£¬Ôò»á²úÉúÀàËÆÓÚQuorumµÄЧ¹û¡£¸ÃÄ£ÐÍÖУ¬¶Á£¨Ð´£©ÑÓ³ÙÓÉ×îÂýµÄR(W)¸´ÖƸ±±¾¾ö¶¨£¬ÎªÁ˵õ½±È½ÏСµÄÑÓ³Ù£¬RºÍWͨ³£ÅäÖÃΪСÓÚN¡£ÑÇÂíÑ·½¨Òé(N, R, W)ÉèÖÃΪ(3, 2, 2)ÒÔ¼æ¹ËÐÔÄÜÓë¿ÉÓÃÐÔ¡£RºÍWÖ±½ÓÓ°ÏìÐÔÄÜ¡¢À©Õ¹ÐÔºÍÒ»ÖÂÐÔ£¬Èç¹ûWÉèÖÃΪ1£¬ÔòÒ»¸öʵÀýÖÐÖ»ÒªÓÐÒ»¸ö½Úµã¿ÉÓã¬Ò²²»Ó°Ïìд²Ù×÷£¬Èç¹ûRÉèÖÃΪ1£¬Ö»ÒªÓÐÒ»¸ö½Úµã¿ÉÓã¬Ò²²»»áÓ°Ïì¶ÁÇëÇó£¬RºÍWÖµ¹ýСÔòÓ°ÏìÒ»ÖÂÐÔ£¬¹ý´óÔò¿ÉÓÃÐÔ£¬Òò´Ë£¬ÐèÒªÔÚRºÍWÁ½¸öÖµÖ®¼äƽºâ£¬ÕâÒ²ÊÇDynamoµÄÒ»¸öÁÁµãÖ®Ò»¡£

3¡¢°æ±¾ºÏ²¢

ÓÉǰÎÄ¿ÉÖª£¬DynamoΪÁ˱£Ö¤¸ß¿ÉÓ㬶Ôÿ·ÝÊý¾Ý¶¼¸´ÖÆÁ˶à·Ý£¨½¨Òé3·Ý£©£¬ÔÚÊý¾ÝûÓб»Òì²½¸´ÖƵ½ËùÓи±±¾Ç°£¬Èç¹ûÓÐget²Ù×÷»áÈ¡µ½²»Ò»ÖµÄÊý¾Ý£¬µ«ÊÇDynamoÌṩ×îÖÕÒ»ÖÂÐÔ¡£ÔÚÑÇÂíѷƽ̨ÖУ¬¹ºÎï³µ¾ÍÊÇÕâÖÖÇé¿öµÄµäÐÍÓ¦Óã¬ÎªÁ˱£Ö¤¹ºÎï³µÓÀÔ¶¿ÉÓ㬶ÔÈκÎÒ»¸ö¸±±¾µÄÈκÎÒ»´Î¸ü¸Ä²Ù×÷µÄ½á¹û¶¼»áµ±×öÒ»¸öÊý¾Ý°æ±¾´æ´¢ÆðÀ´£¬ÕâÑùµ±Óû§getʱ¾Í»áÈ¡µ½¶à¸ö°æ±¾£¬ÕâÑùÒ²¾ÍÐèÒª×öÊý¾Ý°æ±¾ºÏ²¢ÁË¡£Dynamo½«ºÏ²¢¹¤×÷ÍÆ¸øÓ¦ÓóÌÐò£¬ÔÚÕâÀï¾ÍÊǹºÎï³µgetʱ´¦Àí¡£

DynamoÓÃÏòÁ¿Ê±ÖÓÀ´±êʶͬһÊý¾ÝÔÚ²»Í¬½ÚµãÉ϶à¸ö¸±±¾Ö®¼äµÄÒò¹û¹ØÏµ¡£ÏòÁ¿Ê±ÖÓʵ¼ÊÉϾÍÊÇÒ»¸öÁÐ±í£¬ÁбíµÄÿ¸ö½ÚµãÊÇÒ»¸ö(node, counter)¶Ô£¬¼´(½Úµã£¬¼ÆÊýÆ÷)ÁÐ±í¡£Êý¾Ý°æ±¾Ö®¼äµÄ¹ØÏµÒªÃ´ÊÇÒò¹û¹ØÏµ£¬ÒªÃ´ÊÇÆ½ÐйØÏµ£¬¹ØÏµÅжÏÒÀÀµÓÚ¼ÆÊýÆ÷Öµ´óС£¬Èç¹ûµÚÒ»¸öʱÖÓ¶ÔÏóµÄ¼ÆÊýÆ÷СÓÚ»òµÈÓÚËùÓÐÆäËüʱÖÓ¶ÔÏóµÄ¼ÆÊýÆ÷ʱÔòÊÇÒò¹û¹ØÏµ£¬ÄÇôÒòÊǹûµÄ׿ÏÈ¿ÉÒÔÈÏΪÊǾɰæÊý¾Ý¶øÖ±½ÓºöÂÔ£¬·ñÔòÊÇÆ½ÐйØÏµ£¬ÄÇô¾ÍÈÏΪÊý¾Ý°æ±¾²úÉúÁ˳åÍ»£¬ÐèҪЭµ÷²¢ºÏ²¢¡£

ÔÚDynamoÖУ¬µ±¿Í»§¶Ë¸üÐÂÒ»¸ö¶ÔÏóʱ£¬±ØÐëÖ¸¶¨¸üÐÂÄĸö°æ±¾Êý¾Ý£¬¸üа汾ÒÀÀµÓÚÔçÆÚget²Ù×÷ʱ»ñµÃµÄÏòÁ¿Ê±ÖÓ¡£

ͼ3 ¶ÔÏó°æ±¾ËæÊ±¼äÑݱä

ÏòÁ¿Ê±ÖÓµÄʹÓùý³ÌͼÉÏͼ3Ëùʾ£¬¾ßÌåÁ÷³Ì½âÎöÈçÏ£º

¿Í»§¶ËдÈëÒ»¸öжÔÏó¡£½ÚµãSx´¦ÀíÁËÕâ¸öÇëÇ󣬴¦Àí¶ÔkeyµÄд£ºÐòÁкŵÝÔö£¬²¢´´½¨Êý¾ÝµÄÏòÁ¿Ê±ÖÓ£¬ÕâÑùÔڸýڵãÉÏÉú³É¶ÔÏóD1ºÍÏòÁ¿Ê±ÖÓ[(Sx, 1)]¡£

¿Í»§¶Ë¸üиöÔÏó¡£¼ÙÉèÓÉͬÑùµÄ½Úµã¼´Sx´¦ÀíÁËÕâ¸öÇëÇó£¬ÓÉÓڸýڵãÓÐÁËD1ºÍÏòÁ¿Ê±ÖÓ[(Sx, 1)]£¬Ôò¸üиöÔÏóºóÔڸýڵãÉÏÉú³É¶ÔÏóD2ºÍÏòÁ¿Ê±ÖÓ[(Sx, 2)]£¬D2¼Ì³Ð×ÔD1£¬¼´D2¸²Ð´D1£¬¼ÆÊýÆ÷Ôö1£¬µ«ÆäËü½Úµã´Ëʱ¿ÉÄÜÊÇD1£¬Ò²¿ÉÄÜÊÇD2£¬ÕâÈ¡¾öÓÚÍøÂçºÍ½Úµã״̬¡£

¼ÙÉèͬһ¿Í»§¶Ë¸üиöÔÏ󵫱»²»Í¬µÄ·þÎñÆ÷´¦ÀíÁË¡£½ÚµãSy´¦ÀíÁËÕâ¸öÇëÇó£¬Ôò¸üиöÔÏóºóÔڸýڵãÉÏÉú³É¶ÔÏóD3ºÍÏòÁ¿Ê±ÖÓ[(Sx, 2), (Sy, 1)]¡£

¼ÙÉèÁíÒ»¿Í»§¶Ë¶ÁÈ¡µ½ÁËD2²¢³¢ÊÔ¸üÐÂËüµ«±»ÁíÒ»¸ö²»Í¬µÄ·þÎñÆ÷´¦ÀíÁË¡£½ÚµãSz´¦ÀíÁËÕâ¸öÇëÇó£¬Ôò¸üиöÔÏóºóÔڸýڵãÉÏÉú³É¶ÔÏóD4ºÍÏòÁ¿Ê±ÖÓ[(Sx, 2), (Sz, 1)]¡£

½ÚµãÊý¾Ý°æ±¾»ØÊÕ¡£ÏÖÔÚÓÐ4¸ö°æ±¾µÄÊý¾Ý´æÔÚ²¢ÔÚ¸÷¸ö½ÚµãÖ®¼ä´«µÝÁË£¬µ±½ÚµãÊÕµ½D3»òD4ʱ£¬»á¸ù¾ÝÏòÁ¿Ê±ÖÓ½«D1ºÍD2»ØÊÕµô£¬ÒòΪÆäÊÇD3ºÍD4µÄ׿ÏÈ¡£µ«ÊÇÊÕµ½D3ºÍD4µÄ½Úµã£¬¸ù¾ÝÏòÁ¿Ê±ÖÓ·¢ÏÖËüÃÇÖ®¼äÊDz¢ÐйØÏµ£¬Ôò±£Áô¶þÕߣ¬²¢ÔÚ¿Í»§¶Ëgetʱ½«¶þÕß¶¼Ìá½»¸ø¿Í»§¶ËÓÉÆäÀ´Ð­µ÷²¢ºÏ²¢°æ±¾¡£

¼ÙÉè¿Í»§¶Ë¶ÁÈ¡Êý¾Ý£¬Ôò»á»ñÈ¡µ½D3ºÍD4£¬¸ù¾ÝÁ½ÕßµÄÏòÁ¿Ê±ÖÓ£¬»áºÏ²¢ÎªD5ºÍÏòÁ¿Ê±ÖÓ[(Sx, 2), (Sy, 1), (Sz, 1)]£¬½ÚµãSxЭµ÷д²Ù×÷£¬²¢¸üжÔÏóºÍÏòÁ¿Ê±ÖÓ¡£

´ÓÉÏÃæµÄ¹ý³ÌÖпÉÒÔ¿´³ö£¬ÔÚ½Úµã±È½Ï¶àÇÒÇé¿ö¼«¶Ëʱ£¬ÏòÁ¿Ê±ÖÓÁбí»áÔö³¤£¬Dynamo¶Ô´Ë²ÉÓÃʱÖӽضϷ½°¸À´½â¾ö´ËÎÊÌ⣬¼´(node, counter)¶Ô´øÓÐʱ¼ä´Á£¬ÔÚÊýÄ¿´ïµ½ãÐÖµ£¨±ÈÈ磺10£©Ê±£¬½«×îÔçµÄÒ»¶Ô´ÓÏòÁ¿Ê±ÖÓÖÐɾ³ý¡£

4¡¢¹ÊÕϼì²â

£¨1£©Ring Membership

ÿ¸ö½ÚµãÆô¶¯Ê±´æ´¢×Ô¼ºÔÚ»·ÉϵÄÓ³ÉäÐÅÏ¢²¢³Ö¾Ã»¯µ½´ÅÅÌÉÏ£¬È»ºóÿ¸ö½Úµãÿ¸ôÒ»ÃëËæ»úÑ¡ÔñÒ»¸ö¶ÔµÈ½Úµã£¬Í¨¹ýGossipЭÒé´«²¥½ÚµãµÄÓ³ÉäiÐÅÏ¢£¬×îÖÕÿ¸ö½Úµã¶¼ÖªµÀ¶ÔµÈ½ÚµãËù´¦Àí·¶Î§£¬¼´Ã¿¸ö½Úµã¶¼¿ÉÒÔÖ±½Óת·¢Ò»¸ökeyµÄ¶Á/д²Ù×÷µ½ÕýÈ·µÄÊý¾Ý¼¯½Úµã£¬¶ø²»ÐèÒª¾­¹ýÖмä·ÓÉ»òÕßÌø¡£

£¨2£©External Discovery

Èç¹ûÈ˹¤·Ö±ðÍùDynamo»·ÖмÓÈë½ÚµãAºÍB£¬ÔòRing Membership²»»áÁ¢¼´¼ì²âµ½ÕâÒ»±ä»¯£¬¶ø³öÏÖÔÝʱÂß¼­·ÖÁѵÄDynamo»·£¨AºÍB¶¼ÈÏΪ×Ô¼ºÔÚ»·ÖУ¬µ«ÊÇ»¥Ï಻֪µÀ¶Ô·½´æÔÚ£©¡£DynamoÓÃExternal DiscoveryÀ´½â¾öÕâ¸öÎÊÌ⣬¼´ÓÐЩDynamo½Úµã³äµ±ÖÖ×Ó½ÚµãµÄ½ÇÉ«£¬ÔÚ·ÇÖÖ×Ó½ÚµãÖÐÅäÖÃÖÖ×Ó½ÚµãµÄIP£¬ËùÓзÇÖÖ×ӽڵ㶼ÓëÖÖ×Ó½ÚµãЭµ÷³ÉÔ±¹ØÏµ ¡£

£¨3£©Failure Detection

Dynamo²ÉÓÃÀàGossipЭÒéÀ´ÊµÏÖÈ¥ÖÐÐÄ»¯µÄ¹ÊÕϼì²â£¬Ê¹ÏµÍ³ÖеÄÿ¸ö½Úµã¶¼¿ÉÒÔÁ˽âÆäËü½ÚµãµÄ¼ÓÈëºÍlikai

5¡¢¹ÊÕÏ´¦Àí

´«Í³µÄQuorum£¬ÔÚ½Úµã¹ÊÕÏ»òÕßÍøÂç¹ÊÕÏÇé¿öÏ£¬ÏµÍ³²»¿ÉÓá£ÎªÁËÌá¸ß¿ÉÓÃÐÔ£¬Dynamo²ÉÓÃSloppy QuorumºÍHinted Handoff£¬¼´ËùÓжÁд²Ù×÷ÓÉÊ×Ñ¡ÁбíÖеÄǰN¸ö½¡¿µ½ÚµãÖ´ÐУ¬¶ø·¢Íù¹ÊÕϽڵãµÄÊý¾Ý×öºÃ±ê¼Çºó±»·¢Íù½¡¿µ½Úµã£¬¹ÊÕϽڵãÖØÐ¿ÉÓÃʱ»Ö¸´¸±±¾¡£

Èçͼ2ËùʾÖÐDynamoÅäÖÃNΪ3¡£Èç¹ûÔÚд¹ý³ÌÖнڵãAÔÝʱ²»¿ÉÓã¨Down»òÎÞ·¨Á¬½Ó£©£¬Ôò·¢ÍùAµÄ¸±±¾½«±»·¢Ë͵½½ÚµãD£¬·¢µ½DµÄ¸±±¾ÔÚÆäԭʼÊý¾ÝÖÐÓÐÒ»¸öhintÒÔ±íÃ÷½ÚµãA²ÅÊǸ±±¾µÄÔ¤ÆÚ½ÓÊÕÕߣ¬D½«¸±±¾Êý¾Ý±£´æÔÚÒ»¸öµ¥¶ÀµÄ±¾µØ´æ´¢ÖУ¬ÔÚ¼ì²âµ½A¿ÉÓÃʱ£¬D³¢ÊÔ½«¸±±¾·¢µ½A£¬Èç¹û·¢Ëͳɹ¦£¬D»á½«Êý¾Ý´Ó±¾µØ´æ´¢ÖÐɾ³ý¶ø²»»á½µµÍϵͳÖеĸ±±¾×ÜÊý¡£

Ò»¸ö¸ß¿ÉÓõĴ洢ϵͳ¾ß±¸´¦ÀíÕû¸öIDC¹ÊÕÏ£¨¶Ïµç¡¢×ÔÈ»ÔÖº¦¡¢ÍøÂç¹ÊÕϵƣ©µÄÄÜÁ¦ÊǷdz£ÖØÒªµÄ£¬Dynamo¾Í¾ß±¸´ËÄÜÁ¦¡£Dynamo¿ÉÒÔÅäÖóɿç¶à¸öIDC¸´ÖƶÔÏ󣬼´keyµÄÊ×Ñ¡ÁбíÓÉ¿ç¶à¸öIDCµÄ½Úµã×é³É£¬ÕâЩIDCÖ®¼äÓɸßËÙרÏßÁ¬½Ó£¬¿ç¶à¸öIDCµÄ¸´ÖÆ·½°¸Ê¹µÃDynamoÄܹ»´¦ÀíÕû¸öIDC¹ÊÕÏ¡£

´ËÍ⣬ΪÁË´¦ÀíÔÚhinted¸±±¾Òƽ»»áÔ¤ÆÚ½Úµã֮ǰ¸Ã¸±±¾²»¿ÉÓõÄÇé¿ö£¬DynamoʵÏÖÁËanti-entropyЭÒéÀ´±£³Ö¸±±¾Í¬²½£¬ÎªÁ˸ü¿ìµÝ¼ì²â¸±±¾Ö®¼äµÄ²»Ò»ÖÂÐÔ²¢¼õÉÙ´«ÊäÁ¿£¬Dynamo²ÉÓÃMerkleTree¡£

6¡¢À©ÈÝ/ËõÈÝ

£¨1£©À©ÈÝ

µ±Ò»¸öнڵãX¼ÓÈ뵽ϵͳÖÐʱ£¬ÆäµÃµ½Ò»Ð©Ëæ»ú·ÖÅäµ½»·ÉϵÄtoken£¬½ÚµãX»á¸ºÔð´¦ÀíÒ»¸ökey range£¬¶øÕâЩkeyÔÚ½ÚµãX¼ÓÈëǰÓÉÏÖÓеÄһЩ½Úµã¸ºÔ𣬵±½ÚµãX¼ÓÈëºó£¬ÕâЩ½Úµã½«ÕâЩkey´«µÝ¸ø½ÚµãX¡£ÒÔͼ2ΪÀý£¬¼ÙÉè½ÚµãXÌí¼Óµ½»·ÖÐAºÍBÖ®¼äµÄλÖ㬵±X¼ÓÈ뵽ϵͳÖÐºó£¬Æä¸ºÔðµÄkey·¶Î§Îª(F, G], (G, A], (A, X]£¬½ÚµãB¡¢CºÍD¶¼¸÷×ÔÓÐÒ»²¿·Ö²»ÔÙÐèÒª´æ´¢µÄkey·¶Î§£¬¼´ÔÚX¼ÓÈëǰ£¬B¸ºÔð(F, G], (G, A], (A, B]£»C¸ºÔð(G, A], (A, B], (B, C]£»D¸ºÔð(A, B], (B, C], (C, D]£¬¶øÔÚX¼ÓÈëºó£¬B¸ºÔð(G, A], (A, X], (X, B]£»C¸ºÔð(A, X], (X, B], (B, C]£»D¸ºÔð(X, B], (B, C], (C, D]¡£½ÚµãB¡¢CºÍDÔÚÊÕµ½½ÚµãX¼ÓÈëµÄÈ·ÈÏÐźźó³ö·¢ÕâÒ»¹ý³Ì¡£

£¨2£©ËõÈÝ

µ±´ÓϵͳÖÐɾ³ýÒ»¸ö½Úµãʱ£¬keyµÄÖØÐ·ÖÅäÇé¿öÓë²½Ö裨1£©ÕýºÃÏà·´¡£

7¡¢¶Á/д²Ù×÷

¶ÁÈ¡ºÍдÈëÓÉÇëÇóЭµ÷×é¼þÖ´ÐУ¬Ã¿¸ö¿Í»§¶ËÇëÇó¶¼½«µ¼ÖÂÔÚ´¦Àí¸ÃÇëÇóµÄ½ÚµãÉÏ´´½¨Ò»¸ö״̬»ú£¬Ã¿¸ö״̬»ú¶¼°üº¬ÒÔÏÂÂß¼­£º
±êʶ¸ºÔðÒ»¸ökeyµÄ½Úµã£»

·¢ËÍÇëÇó£»

µÈ´ý»ØÓ¦£»

¿ÉÄܵÄÖØÊÔ´¦Àí£»

¼Ó¹¤ºÍ°ü×°·µ»Ø¿Í»§¶ËÏìÓ¦¡£

ÿ¸ö״̬»úʵÀýÖ»´¦ÀíÒ»¸ö¿Í»§¶ËÇëÇó£¬Èç¹ûÊÇÒ»¸ö¶ÁÇëÇó£¬Ôò״̬»úÈçÏ£º

·¢ËͶÁÇëÇóµ½ÏàÓ¦½áµã£»

µÈ´ýËùÐèµÄ×îµÍÊýÁ¿µÄÏìÓ¦£»

Èç¹ûÔÚ¸ø¶¨µÄʱ¼äÄÚÊÕµ½µÄÏìӦ̫ÉÙ£¬ÔòÇëÇóʧ°Ü£»

·ñÔòÊÕ¼¯ËùÓÐÊý¾ÝµÄ°æ±¾£¬²¢È·¶¨Òª·µ»ØµÄ°æ±¾£»

Èç¹ûÆôÓð汾ºÏ²¢£¬ÔòÖ´ÐÐÓ﷨Эµ÷²¢Éú³ÉÒ»¸ö¶Ô¿Í»§¶Ë²»Í¸Ã÷µÄдÉÏÏÂÎÄ£¬ÆäÖаüº¬Ò»¸öÄÒÀ¨ËùÓа汾µÄÏòÁ¿Ê±ÖÓ¡£

·µ»Ø¶ÁÈ¡ÏìÓ¦¸ø¿Í»§¶Ëºó£¬×´Ì¬»úµÈ´ýÒ»¶Îʱ¼äÒÔ½ÓÊÜÈκÎÐü¶øÎ´¾öµÄÏìÓ¦£¬Èç¹ûÈκÎÏìÓ¦·µ»ØÁ˹ýʱµÄ°æ±¾£¬ÔòЭµ÷Ô±ÓÃ×îа汾¸üÐÂÕâЩ½Úµã£¬ÒÔÍê³É¶ÁÐÞ¸´¡£

дÇëÇóͨ³£¸úËæÔÚ¶ÁÇëÇóÖ®ºó£¬ÔòЭµ÷Ô±ÓɶÁ²Ù×÷´ð¸´×î¿ìµÄ½Úµã³äµ±£¬ÕâÖÖÓÅ»¯ÄÜÌá¸ß¶ÁдһÖÂÐÔ¡£

ËÄ¡¢½â¾öÎÊÌâ

1¡¢¿ÉÓÃÐÔ

ÍêȫȥÖÐÐÄ»¯£¬ÎÞµ¥µã£¬ÓÀÔ¶¿Éд¡£

2¡¢ÉìËõÐÔ

´øÐéÄâ»ú½ÚµãµÄÒ»ÖÂÐÔhash£ºÒ»ÖÂÐÔhash½â¾öÀ©ÈÝ/ËõÈÝÎÊÌ⣬ÐéÄâ½Úµã½â¾ö»úÆ÷ÒìÖÊÐÔÎÊÌâ¡£

3¡¢¿É¿¿ÐÔ

Êý¾Ý¸´Öƶà·Ý¸±±¾£¬ÓÃÏòÁ¿Ê±ÖÓ½â¾ö°æ±¾ºÏ²¢ÎÊÌâ¡£

4¡¢¿ÉÅäÖÃ

ƽºâÐԿɵ÷£¬¼´¸ù¾Ý£¨N,W,R£©Ä£ÐÍÆ½ºâ¿ÉÓÃÐÔºÍÒ»ÖÂÐÔ£¬½¨ÒéÄ£ÐͲÎÊýΪ£¨3,2,2£©¡£

   
3537 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

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

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

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þ
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS


ÃæÏòÓ¦Óõļܹ¹Éè¼ÆÊµ¼ù
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Èí¼þ¼Ü¹¹Ê¦¡ª¸ß¼¶Êµ¼ù
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù
SOAÌåϵ½á¹¹Êµ¼ù


Èñ°²¿Æ¼¼ Èí¼þ¼Ü¹¹Éè¼Æ·½·¨
³É¶¼ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£Æû³µ ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
±±¾© Èí¼þ¼Ü¹¹Éè¼Æ
ÉϺ£ Èí¼þ¼Ü¹¹Éè¼Æ°¸ÀýÓëʵ¼ù
±±¾© ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ÉîÛÚ ¼Ü¹¹Éè¼Æ·½·¨°¸ÀýÓëʵ¼ù
ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ¡ª¸ß¼¶Êµ¼ù