µ±Ç°Î»ÖãºÖ÷Ò³ > ²é¿´ÄÚÈÝ

µ¯ÐÔÉìËõ¹¤³ÌÓÅ»¯Ì½ÃØ

·¢²¼Ê±¼ä£º2021-07-01 00:00| ÓРλÅóÓѲ鿴

¼ò½é£º±¾ÎĽ«´ø´ó¼ÒÒ»Æð̽Ë÷£¬¹ØÓÚÌÚѶÔƵ¯ÐÔ¼ÆËã²úÆ·µÄ¼¼ÊõÏà¹ØµÄ˼¿¼×ܽᡣ ÔÚ¸÷Ðи÷Òµ¶¼Ò»¶¨³Ì¶ÈÉÏÊÊÓÃÕâ¾ä»°£ºThose who talk don¡¯t know, and those who know don¡¯t talk. ¡ª¡ª ÎÒÏ£ÍûÄã³ÉΪÄǸö¶®µÃÔ­Àí¡¢ÄÜ×ö³ÉÊ»¹ÀÖÓÚ·ÖÏíµÄ¸ßÊÖ¡£ 0x00 µ¯ÐÔ¼ÆËãÏà¹Ø±³¡­¡­

±¾ÎĽ«´ø´ó¼ÒÒ»Æð̽Ë÷£¬¹ØÓÚÌÚѶÔƵ¯ÐÔ¼ÆËã²úÆ·µÄ¼¼ÊõÏà¹ØµÄ˼¿¼×ܽᡣ

ÔÚ¸÷Ðи÷Òµ¶¼Ò»¶¨³Ì¶ÈÉÏÊÊÓÃÕâ¾ä»°£ºThose who talk don¡¯t know, and those who know don¡¯t talk.

¡ª¡ª ÎÒÏ£ÍûÄã³ÉΪÄǸö¶®µÃÔ­Àí¡¢ÄÜ×ö³ÉÊ»¹ÀÖÓÚ·ÖÏíµÄ¸ßÊÖ¡£

0x00 µ¯ÐÔ¼ÆËãÏà¹Ø±³¾°½éÉÜ

ÔƼÆËãµ×²ãÀë²»¿ªÐéÄ⻯¼¼Êõ£¬ÐéÄ⻯ÈÃÈËÃÇÓа²È«¸ÐºÍÐÒ¸£¸Ð£¬Ëü½â¾öÁË×ÊÔ´µÄ°²È«¸ôÀëºÍ¸ßЧÀûÓÃÁ½´óÎÊÌâ¡£²Ù×÷ÐéÄâ»ú£¬¾ÍÏñÔÚÓ¾µÀÀïÓÎÓ¾£¬ÒòΪÓе²²¨×èÀ˵ÄÓ¾µÀÏߣ¬ÎÒÃÇÎÞÐè¹ØÐÄÅÔ±ßÓ¾µÀÀïµÄÈËÊǺÎÖÖÓ¾×Ë·­ÌÚ³ö¶à´óË®»¨£¬¶øÎÒÃÇ×ÜÊÇ×ÔÓÉ×ÔÔÚ£¬·Â·ðÓµÓÐÁËÕû¸öÓ¾³Ø¡£

Ó¾µÀÏß¡ª¡ª»ùÓÚ¸¡±êµÄÓ¾³ØÐéÄ⻯¼¼Êõ

ÌÚѶÔƵ¯ÐÔÉìËõ£¨AutoScaling£©ÊôÓÚIaaS²ãµÄºËÐļÆËã²úÆ·£¬²¢ºÍÖܱßÏà¹Ø²úƷͨÁ¦Ð­×÷£¬ÎªÓû§¸ßЧ¹ÜÀíÔÆ·þÎñÆ÷¼¯ÈºµÄÀ©ËõÈݻ¡£ÌÚѶÔÆ»ùÓÚKVMµÄÐéÄ⻯¼¼Êõ½â¾öÁ˵¥½ÚµãÎïÀí»úÉÏÐéÄâ»úµÄ¹ÜÀí£¬¶øÆäÉϵÄVStationµ÷¶ÈϵͳÍêÃÀ½â¾öÁË´ó¹æÄ£·Ö²¼Ê½µÄÎïÀí»ú¼¯ÈºµÄ¹ÜÀí¡¢ÐéÄâ»ú×ÊÔ´ÒÔ¼°ÈÎÎñµÄµ÷¶È¡¢¶¯Ì¬Ç¨ÒƵȺËÐÄÎÊÌ⣬²¢Ö±½ÓÖ§³ÖÁËÔÆ·þÎñÆ÷²úÆ·£¨CVM£©µÄʵÏÖ£¬Ò²ÊÇÉϲã¼ÆËã²úÆ·¡ª¡ªµ¯ÐÔÉìËõ¡¢ÇáÁ¿Ó¦Ó÷þÎñÆ÷£¨Lighthouse£©¡¢ÅúÁ¿¼ÆË㣨Batch£©µÈÔÆÉÏÍйܼÆËãÀà²úÆ·µÄ¼áʵ»ù´¡¡£µ¯ÐÔÉìËõÕûºÏÁËÔÆ·þÎñÆ÷¡¢¸ºÔؾùºâ£¨CLB£©¡¢ÔƼà¿ØµÈ¶àÏî·þÎñµÄºËÐÄÄÜÁ¦£¬ÈÃÓû§·½±ãµØͨ¹ýÔÆAPI/¿ØÖÆ̨ϵͳÁé»îµØ¹ÜÀíÔÆ·þÎñÆ÷¼¯Èº£¬¹²Í¬ÎªÓû§µÄÒµÎñ¶¯Ì¬À©ËùÈݱ£¼Ý»¤º½¡£Í¬Ê±£¬µ¯ÐÔÉìËõ»¹ÊÇÌÚѶÔÆÈÝÆ÷·þÎñ£¨TKE£©µÄ»ù´¡Ö§³Ö¡£¸÷¸öÖܱ߷þÎñ¹Øϵ£¬ÈçÏÂͼËùʾ¡£

ÌÚѶÔƵ¯ÐÔÉìËõAutoScaling¼°ÖܱßÏà¹Ø¼ÆËã²úÆ·

VStation×÷Ϊ¼ÆËã²úÆ·CVMµÄµ×²ã·Ö²¼Ê½µ÷¶Èϵͳ£¬ÆäÔÚ×ÊÔ´¹ÜÀíά¶ÈÉϵÄʵ¼ÊЧ¹ûÊÇ´ó´óʤ³ö±ËʱµÄOpenStackµÄ¡£ÆäÖÐÓÐÈô¸ÉÔ­Òò£¬×îÖØÒªÌåÏÖÔÚÆä×é¼þ¼äµÄͨÐÅ·½Ê½ÉÏ¡£¶þÕßËäÈ»¶¼ÓÃÁËÏûÏ¢¶ÓÁУ¬µ«OpenStack½«ÆäÊÓΪRPCµÄʵÏÖ·½Ê½£¬¸÷¸ö×é¼þ±Ë´ËͨѶЧÂʵͣ¬¶øÇÒ»¹Éæ¼°·þÎñ×¢²á·¢Ïֵȸ´ÔӵĹÜÀí£¬ÈçÓÒͼËùʾ¡£¶øVStationµÄ×é¼þͨÐÅÈç×óͼ£¬ÏûÏ¢¶ÓÁÐ×÷ΪÏûÏ¢×ÜÏߣ¬¶ø¸÷¸ö΢·þÎñ×é¼þÖ»ÐèÒª¹ØÐÄͬMQͨÐÅ£¬¶øÎÞÐè¹Ø×¢±Ë´ËµÄ´æÔÚ¡£

ÓëÆä˵VStationÊǶÀ±Ùõ辶µÄ´´ÐÂʵ¼ù£¬µ¹²»Èç˵ÊÇVStationµÄ×÷Õ߶ÔÏûÏ¢¶ÓÁÐÓÐןü¼ÓÉî¿ÌµÄÈÏÖªºÍÀí½â£¬°ÑÎÕÁËÏûÏ¢¶ÓÁеı¾ÖÊ¡£ÌÚѶÔƺóÐøµÄ²úÆ·µÈ£¬Ò²¶¼ÔÚÉè¼ÆÉϲ»Í¬³Ì¶È½è¼øÁËÕâÖÖÏûÏ¢×ÜÏßµÄģʽ¡£

VStationÏûÏ¢×Ü vs. OpenStackÔçÆÚµÄAllToAllͨѶ

µ¯ÐÔÉìËõ£¨AutoScaling£©£¬×÷ΪIaaS²ãµÄºËÐÄÍйܷþÎñ£¬ÆäÔËתÊÇ·ñÎȶ¨¸ßЧ£¬Ö±½ÓÌåÏÖÁËÔÆ·þÎñÉ̵ļ¼ÊõˮƽºÍרҵÐÔ£¬²¢»áÖ±½Ó·´Ó³ÎªÓû§¶ÔÔÆ·þÎñÉ̵IJúÆ·µÄÐÅÐÄ¡£¹ÙÍøµÄAS¼ò½é¿ÉÒÔ¸ÅÀ¨ÎªµäÐͳ¡¾°£º¡°Ï÷·åÌî¹È¡±¡ª¡ª¸ù¾ÝÒµÎñ¸ºÔض¯Ì¬µ÷Õû×ÊÔ´£¨ÔÆ·þÎñÆ÷¼¯Èº£©´óС£¬ÔÚÓÅ»¯×ÊÔ´³É±¾µÄͬʱ²»Ê§ÒµÎñµÄ¸ß¿ÉÓÃÐÔ£¨High Availibilitiy£©¡£µ«Æäʵ¶ÔÓÚ¼¯ÈºµÄÈÕ³£¹ÜÀí£¬Í¨¹ýµ¯ÐÔÉìËõÒ²ÊÇ¿ÉÒÔ¼«´óÌáÉýЧÂʵģ¬ËùÒÔÄÇôʲôʱºòÓÃASÄØ£¬´ð°¸ÊÇ£º

¡°Èç¹ûÄãµÄÒµÎñÐèÒª1̨ÒÔÉϵÄÔÆ·þÎñÆ÷£¬Äã¾Í¸Ã¿¼ÂÇÓÃASÁË¡£¡±

¹ÙÍøµÄAS¼ò½é¡ª¡ªÏ÷·åÌî¹È

µ¯ÐÔÉìËõ£¨AutoScaling£©Ö÷Òª½â¾öÁ˺áÏòˮƽÀ©Èݳ¡¾°ÏµÄÎÊÌ⣨scale out£©£¬¼´Í¨¹ýÔö¼ÓÔÆ·þÎñÆ÷ʵÀýÊýÀ´Ôö¼Óϵͳ·þÎñÄÜÁ¦¡£¾ÍÏñ¾Û²ÍÈËÊýÔö¼Óʱ£¬Ã¿ÀࣨÈȲˡ¢ÌðµãµÈ£©²Ë¶àÉÏÒ»·Ý²»Í¬µÄ£¬ÈËÔÙ¶àʱÉõÖÁ¼ÓÒ»¸öͬÑùµÄÕû×À£¬¶ø²»ÊÇÿ¸ö²Ë¶¼À´Ò»¸ö¡°´ó·ÝµÄ¡±£¬¼´Í¨¹ýʵÀý¸±±¾ºÍ¹æÄ£»¯À´ÌáÉýЧÂÊ£¬½µµÍ×ۺϳɱ¾¡£

ÒµÎñ¼Ü¹¹Öи÷¸ö×é¼þҪȫÃ棬¾ÍÏñ¾ÖÆøµÄÕý²Í

ÔÚÕæʵ³¡¾°ÖУ¬ÒµÎñ¼Ü¹¹ÊÇ°éËæÒµÎñ·¢Õ¹¶ø²»¶ÏÑݱäµÄ¡£

´ÓµÚÒ»½×¶ÎµÄµ¥Ìå·þÎñ×îС»¯ÑéÖ¤£º

µ½¶àÖնˡ¢¶àºǫ́·þÎñµÄ¶¯¾²²ð·Ö£º

ÔÙµ½¸ü¸´ÔÓµÄ΢·þÎñ»¯£º

ÌÚѶÔƵÄÔÆ·þÎñÆ÷£¨CVM£©ºÍµ¯ÐÔÉìËõ£¨AutoScaling£©½«Åã°éÓû§ÒµÎñ·¢Õ¹µÄÿһ¸ö½×¶Î£¬Ò»Æð¼ûÖ¤Óû§µÄÒµÎñºÍ¼Ü¹¹µÄÈÕÐÂÔÂÒì¡£

µ±È»£¬µ¯ÐÔÉìËõ£¨AutoScaling£©·þÎñ±¾ÉíÒ²ÊdzÖÐøÐø¸ßËÙÔö³¤µÄÒµÎñ£º

ÌÚѶÔÆÔçÆÚ£¨2018-2019£©µ¯ÐÔÉìËõµÄÀ©ËõÈݻÊýÁ¿²¿·Öͳ¼Æ

µ¯ÐÔÉìËõ£¨AutoScaling£©×÷ΪIaaS²ã»ù´¡·þÎñ£¬Æä±¾Éí×Ôµ®ÉúÖ®³õ¾ÍÒ»Ö±¸ßËÙÔö³¤£¬ÆäµäÐÍÖØÒª¿Í»§È磺³¬²ÎÊý¡¢Ð¡ºìÊé¡¢VIPKid¡¢×÷Òµ°ï¡¢Ã¢¹ûTV¡¢Àó֦΢¿Î¡¢Supercell¡¢EpicGameµÈ£¬¸²¸Ç¸÷¸öÐÐÒµ¡£ËüµÄÓû§Á¿ºÍÉìËõ»î¶¯ÊýÖÁ½ñÈÔ±£³Ö³ÖÐøÔö³¤£¬ÒÑÖ§³Ö×ÅÓû§ÉÏ°ÙÍòºËÊýµÄ¼¯Èº¹ÜÀí¡£

µ¯ÐÔÉìËõ£¨AutoScaling£©µ½µ×ΪÓû§½â¾öÁËʲôÎÊÌâÄØ£¿¡¶The Art of Scalability¡·ÊéÖÐÌáµ½µÄÀ©Õ¹cube£¨ÒµÎñ¡¢¸±±¾¡¢Êý¾Ý·ÖƬά¶È£©¹ãΪÈËÖª£¬²»¹ýÊéÖеÄ×óͼÌáµ½µÄ³£¼û·½·¨ÂÛ»òÉè¼ÆģʽÆäʵ¸ü¼ÓÓÐÖ¸µ¼ÒâÒ壬ÔÚÎȶ¨£¨¸ß¿ÉÓÃÐÔ£©¡¢¿ìËÙÉÏÏߣ¨Time-to-Market£©ºÍ³É±¾½ÚÊ¡ÕâÈý´ó×·ÇóÖеÄȨºâÆäʵ²ÅÊǹ¤³ÌÖÐÕæÕýµÄÒÕÊõ£¬¶øÉè¼ÆÉϵĺáÏòÀ©Õ¹£¨Scale Out£©ÊÇͬʱ½â¾öÕâÈý¸öÎÊÌâµÄΪÊý²»¶àµÄ·½·¨Ö®Ò»£¨ÁíÁ½¸öÊÇÒì²½Éè¼ÆºÍ×Ô¶¯»¯£©¡£

Tips: ÕæʵµÄ¿Í¹ÛÊÀ½çûÓÐËùνͬ²½£¬Ö»ÓÐÒì²½£»Ã»ÓиüУ¬Ö»ÓдòÆƺóµÄÖؽ¨¡£Ëùν¡°Í¬²½¸üС±ÄÇÖ»²»¹ýÊÇÈËÃǵĻÃÏ롣ϵͳÉè¼ÆʱÊÔ×ŶàÓµ±§Ê¼þÇý¶¯£¨event-driven£©ºÍ²»¿É±äÐÔ£¨immutability£©°É£¬Éú»î»á¼òµ¥²»ÉÙ¡£

µ¯ÐÔ £¨Elasticity£©¡ª¡ª As the extension, so the force. µ¯ÐÔ¾ÍÊÇÎïÌåÊܵ½ÍâÁ¦Ê±±äÐΣ¬²¢ÇÒµ±¸ÃÍâÁ¦½â³ýʱ»Ö¸´Æä³õʼÐÎ×´µÄÄÜÁ¦¡£¹ÌÌåÎïÌåÊܵ½ÍâÁ¦Ê±½«±äÐΡ£Èç¹û²ÄÁÏÊǵ¯ÐԵģ¬µ±ÕâЩÁ¦±»ÒƳýʱ£¬ÎïÌ彫·µ»Øµ½Æä³õʼÐÎ×´¡£°´¹ãÒåºú¿Ë¶¨ÂÉ£¬Ó¦Á¦£¨stress£©´óСºÍÓ¦±ä£¨strain£©³ÉÕý±È¡£

µ¯ÐÔÉìËõ£¨ÉõÖÁÕû¸öÔÆ·þÎñ£©½â¾öµÄ×î¹Ø¼üÎÊÌâÊÇ£ºÈÃÒµÎñÎÈÎȵػîÏÂÈ¥£¬³ÖÐø²úÉúÉç»á¼ÛÖµ¡£ÊµÏÖʱÁ½¸öºËÐÄ˼Ïë¹á³¹Ê¼ÖÕ£º

µÚÒ»£¬Óб¸ÎÞ»¼£¨Design for failure, and nothing will fail£©.

µÚ¶þ£¬Í³Ò»¾ö²ß£¬Áé»îÖ´ÐС£¶¥²ãÖ¸ÁîÔÚ¸÷¸öÖ´Ðв㼶¼ä¡°ÐÐÕþ·¢°ü¡±¡£ÖصãÔÚÓÚ¹ãÒåµÄ»úÖÆ£¨machanism£©²ßÂÔ£¨strategy£©·ÖÀ룬strategy¿ÉÒÔÊǾö²ß/²ßÂÔ/Éè¼Æ/µ÷¶È/Ëã·¨£¬mechanism¿ÉÒÔÊÇ»úÖÆ/Ö´ÐÐ/¼ÆËã/IO/ÈÎÎñʵÏÖ/·þÎñµÈ¡£

½ÓÏÂÀ´½«¾ßÌå˵Ã÷¡£

0x01 µ¯ÐÔÉìËõÆ¿¾±¼°·½°¸·ÖÎö

ÉìËõ»î¶¯¡ª¡ªÈÃÒµÎñ»Ö¸´µÄ¡°µ¯Á¦¡±¡£µ¯ÐÔÉìËõµÄÉìËõ»î¶¯°üÀ¨À©ÈÝ¡¢ËõÈÝ¡¢²»½¡¿µÊµÀýÌæ»»µÈµÈ¡£µ¯ÐÔÉìËõµÄºËÐľÍÊÇÉìËõ»î¶¯µÄÉè¼ÆʵÏÖ¼°ÆäÉúÃüÖÜÆڵĹÜÀí¡£

ÉìËõ»î¶¯µÄ¸´ÔÓ¶ÈÈçºÎ£¿¿ÉÒÔÈÏΪÿ¸öÉìËõ»î¶¯ÊÇÓÉÈô¸É¸ö×Ó²½Ö裨Step£©×é³ÉµÄ£¬ÍùÍùÿ¸öStep¶¼Éæ¼°ÖÁÉÙÒ»´ÎµÄÍⲿ΢·þÎñ»òAPIµ÷Ó㬿ÉÒÔ¼òµ¥µØÀí½âΪһ´ÎÒì²½IOÈÎÎñ£¬ÆäÖмÈÓд®Ðеģ¬Ò²ÓбØÐë²¢Ðеģ¬±Ë´ËµÄµ÷ÓÃÁ´Â·Ò²ÓÉÔËÐÐʱµÄ½á¹û¶¯Ì¬µ÷Õû¡£

ÉìËõ»î¶¯µÄ²½ÖèÅäÖã¨Ëõ¼õʾÒ⣩

µ±È»£¬ÕæʵµÄ²½ÖèÒѾ­ÊÇͼÖеÄÈô¸É±¶£¬´ïµ½ÉÏ°Ù²½£¬¸´ÔÓ¶ÈÒ²¸üÉÏÁËÒ»¸ö¼¶±ð¡£²½Öè·ÖΪ»î¶¯¼¶±ðµÄ²½Ö裨ÏÂͼÀ¶È¦£©ºÍʵÀý¼¶±ð£¨ÏÂͼÂÌȦ£©µÄ²½Ö裬ÈçͼËùʾ¡£¼òµ¥ËãÏ£¬Èç¹û100¸öÉìËõ»î¶¯£¬Ã¿¸öÀ©ÈÝ100̨ÔÆ·þÎñÆ÷µÄ»°£¬ÄÇôͬһʱ¿Ì£¨»ò¼«¶Ìʱ¼äÄÚ£©£¬°´Í¼ÖС°×îÌìÕæµÄ¡±Çé¿öÏ£¬Ò²ÒªÉÏÍò¸öIOÇëÇó£¬Êµ¼ÊÖеIJ½ÖèÊýÁ¿Æäʵ»¹Òª´óÁ½¸öÊýÁ¿¼¶¡£ËùÒÔ£¬ÉìËõ»î¶¯£¬¼´µ¯ÐÔÉìËõÓᄈϵġ°Ö´ÐÐÈÎÎñ¡±£¬ÆäʵÏÖÄѶȺ͸´ÔÓ¶ÈÊǾ߱¸Ò»¶¨Í¨ÓÃÐԵģº¼´ºǫ́Òì²½ÈÎÎñÁ÷³Ì¡¢¶à×é¼þ/΢·þÎñ¼ä±Ë´Ëµ÷Óá¢ÒµÎñÏà¹ØµÄ¸´ÔÓ·ÖÖ§Âß¼­Åжϡ¢ÈÎÎñµÄ¶à״̬£¨Òì³£/ÖØÊÔ/È¡Ïû£©¡¢Ïà¹ØÉæ¼°µÄÔªÊý¾ÝÁ¿´ó¡¢Óû§ÈÎÎñ¼äµÄÉÏÏÂÎĸôÀ룬ÒÔ¼°²¢·¢ÐÔÄܺÍÎȶ¨ÐÔ¶¼ÒªÇ󼶸ߡ£

Èç¹ûÄã×ö¹ýºǫ́µÄÒµÎñ¿ª·¢£¬ÉÏÊöÇé¾°ºÍÐèÇóÊÇ·ñ¸Ð¾õÇ×ÇÐÊìϤÄØ£¿

µ¥¸öÉìËõ»î¶¯µÄ×Ó²½ÖèÀàËÆÏîÁ´µÄÀâ½Ç

¿ÉÒÔ˼¿¼Ï£ºÕâÀàÈÎÎñÊǼÆËãÃܼ¯ÐÍ£¨Compute Bound£©»¹ÊÇIOÃܼ¯ÐÍ£¨I/O Bound£©ÄØ£¿

0x02 ¿ò¼ÜÉè¼Æ¼°Ï¸½Ú½éÉÜ

ʵÏÖͳһµÄ¾ö²ßÉè¼Æ£¬Í¨³£ÐèÒªÈÎÎñÁ÷WorkFlowµÄ²½Ö趨ÒåÀ´Íê³É¡£ÄÇôÎÒÃDzο¼ÏÂͼ£¬¹Û²ìÏÂÕæÕýµÄFlowʵ¼ÊÊÇʲôÑù×Ó£º

Ï¿¹ÈÖеĺÓÁ÷£¬ÕæʵÊÀ½çµÄflow

ÎÒÃDz»ÄÑ·¢ÏÖ£º

1¡¢ÏÖʵµÄFlow²»»áÄæÁ÷£¬ÓÀÔ¶ÏòÇ°£¬Ã»ÓÐrollback£¨»Ø¹ö£©£»

2¡¢ÏÖʵµÄFlow²»ÊÇÒ»ÌõÏߣ¬±ØÓÐÈô¸ÉÖ§Á÷£¬¶øËùνµÄÖ÷Á÷²»¹ýÊÇ×î´ó£¨¸ÅÂÊÁ÷¾­£©µÄÒ»Ö§£»

3¡¢ÏÖʵµÄFlowÖеÄ·¾¶ÖеÄÿһ¸öµã£¬¶¼ÊǶÀÒ»ÎÞ¶þµÄ£¬ÓÐ×Ô¼ºµÄÉÏÏÂÎÄ¡£²»¿ÉÄÜÁ½´Î̤ÈëͬһÌõºÓÁ÷¡£

ËùÒÔ×ܽ᣺ÓôøContextµÄDAG£¨ÓÐÏòÎÞ»·Í¼£©³éÏóFlow¡£²»ÒªÓÃÀàËÆrollback/cleanup¡¢retry¡¢exceptionÕâЩ¸ÅÄîÀ´ÊµÏֵײã¿ò¼Ü£¬ÕâЩ¸´ÔӵĸÅÄî¿ÉÒÔÓУ¬²»¹ý×îºÃ·ÅÔÚ¸üÉϲã³éÏó¡£

ÁíÍ⣬ҪÞðÆúÆÓËع¢Ö±µÄÏßÐÔ˼ά£¬Ïà±È³É¹¦£¨Success£©»òʧ°Ü£¨Failure£©£¬¹Ø×¢¡°ÏÂÒ»²½È¥ÄÄ¡±£¨Next£©ÒÔ¼°¡°¸É¾»µØÍê ³É¡±£¨Done£©¸ü¼ÓÖØÒª¡£ÒòΪǰ¶þÕß¿ÉÄܶ¼ÓкܶàÇé¿ö£¬±ÈÈçʧ°ÜµÄÔ­ÒòºÍ½á¹ûÒ»¶¨ÓжàÖÖ£¬ÈÎÎñµÄ³É¹¦»òʧ°Ü¶¼Ö»ÊÇDAGÀïµÄÒ»ÌõPath¶øÒÑ£¬Ã»Óб¾ÖʲîÒì¡£·ÇºÚ¼´°×µÄ¶þÔª¾ö²ßÍùÍùÊǼ«²»³ÉÊìÇÒÊÊÓ÷¶Î§ÏÁÕ­µÄ¡£

µ±È»£¬Èç¹û֮ǰÊìϤÏßÐԵĻعö˼ά·½Ê½£¬Í¨¹ý¼òµ¥µÄת»»£¬¿ÉÒÔ½«Á÷³Ì¹éÔ¼µ½DAGÐÎʽµÄÃèÊö£¬Èçͼ£ºS2ÊÇS1µÄ»Ø¹öÇåÀí²½Ö裬S4ÊÇS3µÄ»Ø¹öÇåÀí²½Ö裬×ó²àÊÇÏßÐԻعöģʽ£¬ÓÒ²àÊǹéÔ¼ºóµÄͬ¹¹DAG¡£

DAGÃèÊöÒµÎñÁ÷³Ì

Íê³ÉÁËͳһµÄ¾ö²ßÉè¼Æ£¬ÔÙÀ´¿´¿´Áé»î¸ßЧµÄÖ´ÐС£ÒÔϳ¡¾°ÊÇÈËÓëÈËÖ®¼ä±È½ÏÓÅÑŵÄ×éÖ¯·½Ê½£¬¹ÜÏÒ½»ÏìÀÖ¶ÓµÄģʽ£º

symphony orchestra

Ò»¸öÖ¸»Ó£¬Èô¸É¸öÀÖÆ÷£¨ÏÒÀÖ¡¢Ä¾¹Ü¡¢Í­¹Ü¡¢´ò»÷£©×飬´ó¼ÒÒ»ÆðͨÁ¦ºÏ×÷Íê³ÉÒ»´ÎºÍгµÄÑÝ×àÁ÷³Ì¡£

¶ÔÓÚÕû¸öÀÖÍÅ£¬Ö¸»ÓÊÇ´óÄÔ£¨CPU Bound£©£¬¸÷¸ö×éµÄÀÖʦÊÇÊֽţ¨IO Bound£©£»¶ÔÓÚÖ¸»ÓÀ´Ëµ£¬ËûÒ²ÓÐ×Ô¼ºµÄ´óÄԺͻÓÎèÖ¸»Ó°ôµÄË«ÊÖ¡£ËûÃǶ¼ÊÇActor£¬ÇÒ»¥ÏàÓÐÓÅÑŵÄͨѶ·½Ê½¡£

Ö¸»ÓÒ»¸ö¿´ÆðÀ´ÊÇÑÝ×àµÃÇéÐ÷½Ú×à´óÄÔ£¬µ«Ëû²¢Ã»ÓÐÖ±½ÓÏ´ïÃüÁÿ¸öÀÖʦ£¬ÄÇô±³ºóÕæÕý¸ßЧµÄ×éÖ¯Á¦Á¿ÓÖÊÇʲôÄØ£¿

Ë­ÊÇÕæÕýµÄ¿ØÖÆ£ºÖ¸»Ó vs. ÇúÆ×

ÏÂͼÊǵ¯ÐÔÉìËõ£¨AutoScaling£©µÄºǫ́¼Ü¹¹Í¼¼òµ¥Ê¾Ò⣺´ÓAPIµ½ÈÎÎñµ÷¶ÈÆ÷¡¢¶¨Ê±ÈÎÎñ´¥·¢Æ÷ÒÔ¼°Öܱß×é¼þ£¬¶¼ÖÁ¹ØÖØÒª¡£¶ÔÓÚÉìËõ»î¶¯µÄʵ¼ÊÖ´ÐУ¬ÆäÒýÇæ×é¼þÔÚ×îºó·½£¬¼´Í¼ÖкìÉ«µÄActivator·þÎñ×é¼þ£¬×¢ÒâËüͬʱҲÊÇÒ»¸öMQÈÎÎñÏû·ÑÕߣ¬ºÍÄãµÄÒµÎñÖеÄͨÓÃÏû·ÑÕß×é¼þÎÞÌ«´ó²îÒì¡£

µ¯ÐÔÉìËõºǫ́·þÎñ¼Ü¹¹Ê¾Òâ

·Å´óÉÏÊöµÄActivator£¬ÎÒÃÇ¿´µ½´óÖÂÈçϵÄÀàËƽ»ÏìÀÖ¶ÓµÄÄÚ²¿ÊµÏÖ¡£ÆäÖкìÉ«µÄ¾ÍÊDzßÂÔºËÐÄ£ºÉìËõ»î¶¯²½Ö趨Ò壬¼´WorkFlowµÄ¶¨Ò壬ҲÊÇÈ«²¿»î¶¯µÄ¡°ÀÖÆס±¡£ActivatorºËÐÄÒýÇ渺ÔðÉìËõ»î¶¯µÄ¸ßЧִÐм°ÉúÃüÖÜÆڵĹÜÀí¡£¿É¼òµ¥Àà±È£º

½ø³Ì = ³ÌÐò + ÐéÄâ»ú £¨½âÊÍÆ÷ + ÔËÐÐʱ + ¿âº¯Êý£©

ÉìËõ»î¶¯ = ²½ÖèÅäÖà + Ö´Ðпò¼Ü£¨ºËÐÄÒýÇæ + ÒµÎñ´¦Àíº¯Êý£©

²½Öè±àÅźËÐļÆËãÒýÇæÉè¼ÆʾÒâ

ÿ¸öÖ´Ðе¥Ôª¶¼ÊÇReactorÄ£Ð͵ÄÒ첽ʼþ´¦ÀíÆ÷£ºÉÏÒ»²ãµÄ¡°Ö¸»Ó¡±Ö´Ðе¥ÔªActor²éѯ¹¤×÷Á÷²½Öè±í£¬²¢¸ù¾ÝÏÂÒ»²ãµÄÖ´Ðзµ»Ø½á¹û¼ÆËãÏÂÒ»²½µÄÈÎÎñ²¢·Ö·¢¸øϲ㣻ÏÂÒ»²ãÖеÄActorͨ¹ý×ÜÏߺÍÉϲ㡰ָ»Ó¡±Ö´Ðе¥Ôª¹µÍ¨¡£ÕâÀïÃæÓÐÒ»¸ö·ÖÐΣ¨Fractal£©µÄÉè¼Æ¿¼Á¿£¬ÀàËƵݹéµÄ¸Ð¾õ£¬ÕâÖÖ·ÖÐÎÊ÷×´½á¹¹ÊÇ×î×ÔȻҲ×î¸ßЧµÄ×éÖ¯·½Ê½£¬¾¡¹ÜÀíÂÛÉÏ¿ÉÒÔÎÞÏÞ²ã´ÎµÄÀ©Õ¹£¬Êµ¼ùÓ¦ÓÃÖÐÒ»°ãËIJãÒÔÄÚ×ã¹»ÁË¡£Êµ¼ùÉÏ£¬¿ÉÒÔ¿¼ÂÇ´ÓЭ³Ì/Ïß³Ì/½ø³Ì/½Úµãµ½Î¢·þÎñ¸÷¼¶±ðÀ´·Ö±ðµÝ½øʵÏÖ¡£ÉÏͼֻÊǵ¥Ïß³ÌÄڵĶþ²ã·ÖÐÍÖ´ÐÐÒýÇæµÄÉè¼ÆʾÀý¡£

Éè¼ÆÁé¸ÐÔ´ÓÚ£ºÓÐÏÞ×Ô¶¯»ú¡¢ActorÄ£ÐÍÒÔ¼°·ÖÐÎÀíÂÛ

ϵͳÉè¼Æʵ¼ùÏȽéÉܵ½ÕâÀï¡£¹ØÓÚÐÔÄÜ£¬ÔÙ²¹³äÁ½¸öÈÃÆäÖʱäµÄʵÏÖϸ½Ú¡£

ϸ½Ú1£º×îСµÄÖ´Ðе¥Ôª£¨Ô­×ÓActor£©Í¨¹ýeventfdÀ´½øÐб˴˵ÄÏûϢ֪ͨ£¬¸ßЧÀûÓÃÄں˽ӿÚ/×ÊÔ´£¬±£Ö¤¸ßÐÔÄÜ¡£eventfd-with-epoll ¿ÉÒÔ±£Ö¤µ¥½Úµã°ÙÍò¼¶µÄʼþ²¢·¢£¬¼«ÆäÊʺÏÕâÀà¸ßʼþÍÌÍÂÂʵij¡¾°¡£

×îСµÄ·ÖÐÎActorµ¥Ôª£¬»ùÓÚLinux eventfd&epoll¸ßЧʵÏÖ

ϸ½Ú2£ºÊÂÎñÏûÏ¢Copy-on-WriteʵÏÖ£¬Í¨¹ýImmutability½ÚÊ¡¿Õ¼äͬʱ±£Ö¤Í¨Ñ¶°²È«¡£×¢Ò⣬ÕâÀïÎÒÃÇÍƼöÓÃÏûÏ¢´«µÝ£¨Massage Passing£©À´ÊµÏÖÄÚ´æ¹²Ïí£¨Memory Sharing£©£¬¶ø²»ÊÇÏà·´¡£

ÊÂÎñÏûÏ¢CoWÒýÓÃʵÏÖ£¬ÓÃÏûÏ¢´«µÝʵÏÖÄÚ´æ¹²Ïí

0x03 ¼¼Êõ˼¿¼¼°·½·¨ÂÛ×ܽá

ÖصãÎÞÒÉÊDzßÂÔ»úÖÆ·ÖÀ루Separation mechanism from policy£©£¬ËüÊÇ´¦Àíͳһ²ßÂÔºÍÁé»îÖ´ÐÐÖ®¼äµÄì¶ÜµÄ×î´óÇ°ÌáºÍÐÐÖ®ÓÐЧµÄ·½·¨¡£Ò²ÊDzÙ×÷ϵͳÀï×îÖØÒªµÄ¸ÅÄîÖ®Ò»£¬ÏàÐÅÄ㻹ÓÐÓ¡Ï󡣶ÔÓÚÒµÎñÐͺǫ́¼ÆËãÂß¼­£¬ºËÐÄÎÊÌâÍùÍùÒ»°ãÊôÓÚÁ½´óÀࣺ

1¡¢×ÊÔ´¹ÜÀí£ºÌصãÔÚÓÚ´ó¹æÄ££¬¾²Ì¬£¬¿ÉÒÔ»¯ÎªºóÕß½â¾ö

2¡¢ÈÎÎñ¹ÜÀí£ºÄѵãÔÚÓÚÖ´Ðе÷¶È¡¢ÉúÃüÖÜÆÚ¸´ÔÓ״̬¡¢¸ß²¢·¢¡¢ÇÒ¶¯Ì¬¾ö²ß

¶ÔÓÚ¾ö²ßͳһµÄËßÇó£¬ÔÚÓÚ¿ÉÁé»îÉè¼Æ×éºÏ¡¢¿É¿¿¿É¿Ø£¬ÎÒÃÇͨ¹ý²ßÂÔ²ã²ÉÓÃDAGÈÎÎñÁ÷ÕÅÁ¿±àÅÅÀ´ÊµÏÖ£»

¶ÔÓÚÖ´ÐÐÁé»îµÄËßÇó£¬ÔÚÓÚ¸ßÐÔÄܺͶ¨ÖÆ»¯£¬ÎÒÃÇͨ¹ýÖ´Ðвã²ÉÓ÷ÖÐÎReactorÖð²ã½¨Ä£ÊµÏÖ¡£

Á÷³Ì²ßÂÔÓëÖ´ÐлúÖÆ·ÖÀë

ϵͳÉè¼ÆÉÏ£¬¿ÉÒÔÑØ×ÅÕâ¸ö˼·½øÐÐÓÅ»¯£º½«ÐèÇóÎÊÌâת»»Îª¼ÆËãÎÊÌ⣬ÔÙת»»ÎªIOÎÊÌ⣬ÔÙת»»Îª×éºÏÉè¼ÆÎÊÌ⣬×îÖÕ»¯Îª²ßÂÔÎÊÌ⣬ÎÒÃǵÄϵͳ½«ÒòÂú×ãÈ˵ÄÐèÇó¶øÓú·¢ÔöÖµ¡£

0x04 С½á

±¾ÎÄËùÊöµÄ¼¼ÊõÉè¼Æ˼ÏëºÍÏà¹Ø·½·¨ÂÛÒÑÔÚÌÚѶÔƵ¯ÐÔÉìËõ£¨AutoScaling£©¡¢ÇáÁ¿Ó¦Ó÷þÎñÆ÷£¨Lighthouse£©µÈ¶à¸ö²úÆ·ÖÐʵ¼ùÓ¦Ó㬲»½öÓÐЧµØÖ§³ÖÁËÕâЩºËÐÄÒµÎñµÄ¿ìËÙµü´ú¡¢¸ÄÉÆÁË¿ª·¢Ð§ÂÊ£¬¸üÖØÒªµÄÊÇ´ó¼ÒÈÕ³£µÄ´úÂëߣµÃ¸ü¿ªÐÄÁË¡£Èç¹ûÄãÒ²ÓÐÐËȤ£¬»¶Ó­Ò»ÆðÀ´ÌÖÂÛ°É~

0x05 ²Î¿¼×ÊÁÏ

±¾ÎÄÄÚÈÝÔ´ÓÚµÚÊ®Èý½ìÖйúϵͳ¼Ü¹¹Ê¦´ó»áSACC2021µÄÖ±²¥·ÖÏí¡¶ ÌÚѶÔƵ¯ÐÔÉìËõ¹¤³ÌÓÅ»¯Ì½Ãؼ¼Êõ¡·

¿ÉÀ©Õ¹ÈÎÎñÁ÷¿ò¼ÜʵÏÖ

Linux eventfdÔ­ÀíÓ¦ÓÃ

¹ØÓÚ×÷ÕߣºÏªÍáÍá 2015Äê¼ÓÈëÌÚѶ£¬×¨×¢ÔÆ·þÎñ²úÆ·Ïà¹ØÁìÓòµÄ¼¼Êõ̽Ë÷¡£¸ºÔðÔÆ·þÎñÆ÷¡¢µ¯ÐÔÉìËõ¡¢ÇáÁ¿Ó¦Ó÷þÎñÆ÷¡¢GPUµÈ²úÆ·µÄÑз¢¼°ÔËÓª¹¤×÷¡£ ³¤ÆÚ¹Ø×¢¸ßÐÔÄܼ¯Èº¹ÜÀí¡¢·Ö²¼Ê½ÈÎÎñµ÷¶Èϵͳ¡¢WebÈ«Õ»¿ª·¢Ïà¹Ø·½Ïò¡£

δÍê´ýÐø£¬¾´ÇëÆÚ´ý...


±¾Õ¾²¿·ÖÄÚÈÝתÔØÓÚÍøÂ磬°æȨ¹éÔ­×÷ÕßËùÓУ¬×ªÔØ֮ĿµÄÔÚÓÚ´«²¥¸ü¶àÓÅÐã¼¼ÊõÄÚÈÝ£¬ÈçÓÐÇÖȨÇëÁªÏµQQ/΢ÐÅ£º153890879ɾ³ý£¬Ð»Ð»£¡

ÍƼöͼÎÄ

  • ÖÜÅÅÐÐ
  • ÔÂÅÅÐÐ
  • ×ÜÅÅÐÐ

Ëæ»úÍƼö