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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Docker±³ºóµÄÈÝÆ÷¼¯Èº¹ÜÀí¡ª¡ª´ÓBorgµ½Kubernetes£¨¶þ£©
 
×÷Õߣº ÕÅÀÚ À´Ô´£ºInfoQQ ·¢²¼ÓÚ 2015-8-14
  2479  次浏览      31
 

1. ÀûÓÃÂÊ

ËùÒÔ£¬±¾½ÚÌÖÂ۵ļ¯ÈºÀûÓÃÂÊÓÅ»¯¿ÉÒÔ˵ÊÇBorgµÄ¾«»ªËùÔÚ£¬Ò²ÊÇBorgϵͳÓëÆäËûÀàËÆÏîÄ¿Ïà±È×î´óµÄÁÁµãÖ®Ò»¡£ÄÇôBorgµÄ¾ßÌå×ö·¨ÊÇÔõÑùµÄÄØ£¿

Èç¹ûÓÃÒ»¾ä»°À´½âÊÍ£¬Borg×öÁË×îÖ÷Òª¹¤×÷¾ÍÊÇÀ´»ØÊÕÔÙÀûÓÃÈÎÎñµÄ¿ÕÏÐ×ÊÔ´£¬²¢ÇÒ¶Ô²»Í¬µÄ»ØÊÕ²ßÂÔ×ö³öÁË¿ÆÑ§µÄÆÀ¹À¡£

ËùÒÔÎÒÃǽÓÏÂÀ´ÏÈ´ÓÕâ¸öÆÀ¹À·½·¨ÈëÊÖ¡£

1.1 ÀûÓÃÂÊµÄÆÀ¹À·½·¨

Ç°ÃæÒѾ­Ìáµ½¹ý£¬BorgÖнøÐÐÈÎÎñµÄµ÷¶È¼ÈÐèÒª¿¼ÂÇ»úÆ÷µÄ×ÊÔ´¿ÉÓÃÐÔ£¨°üÀ¨ÇÀÕ¼£©£¬Ò²Òª¿¼ÂÇÈÎÎñ±¾ÉíµÄÔ¼ÊøÒªÇ󣨱ÈÈç"ÎÒÐèÒªSSD»úÆ÷"£©£¬»¹ÐèÒª¿¼ÂÇÓ¦¶ÔѹÁ¦·åÖµËù±ØÐèµÄ¿ÕÓàÁ¿¡£¶øÔÚ±¾½Ú£¬ÎÒÃÇ»¹ÒªÎªµ÷¶ÈÔÙ¼ÓÉÏÒ»Ìõ¹æÔò£¬ÄǾÍÊǶÔÓÚbatch jobÀ´Ëµ£¬ËüÃÇ»¹ÐèÒªÄܹ»ÀûÓôÓLRSÈÎÎñÉÏ»ØÊÕÀ´µÄ×ÊÔ´¡£ÕâÖÖÇé¿öÏ£¬µ÷¶È¹ý³ÌÖеÄ×ÊÔ´ÇÀÕ¼ºÍ»ØÊÕ»úÖÆ´øÀ´ÁËÒ»¸ö¸ºÃæÓ°Ï죺BorgºÜÄÑ¿ìËÙ¶ø¾«È·µØ»Ø´ð"ij¸ö»úÆ÷/¼¯Èºµ½µ×»¹ÓжàÉÙ×ÊÔ´¿ÉÓÃ"ÕâÑùµÄÎÊÌâ¡£

¿ÉÊÇ£¬ÎªÁËÄܹ»ÆÀ¼Û²»Í¬µÄµ÷¶ÈËã·¨£¬Borg±ØÐëÄܹ»ÆÀ¹À¼¯ÈºµÄ×ÊԴʹÓÃÇé¿ö¡£ºÜ¶àÇé¿öÏ£¬ÔËάÈËÔ±»á¼ÆËãÒ»¸öÒ»¶Îʱ¼äÄڵļ¯Èº"ƽ¾ùÀûÓÃÂÊ"À´×÷ΪÆÀ¼ÛÖ¸±ê£¬µ«ÊÇBorgÔòʹÓÃÁËÒ»¸ö½Ð "ѹËõʵÑé" µÄ·½·¨¡£ËùνѹËõʵÑ飬¼´²»¶Ï¼õÉÙ¹¤×÷µ¥Ôª£¨Cell£©ÖлúÆ÷µÄÊýÁ¿£¨"ѹËõ"£©£¬È»ºóÖØµ÷¶Èij¸öÖ¸¶¨µÄÈÎÎñ£¬Ö±µ½¸ÃÈÎÎñÔÙÒ²²»ÄÜÕý³£µ÷¶ÈÔËÐÐÔÚÕâ¸ö¼¯ÈºÉÏ¡£Õâ¸ö¹ý³Ì²»¶Ï½øÐеÄ×îÖÕ½á¹û£¬µÃµ½¾ÍÊÇÕâ¸öÈÎÎñÔËÐÐËùÐèµÄ"×îС¹¤×÷µ¥Ôª"µÄ¶¨Òå¡£

Õâ¸öÖ¸±êÇå³þµØ±íÃ÷Á˵±×ÊÔ´¼õÉÙµ½Ê²Ã´³Ì¶Èʱ£¬ÎÒÃDzſÉÒÔÖÕÖ¹Õâ¸öÈÎÎñ£¬²¢ÇÒÕâ¸öÉú³ÉÖ¸±êµÄ¹ý³Ì²»ÐèÒªÌá½»ÈκΡºÄ£Äâ¡»ÈÎÎñ£¬ÕâÑùµÃµ½µÄ½á¹ûÒª¾«È·ºÜ¶à¡£

µ±È»£¬ÉÏÊö¡ºÑ¹Ëõ¡»µÄ¹ý³Ì×ÔÈ»²»ÄÜÔÚÉú²ú»·¾³ÖпªÕ¹¡£ÕâʱÎÒÃÇÇ°ÃæÌáµ½µÄÄ£ÄâÆ÷£ºFauxmasterµÄ×÷Óþͷ¢»Ó³öÀ´ÁË¡£Borg¿ÉÒÔ¼ÓÔØÄ³Ê±¿ÌµÄcheckpoints£¬´Ó¶øÔÚFauxmasterÉÏÖØÏÖ³öÓ뵱ʱһģһÑùµÄ»·¾³£¨³ýÁËBorgletÊÇÄ£ÄâµÄÖ®Í⣩¡£

ÔÚ¾ßÌå½øÐÐѹËõµÄ¹ý³ÌÖУ¬Borg»¹Ê¹ÓÃÁËÒÔϼ¸¸öС¼¼ÇÉ£º

Ëæ»úÑ¡Ôñ»úÆ÷À´ÒƳý¡£

¶Ôÿһ¸öÈÎÎñ½øÐÐÉÏÊöѹËõʵÑ飨³ýÁËijЩ¸ú»úÆ÷½ôÃܰ󶨵Ĵ洢ÐÍÈÎÎñ£©¡£

µ±CellµÄ´óС¼õСµ½Ò»¶¨³Ì¶Èʱ£¨±ÈÈçÊ£Óà×ÊÔ´Ö»ÓÐJobËùÐè×ÊÔ´µÄ¶þ±¶£©£¬½«Ó²ÐÔÔ¼Êø¸ÄΪ·ÇÓ²ÐÔÔ¼Êø£¬´Ó¶øÊʵ±Ôö¼Óµ÷¶È³É¹¦µÄ¼¸ÂÊ¡£

ÔÊÐí×î¶à0.2%µÄ¡±ÌôÌÞÐÍ¡°ÈÎÎñ¹ÒÆð£¬ÒòΪËüÃÇÿ´Î¶¼»á±»µ÷¶Èµ½Ò»Ð¡´é»úÆ÷ÉÏ¡£

Èç¹ûij´ÎѹËõʵÑéÐèÒª¸ü´óµÄCell£¬¹ÜÀíÔ±¿ÉÒÔ½«Ô­Cell¿Ë¡¼¸·ÝÔÙ¿ªÊ¼¡°Ñ¹Ëõ¡±µÄ¹ý³Ì¡£

ÉÏÊöѹËõʵÑé»áÔÚÿһ¸öCellÖÐÖØ¸´11´Î£¬Ã¿Ò»´Î¶¼»áÑ¡ÔñÒ»¸ö²»Í¬µÄËæ»úÊýÖÖ×ÓÀ´ÒƳý»úÆ÷¡£

ËùÒÔ£¬Í¨¹ýÉÏÊöѹËõʵÑ飬BorgÌṩÁËÒ»ÖÖÖ±¹ÛµÄ¡¢¿ÉÒÔÓÃÀ´ÆÀ¹À²»Í¬µ÷¶È²ßÂÔÓÅÁӵIJâÊÔ·½·¨¡£¼´£º µ÷¶È²ßÂÔÔ½ÓÅÐ㣬¶ÔÓÚͬһ¸öÈÎÎñÀ´ËµËü×îºóµÃµ½µÄ×îС¹¤×÷µ¥ÔªÖÐËùÐèµÄ»úÆ÷Êý¾ÍÔ½ÉÙ ¡£

²»ÄÑ·¢ÏÖ£¬Borg¶Ô×ÊԴʹÓýøÐÐÆÀ¹ÀµÄ·½·¨¹Ø×¢µÄÊÇÒ»¸öÈÎÎñÔÚijһ¾ßÌåʱ¿ÌÔËÐÐÆðÀ´ËùÐèµÄ×îÉÙµÄ×ÊÔ´³É±¾£¬¶ø²»ÊÇÏñ´«Í³×ö·¨ÄÇÑùȥģÄâ²¢ÖØÏÖÒ»¸öµ÷¶ÈËã·¨µÄÖ´Ðйý³Ì£¬È»ºó¸ú×Ù¼ì²éÒ»¶Îʱ¼äÄÚ¼¯Èº¸ºÔصÈ×ÊÔ´Ö¸±êµÄ±ä»¯Çé¿ö¡£

µ±È»£¬ÔÚÉú²ú»·¾³ÖУ¬Borg²¢²»»áÕæµÄ°Ñ×ÊÔ´¡ºÑ¹Ëõ¡»µ½Õâô½ô£¬¶øÊǸøÓ¦¶Ô¸÷ÀàÍ»·¢Ê¼þÁôÓÐ×ã¹»ÓàÁ¿µÄ¡£

1.2 CellµÄ¹²Ïí

Borg½øÐиßЧµÄ¼¯Èº¹ÜÀí×îÖ±½ÓµÄÒ»¸öÓÅ»¯·½·¨¾ÍÊÇÈÎÎñµÄ»ì²¿¡£ÕâÀïBorg½øÐÐÁËÒ»Ïî¶Ô±ÈʵÑ飬¼´°ÑLRSºÍbatch job·Ö±ð²¿Êðµ½²»Í¬µÄ¼¯ÈºÖУ¬½á¹ûͬÑùµÄÓ²¼þºÍÈÎÎñÌõ¼þÏÂÎÒÃÇÐèÒª±ÈBorg¶à20%-30%µÄ»úÆ÷¡£Ôì³ÉÕâÖÖÇé¿öµÄ¹Ø¼üÔ­ÒòÊÇ£ºprod¼¶±ðµÄÈÎÎñ£¨¼´´ó¶àÊýµÄLRS£©Êµ¼ÊʹÓõÄ×ÊÔ´±ÈËüÉêÇëµÄ×ÊÔ´ÒªÉٺܶ࣬¶øBorg»á»ØÊÕÕⲿ·Ö×ÊÔ´À´ÔËÐÐnon-prod¼¶±ðµÄÈÎÎñ£¨±ÈÈç´ó¶àÊýbatch job£©¡£

ÁíÒ»·½Ã棬²»½öÊDz»Í¬ÀàÐ͵ÄÈÎÎñÔÚBorgÖлìºÏ²¿Ê𣬲»Í¬Óû§µÄÈÎÎñÒ²ÊÇ»ìºÏ²¿ÊðµÄ¡£BorgµÄʵÑé±íÃ÷£¬Èç¹ûÔÚÒ»¶¨Ìõ¼þÏ£¨±ÈÈç´ËCellÉÏÈÎÎñËùÊôµÄ²»Í¬Óû§ÊýÁ¿´ïµ½Ò»¶¨Öµ£©×Ô¶¯½«²»Í¬Óû§µÄÈÎÎñ¸ôÀëµ½²»Í¬CellÉÏ£¬ÄÇôBorg½«ÐèÒª±ÈÏÖÔÚ¶à20-150%µÄ»úÆ÷²ÅÄÜÂú×ãÕý³£µÄÔËÐÐÒªÇó¡£

¿´µ½ÕâÀÏàÐźܶà¶ÁÕßÒ²»á²úÉúͬÎÒÒ»ÑùµÄÒÉÎÊ£º°Ñ²»Í¬ÀàÐÍ¡¢²»Í¬Óû§µÄÈÎÎñ»ìºÏÔÚһ̨»úÆ÷ÉÏÔËÐУ¬»á²»»áÔì³ÉCPUʱ¼äƬµÄƵ·±Çл»¶ø½µµÍϵͳÐÔÄÜÄØ£¿ÎªÁ˻شðÕâ¸öÎÊÌ⣬BorgרÃÅÒÔCPI£¨cycles per instruction£¬Ã¿ÌõÖ¸ÁîËùÐèµÄʱÖÓÖÜÆÚ£©µÄ±ä»¯ÎªÖ¸±ê¶ÔÈÎÎñÓëCPIÖ®¼äµÄ¹ØÏµ×ö³öÁËÆÀ¹À¡£

ÕâÀïBorgʹÓÃµÄÆÀ¹À·½·¨ÊÇ£º½«Cell·ÖΪ¡º¹²ÏíµÄCell¡»£¨»ì²¿£©ºÍ¡º¶ÀÏíµÄCell¡»£¨²»»ì²¿£©£¬È»ºó´ÓËùÓÐCellÖÐËæ»úÑ¡Ôñ12000¸öprod¼¶±ðµÄÈÎÎñ£¬È»ºóÔÙÕâЩÈÎÎñÖнøÐÐΪÆÚÒ»ÖܵijÖÐø²ÉÑù¡£Ã¿´Î²ÉÑù¼ä¸ô5·ÖÖÓ£¬Ã¿´Î²ÉÑù¶¼Í³¼Æ±»Ñ¡ÖÐÈÎÎñµÄCPUʱÖÓÖÜÆÚºÍÖ¸ÁîÊýÄ¿¡£Õâ¸ö¹ý³Ì×îºóµÃ³öµÄ½áÂÛ°üÀ¨£º

Ò»¡¢CPIÊýÖµµÄ±ä»¯ÓëÁ½¸ö±äÁ¿µÄ±ä»¯ÕýÏà¹Ø£º»úÆ÷±¾ÉíµÄCPUʹÓÃÁ¿£¬»úÆ÷ÉϵÄÈÎÎñÊýÁ¿¡£ÈÎÎñÊýÁ¿¶ÔCPIµÄÓ°Ïì¸ü´ó£ºÔÚһ̨»úÆ÷ÉÏÿÔö¼ÓÒ»¸öÈÎÎñ£¬¾Í»á½«Õą̂»úÆ÷ÉÏÆäËûÈÎÎñµÄCPIÔö¼Ó0.3%£»¶ø»úÆ÷CPUʹÓÃÁ¿Ã¿Ôö¼Ó1%£¬Ö¸ÁîCPIµÄÔö³¤Ö»ÓÐ0.2%×óÓÒ¡£µ«ÊÇ£¬¾¡¹Ü´æÔÚÉÏÊö¹ØÏµ£¬Êµ¼ÊÉú²ú»·¾³ÖÐBorgÖ»ÓкÜСһ²¿·ÖCPI±ä»¯ÊÇÓÉÓÚÉÏÊöÁ½¸ö±äÁ¿µÄ¸Ä±äÔì³ÉµÄ£¬¸ü¶àCPI±ä»¯µÄÓÕÒòÊÇÓ¦Óñ¾ÉíʵÏÖÉÏ£¨±ÈÈçËã·¨£¬Êý¾Ý¿âÁ¬½ÓµÈ£©¶ÔCPUµÄÓ°Ïì¡£

¶þ¡¢¹²ÏíµÄCellÓë¶ÀÏíµÄCellÏà±È£¬ÓдóÔ¼3%µÄCPUÐÔÄÜËðʧ¡£Õâ¸ö½áÂÛÊÇͨ¹ý±È½ÏÕâÁ½ÀàCellÉϵIJÉÑù½á¹ûµÃµ½µÄ£¬Ò²±íÃ÷Á˻첿²ßÂÔȷʵ»áÒ»¶¨³Ì¶ÈÉϽµµÍCPUµÄ±íÏÖ¡£

Èý¡¢ÎªÁ˱ÜÃ⣨¶þ£©ÖеĽáÂÛÊܵ½Ó¦Óñ¾Éí²îÒìÐеĸÉÈÅ£¨±ÈÈç±»²ÉÑùÈÎÎñ±¾Éí¾ÍÊÇCPUÃô¸ÐµÄ£©£¬BorgרÃŶÔBorglet½ø³Ì×öÁËCPI²ÉÑù£ºÒòΪÕâ¸ö½ø³ÌÔÚÕû¸ö¼¯ÈºÖÐÍêȫͬÖÊ£¬²¢ÇÒͬʱ·Ö²¼ÔÚ¶ÀÏíCellºÍ¹²ÏíCellµÄËùÓлúÆ÷ÉÏ¡£Õâʱ£¬²âÊԵóöµÄ½áÂÛÊǶÀÏíCellÉϵÄBorglet½ø³ÌµÄCPU±íÏÖÒª±È¹²ÏíCellÉϺÃ1.19±¶¡£

×ÛÉÏ£¬Í¨¹ýÉÏÊöϵͳµØ²âÊÔ£¬BorgÈ·ÈÏÁË ¹²ÏíCell»á¸øÈÎÎñ´øÀ´CPUÉϵÄÐÔÄÜËðʧ £¬µ«ÊÇÏà±ÈÈÎÎñ»ì²¿Ëù´øÀ´µÄ»úÆ÷ÊýÁ¿µÄ´ó·ù½ÚÊ¡£¬ÉÏÊöCPUËðʧ»¹ÊǺܿÉÒÔ½ÓÊܵġ£¸üºÎ¿ö£¬»úÆ÷ÊýÁ¿¼õÉÙ²»½ö½ö½ÚÊ¡ÁËCPU£¬»¹½ÚÊ¡ÁË´óÁ¿ÄÚ´æºÍ´ÅÅ̵ijɱ¾£¬ÓëÕâЩÏà±È£¬ÈÎÎñ»ì²¿ÔÚCPUÉÏÔì³ÉµÄÒ»µãÀË·Ñȷʵ΢²»×ãµÀ¡£

1.3 ʹÓøü´óµÄCell

Borg»¹×öÁËÒ»¸öºÜÓÐÒâÒåµÄ²âÊÔ£¬ÄǾÍÊǽ«Ò»¸ö´óCellÖеÄÈÎÎñ·Ö¿ª²¿Ê𵽸ú¶àСCellÖУ¨ÕâЩÈÎÎñÊÇËæ»úÌôÑ¡³öÀ´µÄ£©¡£½á¹û±íÃ÷£¬ÎªÁËÔËÐÐÕâЩÈÎÎñ£¬Ð¡CellÐèÒª±È´óCell¶àµÃ¶àµÄ»úÆ÷²ÅÄÜÕý³£¹¤×÷¡£

1.4 ϸÁ£¶ÈµÄ×ÊÔ´ÇëÇó

BorgÓû§Ìá½»µÄÈÎÎñʹÓÃÒ»¸öCPUºËÐĵÄǧ·ÖÖ®Ò»×÷Ϊµ¥Î»À´ÉêÇëCPU£¬Ê¹ÓÃ×Ö½ÚΪµ¥Î»À´ÉêÇëÄÚ´æºÍ´ÅÅÌ£¬ÕâÓëKubernetesÀïµÄ×ÊÔ´µ¥Î»ÊÇÒ»ÑùµÄ¡£ÕâÖÖÇé¿öÏ£¬Ò»¸ö³£¼ûµÄ×ÊÔ´ÇëÇóÃèÊöÈçÏÂËùʾ£º

"cpu": 1000,
"memory": 1048576,

ÇëÇóÖоßÌåÐèҪijÖÖ×ÊÔ´Á¿µÄ´óСÍêÈ«ÓÉÓû§¾ö¶¨£¬²¢ÇÒÒ»µ©¸ÃÈÎÎñ´´½¨³É¹¦£¬ÉÏÊö²ÎÊý»á×÷ΪÈÎÎñ½ø³ÌµÄcgroup²ÎÊýÀ´ÏÞÖÆÈÎÎñµÄ×ÊԴʹÓÃÇé¿ö¡£

²»ÄÑ·¢ÏÖ£¬BorgÒÔ¼°KubernetesµÄ×ÊÔ´ÇëÇóÁ£¶È¶¼ÊÇС¶øÁé»îµÄ£¬ÕâÒ²ÊÇ»ùÓÚÈÝÆ÷µÄ±àÅŹÜÀíÆ½Ì¨µÄÒ»´óÌØµã£º×ÊÔ´Á£¶ÈÖ±½Ó¶ÔÓ¦µ½cgroupsµÄÅäÖÃÉÏ£¬ËùÒÔÓû§¿ÉÒÔ½øÐзdz£¾«Ï¸µÄµ÷½Ú¡£ÔÚÕâÖÖÇé¿öÏ£¬ÌṩÀàËÆÓÚ¡º1¸öCPU£¬1GÄÚ´æ¡»ÕâÖ̶ֹ¨µÄ×ÊÔ´Åä¶îoffierÀ´¹©Óû§Ñ¡ÔñµÄ×ö·¨¾Í²»¹»Ã÷ÖÇÁË¡£

ÊÂʵÉÏ£¬ÕâÖÖϸÁ£¶ÈµÄ×ÊÔ´ÇëÇóÒ»·½ÃæÄܹ»¼õÉÙ×ÊÔ´ÇëÇóµÄ¾Û¼¯£¨±ÈÈç¿ÉÄÜ90%µÄÈÎÎñ¶¼ÒªÇ󡺸öCPU£¬1GÄÚ´æ¡»£©ËùÔì³É×ÊÔ´Ë鯬»¯£¬ÁíÒ»·½Ã滹ÄÜÓÐЧµØ±ÜÃâ±¾À´Î޹صÄÁ½ÖÖ×ÊÔ´·¢Éú²»±ØÒªµÄ¹ØÁª£¨±ÈÈçΪÁËÉêÇë1¸öCPU£¬ÈÎÎñ±ØÐëÉêÇë1GÄڴ棩¡£ÔÚÊÔÑéÖУ¬BorgÖ±½ÓչʾÁËÈç¹ûÓû§Ê¹ÓÃ×ÊÔ´Åä¶îofferÀ´³ÖÐøÏòBorgÇëÇó×ÊÔ´£¨±ÈÈçOpenStack¾ÍֻΪÓû§ÌṩÁ˵Ätiny¡¢medium¡¢largeµÈ¼¸ÖÖ¿ÉÑ¡µÄoffer£©£¬BorgËù¹ÜÀíµÄ¼¯Èº½«ÐèÒª±ÈÔ­Ïȶà30%-50%µÄ»úÆ÷²ÅÄÜÖ§³ÅͬÑù¹æÄ£µÄÈÎÎñÔËÐС£

1.5 ×ÊÔ´»ØÊÕ

ÖÕÓÚÀ´µ½Á˹ؼüµÄ²¿·Ö¡£ÎÒÃÇÇ°ÃæÒѾ­²»Ö¹Ò»´ÎÌáµ½¹ý£¬Borgͨ¹ýÈÎÎñ»ì²¿Ìá¸ß¼¯ÈºÀûÓÃÂʵÄÒ»¸öÖØÒª»ù´¡¾ÍÊÇ×ÊÔ´µÄ»ØÊÕºÍÖØ·ÖÅä¡£

׼ȷÀ´½²£¬×ÊÔ´»ØÊÕÖ÷Òª·¢ÉúÔÚÈÎÎñµ÷¶ÈµÄ×ÊÔ´¿ÉÐÐÐÔ¼ì²é½×¶Î¡£¾Ù¸öÀý×Ó£¬¼ÙÉèһ̨»úÆ÷µÄÈÝÁ¿ÊÇ10GÄڴ棬²¢ÇÒÒѾ­ÓÐÒ»¸öÉêÇëÁË4GÄÚ´æµÄÈÎÎñAÔÚÔËÐУ¬ÄÇôÕą̂»úÆ÷µÄÊ£Óà¿ÉÓÃ×ÊÔ´¾ÍÊÇ6G£¬ÁíÒ»¸öÉêÇë8GÄÚ´æµÄÈÎÎñBÊÇͨ²»¹ý¿ÉÐÐÐÔ¼ì²éµÄ¡£µ«Êµ¼ÊÇé¿öÊÇ£¬Borg»áÔÚÒ»¶Îʱ¼äºó°ÑÈÎÎñAÉêÇëµÄÄÚ´æ¸Ä³É1G£¬Ê¹µÃµ÷¶ÈÆ÷ÈÏΪÕą̂»úÆ÷µÄÊ£Óà¿ÉÓÃ×ÊÔ´±ä³É9G¡£ÕâÑù£¬ÈÎÎñB¾Í¿ÉÒÔµ÷¶È³É¹¦²¢ÇÒÔËÐÐÔÚÕą̂»úÆ÷ÉÏÁË£¬Õâ¾ÍÊÇ˵ÈÎÎñBʹÓÃÁË»ØÊÕ×ÔÈÎÎñAµÄÒ»²¿·Ö×ÊÔ´¡£Õâ¸ö¹ý³Ì¾ßÌåʵÏÖÊÇÔõÑùµÄÄØ£¿

ÔÚBorgÖУ¬ÈÎÎñÉêÇëµÄ×ÊÔ´limitÊÇÒ»¸öÉÏÏÞ¡£Õâ¸öÉÏÏÞÊÇBorgÓÃÀ´È·¶¨Ò»Ì¨»úÆ÷µÄ×ÊÔ´ÊÇ·ñ×ã¹»ÔËÐÐÒ»¸öÐÂÈÎÎñµÄÖ÷Òª±ê×¼¡£

¼ÈÈ»ÊÇÉÏÏÞ£¬´ó¶àÊýÓû§ÔÚÉèÖÃÕâ¸ölimitʱ¶¼»á¹ÊÒâ°ÑÕâ¸öÖµÉèÖõÄÉÔ΢¸ßÒ»µã£¬ÒÔ±¸²»Ê±Ö®Ðè¡£²»¹ý£¬´ó¶àÊýʱºòÈÎÎñµÄ×ÊԴʹÓÃÂʶ¼ÊDZȽϵ͵ġ£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬Borg×öÁËÒ»¸ö·Ç³£ÓÐÒâÒåµÄ¹¤×÷£¬ÄǾÍÊÇÏÈΪÿ¸öÈÎÎñ¹ÀËãËüÕæÕýÐèҪʹÓõÄ×ÊÔ´Á¿£¬È»ºó°Ñ¿ÕÏв¿·Ö×ÊÔ´»ØÊÕ¸øÄÇЩ¶Ô×ÊÔ´ÒªÇó²»ÊǺܸߵÄÈÎÎñÀ´Ê¹Óá£Õⲿ·Ö»ØÊÕ×ÊÔ´µÄµäÐÍʹÓÃÕß¾ÍÊÇ·ÇÉú²ú»·¾³ÈÎÎñ£¬±ÈÈçbatch job¡£

Õâ¸ö¹ÀËã¹ý³ÌÓÉBorgmasterͨ¹ýBorglet»ã±¨µÄ×ÊԴʹÓÃÇé¿öÿ¸ô¼¸Ãë¼ÆËãÒ»´Î£¬µÃ³öµÄ×ÊԴʹÓÃÁ¿³ÆÎª "×ÊÔ´Ô¤Áô" ¡£Ò»¸öÈÎÎñµÄ×ÊÔ´Ô¤ÁôÔÚ×ʼÊÇÓëÓû§ÉèÖõÄlimitÏàµÈµÄ£¨¼´µÈÓÚÈÎÎñÇëÇóµÄ×ÊÔ´Á¿£©£¬ÔÚÈÎÎñ³É¹¦Æô¶¯Ò»¶Îʱ¼äºó£¨300s£©£¬ËüµÄ×ÊÔ´Ô¤Áô»á ÂýÂý¼õÉ٠ΪÈÎÎñµÄ ʵ¼Ê×ÊԴʹÓÃÁ¿¼ÓÉÏÒ»¸ö¿ÉÅäÖõݲȫÓàÁ¿ ¡£ÁíÒ»·½Ã棬һµ©ÈÎÎñµÄ×ÊԴʹÓÃÁ¿Í»È»Ôö¼Ó²¢³¬¹ýÁËÉÏÊö×ÊÔ´Ô¤Áô£¬Borg»á ѸËÙ Ôö¼ÓËüµÄ×ÊÔ´Ô¤Áôµ½³õʼֵÀ´±£Ö¤ÈÎÎñÄܹ»Õý³£¹¤×÷¡£

ÐèҪעÒâµÄÊÇ£¬Éú²ú¼¶±ðµÄÈÎÎñ£¨prod¼¶±ðµÄÈÎÎñ£©ÊÇÓÀÔ¶²»»áʹÓûØÊÕ¶øÀ´µÄ×ÊÔ´µÄ¡£Ö»ÓжÔÓÚ·Çprod¼¶±ðµÄÈÎÎñÀ´Ëµ£¬ËüÃÇÔÚ±»µ÷¶ÈµÄʱºòBorg²Å»á°Ñ¿É»ØÊÕ×ÊÔ´ÄÉÈëµ½¿ÉÐÐÐÔ¼ì²éµÄ·¶Î§ÄÚ£¬ÕýÈçÎÒÃÇÇ°Ãæ½éÉܵÄÄÇÑù¡£

¼ÈÈ»ÊǹÀË㣬Borg¾ÍÓпÉÄÜ»á°Ñ¹ý¶àµÄÈÎÎñµ÷¶ÈÔÚһ̨»úÆ÷ÉÏ´Ó¶øÔì³É»úÆ÷µÄ×ÊÔ´±»ÍêÈ«ºÄ¾¡¡£¸üÔã¸âµÄÊǶÔÓÚÈÎÎñÀ´Ëµ£¬ËüÃǵÄʵ¼Ê×ÊԴʹÓÃÁ¿È´ÍêÈ«ÊÇ´¦ÓÚ¸÷×Ôlimit·¶Î§Äڵġ£ÔÚÕâÖÖÇé¿öÏ£¬Borg»áɱËÀһЩ·Çprod¼¶±ðµÄÈÎÎñÀ´ÊÍ·Å×ÊÔ´¡£

BorgÄÚ²¿µÄʵÑé±íÃ÷Èç¹ûÔÚµ±Ç°¼¯ÈºÖнûÓÃ×ÊÔ´»ØÊյϰ£¬½«½üÒ»°ëµÄCell¶¼ÐèÒª¶îÍâÔö¼Ó30%µÄ»úÆ÷²ÅÄÜÖ§³ÅͬÑù¹æÄ£µÄÈÎÎñ¡£¶øÔÚGµÄÉú²ú»·¾³ÖУ¬ÔòÓнü20%µÄÈÎÎñÊÇÔËÐÐÔÚÕâЩ»ØÊÕÀ´µÄ×ÊÔ´Éϵġ£²¢ÇÒBorg¶ÔÄÚ²¿ÈÎÎñµÄͳ¼ÆÔÙ´ÎÑéÖ¤ÁË£º¶ÔÓÚ¾ø´ó²¿·ÖÈÎÎñ¶øÑÔ£¬ËüµÄʵ¼ÊµÄ×ÊԴʹÓÃÏà±ÈËüÉêÇëµÄ×ÊÔ´ÏÞÖÆÀ´Ëµ¶¼ÊǺܵ͵쬽«½üÒ»°ë»úÆ÷µÄCPUºÍÄÚ´æÊ¹ÓÃÁ¿²»µ½20%¡£

×îºóµÄÎÊÌâÊÇ£¬ÎÒÃÇÓ¦¸ÃΪ¸øÈÎÎñÉèÖöà´óµÄ°²È«ÓàÁ¿ÄØ£¿²»ÄÑÏëµ½£¬Èç¹û°²È«ÓàÁ¿ÉèÖõúÜС£¬ÎÒÃǾͿÉÒÔʵÏÖ¸ü¸ßµÄ×ÊÔ´ÀûÓÃÂÊ£¬µ«ÊÇÒ²¸üÈÝÒ׳öÏÖʹÓÃÁ¿³¬³ö×ÊÔ´Ô¤ÁôµÄÇé¿ö£¨´Ëʱ¾Í»áOOM£©¡£Ïà·´£¬Èç¹û°Ñ°²È«ÓàÁ¿ÉèÖõúܴó£¬ÄÇ×ÊÔ´ÀûÓÃÂʾͲ»¿ÉÄܸܺߣ¬µ±È»OOMµÄÇé¿öÒ²»á¼õÉÙ¡£ÕâÀïBorg¸ø³öµÄ´ð°¸ÊÇͨ¹ýʵÑéÀ´µÃ³öºÏÀíµÄÖµ£º¸ø¶¨²»Í¬µÄ°²È«ÓàÁ¿Öµ£¬·Ö±ð¹Û²ì²»Í¬ÓàÁ¿ÏÂ×ÊÔ´ÀûÓÃÂʺÍOOMÔÚÒ»¶Îʱ¼äÄڵĵı仯£¬È»ºóÑ¡ÔñÒ»¸ö×ÊÔ´ÀûÓÃÂʺÍOOM³öÏÖ´ÎÊýµÄƽºâµãÀ´×÷ΪÕû¸ö¼¯ÈºµÄ°²È«ÓàÁ¿¡£

2 ¸ôÀëÓëÐÔÄÜ

Ç°ÃæËµÁËÄÇô¶à¹²ÏíµÄÄÚÈÝ£¬¶ÁÕßÓ¦¸Ã¿ÉÒԲµ½BorgµÄ»úÆ÷ÉÏÔËÐÐ×ŵÄÈÎÎñÃܶÈÓ¦¸ÃÊǺܸߵġ£ÊÂʵµÄÈ·Èç´Ë£ºÒ»°ëÒÔÉϵÄBorg»úÆ÷ÉÏͬʱÔËÐÐ×Å9¸öÒÔÉϵÄÈÎÎñ£¬ÕâÆäÖоø´ó¶àÊý»úÆ÷ÔËÐÐ×ÅÔ¼25¸öÈÎÎñ¡¢¿ªÆôÁË4500¸öÏ̡߳£¹²Ïí¸øBorg´øÀ´Á˼«¸ßµÄ×ÊÔ´ÀûÓÃÂÊ£¬µ«ÊÇҲʹµÃÕâЩÈÎÎñ¼äµÄ¸ôÀë³ÉΪÁËÒ»¸ö²»µÃ²»Öصã½â¾öµÄÎÊÌâ¡£

2.1 ÈÎÎñ¼ä¸ôÀë

Borg×îÔçÊÇÖ±½ÓʹÓÃchrootºÍcgroupÀ´ÌṩÈÎÎñ¼äµÄ¸ôÀëºÍÔ¼Êø£¬²¢ÇÒÔÊÐíÓû§Í¨¹ýsshµÇ½µ½ÕâЩ¸ôÀë»·¾³ÖÐÀ´½øÐе÷ÊÔ¡£ºóÆÚÕâ¸össhµÇ½µÄ°ì·¨±»Ìæ»»³ÉÁËborgsshÖ¸Á¼´Í¨¹ýBorgletÀ´¸ºÔðά»¤Ò»¸öÓû§µ½¸ôÀë»·¾³ÄÚshellµÄsshÁ¬½Ó¡£ÐèҪעÒâµÄÊÇ£¬À´×ÔÍⲿÓû§µÄÓ¦ÓÃÊÇÔËÐÐÔÚGAE»òÕßGCEÉϵ쬶ø²»ÊÇÖ±½Ó×÷ΪBorgÈÎÎñÀ´Åܵġ£ÆäÖÐGAE×÷ΪPaaSÖ÷ҪʹÓõÄÊÇɰÏä¼¼ÊõÀ´Ö§³ÅºÍ¸ôÀëÓû§µÄÓ¦Ó㬶øGCE×÷ΪIaaS×ÔȻʹÓõÄÊÇVM¼¼Êõ¡£ÖµµÃÒ»ÌáµÄÊÇÎÞÂÛGAE»¹ÊÇGCE£¬ËüÃÇËùÐèµÄKVM½ø³ÌÔòÊÇ×÷ΪjobÔËÐÐÔÚBorgÉϵġ£

BorgµÄÔçÆÚ½×¶Î¶ÔÓÚ×ÊÔ´ÏÞÖÆ×öµÄ»¹ÊDZȽÏԭʼµÄ£¬ËüÖ»ÔÚÈÎÎñµ÷¶È³É¹¦ºó¶ÔÄÚ´æ¡¢´ÅÅ̺ÍCPUµÄʹÓÃÇé¿ö½øÐгÖÐøµÄ¼ì²é£¬È»ºóÒÀ¾Ý¼ì²é½á¹ûɱËÀÄÇЩʹÓÃÁËÌ«¶à×ÊÔ´µÄÈÎÎñ¡£ÔÚÕâÖÖ²ßÂÔÏ£¬BorgÈÎÎñ¼äµÄ×ÊÔ´¾ºÕùÊÇºÜÆÕ±éµÄ£¬ÒÔÖÁÓÚÓÐЩÓû§¹ÊÒ⽫ÈÎÎñµÄ×ÊÔ´ÇëÇóÉèÖõĺܴó£¬ÒÔÆÚ¾¡Á¿¼õÉÙ»úÆ÷ÉÏͬʱÔËÐеÄÈÎÎñÊý£¬Õ⵱Ȼ´ó´ó½µµÍÁË×ÊÔ´ÀûÓÃÂÊ¡£

ËùÒÔ£¬ºÜ¿ìBorg¾Í¿ªÊ¼Ê¹ÓÃLinuxÈÝÆ÷¼¼ÊõÀ´½â¾öÏÞÖÆÓë¸ôÀëµÄÎÊÌâ¡£G¼ÒÄÚ²¿µÄÈÝÆ÷¼¼ÊõÓÐÒ»¸ö¶ÔÓ¦µÄ¿ªÔ´ÏîÄ¿£¬Õâ¾ÍÊÇÔø¾­ÃûÔëһʱµÄlmctfyÈÝÆ÷£¨https://github.com/google/lmctfy£©¡£È·ÇеØËµ£¬lmctfy¸øÓû§ÌṩÁËÒ»¸ö¿ÉÒÔ·½±ãµØÅäÖÃcgroupµÄ¹¤¾ß£¬²¢Äܹ»°ÑÓû§µÄÕâЩcgroupÅäÖýáºÏnamespace´´½¨³öÒ»¸öÈÎÎñ¸ôÀë»·¾³¼´¡ºÈÝÆ÷¡»³öÀ´¡£ÓÉÓÚlmctfy´ÓÒ»¿ªÊ¼¾ÍÊÇ´ÓÏÞÖÆÓë¸ôÀëµÄ½Ç¶ÈÀ´¿ª·¢µÄ£¬ËùÒÔËüµÄ×ÊÔ´²Ù×÷½Ó¿Ú¶¨Ò嵨ºÜ·á¸»£¬²»½öº­¸ÇÁËcgroupµÄ´ó²¿·Ö×Óϵͳ£¬»¹¿ÉÒÔ½øÐÐǶÌ׵ȱȽϸ´ÔÓµÄ×ÊÔ´¹ÜÀí¡£µ«ÊÇ£¬Ëæ×ÅDockerÈÝÆ÷¾µÏñÕâһɱÊÖ¼¶ÌØÐÔµÄÆÕ¼°ÒÔ¼°Docker±¾Éí·É¿ìµÄÑÝ»¯£¬lmctfyµÄ×÷ÕßÃÇÒ²²»µÃ²»·ÅÆúÁ˸ÃÏîÄ¿µÄά»¤£¬×ª¶ø¿ªÊ¼È¥¹±Ï×libcotainerÏîÄ¿¡£²»¹ýÖÁÓÚÏÖÔÚG¼ÒÄÚ²¿£¬Ó¦¸Ã»¹ÊÇÔÚʹÓÃÀàËÆÓÚlmctyÕâÖÖ×ÔÑеÄÈÝÆ÷¼¼ÊõÕ»£¬¶øDockerÔòÖ÷ÒªÓÃ×÷¶ÔÍâÌṩµÄ¹«ÓÐÔÆ·þÎñ£¨Google Container Engine£©¡£

µ±È»£¬ÈÝÆ÷Ò²²»ÊÇÍòÄܵģ¬Ò»Ð©µ×²ãµÄ×ÊÔ´¹²ÏíÎÊÌâ±ÈÈçÄÚ´æ´ø¿íµÄ¹²Ïí»òÕßCPU»º´æÎÛȾÎÊÌâÔÚBorgÖÐÈÔÈ»´æÔÚ£¬µ«ÊÇÖÁÉÙÔÚÈÎÎñµÄÔËÐÐ×ÊÔ´µÄÏÞÖÆºÍµ÷¶ÈÓÅ»¯ÉÏ£¬ÉÏÊöÈÝÆ÷¼¼ÊõÒѾ­×ã¹»ÁË¡£

2.2 ÐÔÄÜÓÅ»¯

ÎÒÃÇÇ°ÃæÌáµ½¹ý£¬BorgÖеÄÈÎÎñÊÇ·ÖΪLRS£¨Ò²¿ÉÒÔ³ÆÎªLatency SensitiveÈÎÎñ£©ºÍbatch jobµÄ£¬ÆäÖÐǰÕßÒòΪ¶ÔÓÚ·ÃÎÊÑÓʱÃô¸ÐËùÒÔ¿ÉÒÔÏíÊܸüºÃµÄ¡º´ýÓö¡»£¬Õâ¸ö»®·ÖÊÇBorg½øÐÐ×ÊÔ´»ØÊÕºÍÔÚ·ÖÅäµÄ»ù´¡¡£µ«ÊÇ»¹Óиö´ý½â¾öµÄÎÊÌâÊÇ£¬ÄÄÖÖ×ÊÔ´ÊÇ¿ÉÒÔÔÚ²»Ó°ÏìÈÎÎñÔËÐеÄǰÌáϽøÐлØÊÕµÄÄØ£¿

·²ÊÇÄܹ»½øÐÐÈÈ»ØÊÕµÄ×ÊÔ´ÔÚBorgÖж¼³ÆÎª¿ÉѹËõ×ÊÔ´£¬µäÐ͵ÄÀý×ÓÊÇCPUÖÜÆÚºÍ´ÅÅÌI/O´ø¿í¡£ÓëÖ®Ïà·´£¬ÄÚ´æºÍ´ÅÅ̿ռäÕâÖÖ¾ÍÊôÓÚ²»¿ÉѹËõ×ÊÔ´¡£µ±Ò»Ì¨»úÆ÷Éϲ»¿ÉѹËõ×ÊÔ´²»¹»ÓÃʱ£¬Borglet¾Í²»µÃ²»°´ÕÕÓÅÏȼ¶´ÓµÍµ½¸ßɱËÀÈÎÎñ£¬Ö±µ½Ê£ÓàÈÎÎñµÄ×ÊÔ´Ô¤ÁôÄܹ»µÃµ½Âú×ã¡£¶øÈç¹ûÊÇ¿ÉѹËõ×ÊÔ´²»×㣬Borg¾ÍÄܹ»´ÓijЩÈÎÎñÉÏÃæ»ØÊÕһЩ×ÊÔ´£¨Ò»°ã´ÓLRSÈÎÎñÉÏ£¬ÒòΪËüÃÇÉêÇëµÄ×ÊÔ´Ò»°ã¶¼±Èʵ¼ÊʹÓöàһЩ£©¶ø²»ÐèҪɱËÀÈκÎÈÎÎñ¡£Èç¹û»ØÊÕ×ÊÔ´ÈÔÈ»½â¾ö²»ÁËÎÊÌ⣬ÄÇôBorg²Å»áͨ¹ýBorgmaster½«Ò»Ð©ÈÎÎñ´ÓÕâ¸ö»úÆ÷Éϵ÷¶È×ß¡£

¾ßÌåµ½BorgletµÄʵÏÖÉÏͬÑùÌåÏÖÁ˶Ô×ÊÔ´µÄÏÞÖÆºÍ¹ÜÀí¡£Borgletά»¤ÁËÒ»¸öÄÚ´æ×ÊÔ´¼ì²âÑ­»·£¬Ëü¸ºÔðÔÚµ÷¶Èʱ°´ÕÕ×ÊԴʹÓÃÔ¤²âµÄ½á¹û£¨¶ÔÓÚprod¼¶±ðÈÎÎñ£©£¬»òÕß°´ÕÕµ±Ç°ÄÚ´æÊ¹ÓÃÇé¿ö£¨¶ÔÓÚ·Çprod¼¶±ðÈÎÎñ£©ÎªÈÝÆ÷ÉèÖÃÄÚ´æÏ޶ͬʱ£¬Õâ¸öÑ­»·»¹¸ºÔð¼ì²âOOMʼþ£¬Ò»µ©·¢ÏÖÓÐÈÎÎñÊÔͼʹÓñÈÏÞ¶î¸ü¶àµÄÄÚ´æÊ±Borglet½«É±ËÀËüÃÇ¡£¶øÇ°Ãæ¸Õ¸ÕÌáµ½µÄ²»¿ÉѹËõ×ÊÔ´£¨Äڴ棩²»×ãʱµÄ´¦ÀíÒ²ÊÇÕâ¸öÑ­»·Íê³ÉµÄ¡¢

ΪÁËÈÃLRSÈÎÎñ»ñµÃ¸üºÃµÄÐÔÄÜ£¬LRS¿ÉÒÔÍêȫԤÁôijЩ»òÕßËùÓÐCPUºËÐÄ£¬²¢ÇÒ²»ÔÊÐíÆäËûµÄLRSÈÎÎñÔËÐÐÔÚÕâЩCPUºËÐÄÉÏ¡£ÁíÒ»·½Ã棬batch jobÔò²»ÊÜ´ËÏÞÖÆ£¬ËüÃÇ¿ÉÒÔËæÊ±ÔËÐÐÔÚÈÎÒâCPUºËÐÄÉÏ£¬µ«ÊÇÔÚCPUµ÷¶ÈÉÏbatch job»á±»·ÖÅä¸üСµÄÅä¶î£¬¼´ËüÃÇÄÜÕ¼ÓÐCPUµÄʱ¼äÒª±ÈLRSÉÙ¡£

²»ÄÑ¿´³ö£¬ÎªÁËÄܹ»¸ü¼Ó¸ßЧµÄʹÓÃCPU×ÊÔ´£¬Borg¾Í±ØÐëÒýÈë¸ü¼Ó¸´ÔÓµÄÈÎÎñµ÷¶È²ßÂÔ£¬ÕâÒ²¾ÍÒâζ×ŵ÷¶È¹ý³Ì»áÕ¼Óøü¶àµÄʱ¼ä¡£ËùÒÔ£¬BorgµÄ¿ª·¢Õß¶ÔCPUµ÷¶È×öÁËÓÅ»¯ÒÔÆÚÔÚ×îСµÄʱ¼ä´ú¼ÛÀïÍê³Éµ÷¶È¹ý³Ì¡£ÕâЩÓÅ»¯°üÀ¨ÔÚÄÚºË3.8ÒýÈëµÄÒÔ½ø³Ì»òÕß½ø³Ì×éΪµ¥Î»µÄеÄCPU¸ºÔؼÆËã·½·¨£¨per-entity load tracking£©£¬ÔÚµ÷¶ÈËã·¨ÖÐÔÊÐíLRSÇÀÕ¼batch jobµÄ×ÊÔ´£¬ÒÔ¼°¼õÉÙ¶à¸öLRS¹²ÏíͬһCPUʱµÄËã·¨µÄÖ´ÐдÎÊý¡£

ÉÏÊöÓÅ»¯µÄ½á¹ûʹµÃ¾ø´ó¶àÊýÈÎÎñ¶¼Äܹ»ÔÚ5msÄÚ»ñµÃCPUʱ¼äƬ£¬Õâ±ÈĬÈϵÄCFS¸ßЧºÜ¶à¡£²»¹ýÔÚһЩ¼«¶ËÇé¿öÏ£¨±ÈÈçÈÎÎñ¶Ôµ÷¶ÈʱÑӷdz£Ãô¸Ðʱ£©£¬Borg»áʹÓÃcpusetÀ´Ö±½ÓΪÈÎÎñ·ÖÅä¶ÀÏíµÄCPUºËÐÄ¡£²»¹ý£¬ÕâÖÖÐèÒªÉèÖÃcpusetµÄÇé¿ö·Ç³£ÉÙ¼û£¬¶øÇÒBorgµÄ×÷Õß²»Ö¹Ò»´Î¸æ½ëÈÝÆ÷µÄʹÓÃÕß²»ÒªÍ¬Ê±ÉèÖÃcpu.sharesºÍcpuset£ºÒòΪÕâ»á¸øºóÐøÏµÍ³µÄCPU³¬Âô£¬auto-scaling£¬Í³Ò»×ÊÔ´µ¥Î»µÄ³éÏóµÈÉè¼Æ´øÀ´ºÜ¶àÂé·³¡£ÕâÆäʵºÜÈÝÒ×Àí½â£ºcpu.sharesÊÇÒ»¸öÏà¶ÔÖµ£¬Ëæ×ÅÈÎÎñ£¨ÈÝÆ÷£©µÄÔö¼Óÿ¸öÈÝÆ÷ÕæÕýÏíÓеÄʱ¼äƬÊýÁ¿Êǻ᲻¶Ï±ä»¯µÄ£¬¶øÔÚÒ»¸öÈÎÎñ±ØÐëºÍij¸öCPU°ó¶¨µÄǰÌáÏ£¬Ã¿¸öÈÎÎñµ½µ×ÄÜ·ÖÅäµ½¶àÉÙʱ¼äƬÕâÖÖÎÊÌâ¾ÍÒª±äµÃ¸´ÔӺܶࡣÕâÒ²ÊÇΪʲôKubernetesÔݲ»Ö§³ÖÓû§ÉèÖÃcpusetµÄÒ»¸öÖ÷ÒªÔ­Òò¡£

ËäÈ»BorgÈÎÎñÄܹ»Ê¹ÓõÄ×ÊÔ´È¡¾öÓÚËüÃǵÄlimit£¬Æäʵ´ó¶àÊýÈÎÎñµÄ¿ÉѹËõ×ÊÔ´±ÈÈçCPUÊÇ¿ÉÒÔ³¬ÂôµÄ£¬¼´ËüÃÇ¿ÉÒÔʹÓó¬³öÏÞ¶îµÄ¿ÉѹËõ×ÊÔ´£¨±ÈÈçCPU£©´Ó¶ø¸üºÃµØÀûÓûúÆ÷µÄ¿ÕÏÐCPU¡£Ö»ÓÐ5%µÄLRSºÍ²»µ½1%µÄbatch Job»á½ûÖ¹³¬ÂôÒÔÆÚ»ñµÃ¸ü¾«È·µÄ×ÊԴʹÓÃÔ¤²â¡£

ÓëCPUÏà·´£¬BorgÖÐÄÚ´æµÄ³¬ÂôĬÈÏÊǽûÖ¹µÄ£¬ÒòΪÕâ»á´ó´óÌá¸ßÈÎÎñ±»É±ËÀµÄ¼¸ÂÊ¡£µ«¼´Ê¹Èç´Ë¡£ÈÔÈ»ÓÐ10%µÄLRSºÍ79%µÄbatch job»á¿ªÆôÄڴ泬Âô£¬²¢ÇÒÄڴ泬Âô¶ÔÓÚMapReduceÈÎÎñÀ´ËµÄ¬ÈϾÍÊÇ¿ªÆôµÄ¡£ÕâÒ²Õý¶ÔÓ¦ÁË1.5ÖÐBorg¹ØÓÚ×ÊÔ´»ØÊÕµÄÉè¼Æ£ºbatch job¸üÇãÏòÓÚʹÓûØÊÕÀ´µÄ×ÊÔ´²¢ÇÒÇýʹϵͳ½øÐÐ×ÊÔ´»ØÊÕ¡£

´ó¶àÊýÇé¿öÏÂÒÔÉϲßÂÔ¶¼Äܹ»ÓÐÖúÓÚ×ÊÔ´ÀûÓÃÂʵÄÌá¸ß£¬µ«ÊÇÕâҲʹµÃbatch job²»µÃ²»ÔÚijЩÇé¿öÏÂÎþÉü×Ô¼ºÀ´¸øÆÈÇÐÐèÒªÔËÐÐ×ÊÔ´µÄLRSÈÎÎñÈ÷£º±Ï¾¹batch jobʹÓõÄ×ÊÔ´´ó¶àÊÇ´Ó±ðÈËÄÇÀï»ØÊÕÀ´µÄ¡£

ÓëBorgÏà±È£¬KubernetesµÄ×ÊÔ´Ä£ÐÍ»¹ÔÚ¿ª·¢µÄ¹ý³ÌÖУ¬µ±Ç°Äܹ»Ö§³ÖµÄÀàÐÍÒ²Ö»ÓÐCPUºÍÄÚ´æÁ½ÖÖ£¬ÆäËûÀàËÆÓÚ´ÅÅ̿ռ䡢IOPS¡¢´æ´¢Ê±¼äºÍÍøÂç´ø¿íµÈ¶¼»¹´¦ÓÚ¸ÅÄîÉè¼Æ½×¶Î¡£³öÓÚ¿çÆ½Ì¨µÄ¿¼ÂÇ£¬KubernetesµÄCPU×ÊÔ´µÄ¶ÈÁ¿»á±»»»Ëã³ÉÒ»¸öÄÚ²¿Í³Ò»µÄKCUµ¥Î»£¬±ÈÈçx86ÉÏKCU¾ÍµÈÓÚCPUʱ¼ä£¨ÀàËÆBorg£©¡£Í¬BorgÒ»Ñù£¬KubernetesÖеÄCPUÒ²ÊÇ¿ÉѹËõ×ÊÔ´£¬¶øÄÚ´æ¾ÍÊDz»¿ÉѹËõ×ÊÔ´ÁË£ºËäÈ»ÎÒÃÇËæÊ±¿ÉÒÔͨ¹ýcgroupÔö¼ÓDockerÈÝÆ÷µÄÄÚ´æÏÞÖÆ£¬µ«ÊÇÖ»ÓÐÕâЩpage±»ÊÍ·ÅÖ®ºó½ø³Ì²Å¿ÉÒÔʹÓÃËüÃÇ£¬·ñÔòÈÔÈ»»á·¢ÉúOOM¡£

×ܽá

BorgĿǰÅû¶µÄϸ½Ú¾ÍÊÇÕâô¶àÁË£¬´ÓÕâЩÄÚÈÝÉÏ£¬ÎÒÃDz»ÄÑ¿´³ö×÷ΪGoogle³¬´ó¹æÄ£ÈÎÎñÈÝÆ÷¼¯ÈºµÄÖ§³Åƽ̨£¬Borg¶ÔÓÚ×ÊÔ´»ì²¿Ó뼯ȺÀûÓÃÂʵÄÓÅ»¯¹¤×÷¿ÉÒÔ˵ÊÇÕûƪÎÄÕµľ«ËèËùÔÚ¡£ÁíÍ⣬¾¡¹Ü×÷ÕßÔÚ×îºóÉù³ÆºóÐø¹¤×÷Ö÷ÒªÊÇKubernetesµÄÑз¢ºÍÉý¼¶£¬µ«ÊÇÎÒÃǾø²»ÄÜ˵Kubernetes¾ÍÊÇ¿ªÔ´°æµÄBorg¡£

¾¡¹ÜºÜ¶à¸ÅÄî°üÀ¨¼Ü¹¹¡¢ÉõÖÁһЩʵÏÖ·½·¨¶¼½è¼øÁËBorg£¬¿ª·¢ÕßÒ²»ù±¾ÉÏÊÇͬһ²¦ÈË£¬µ«ÊÇKubernetesÓëBorg¹Ø×¢µÄÎÊÌâ´æÔÚןù±¾µÄ²îÒì¡£

KubernetesµÄºËÐÄÊÇPod£¬È»ºóÎ§ÈÆPod£¬Kubernetes°çÑÝÁËÒ»¸öPod¼¯Èº±àÅŵĽÇÉ«£¬ÔÚ´Ë»ù´¡ÉÏËüÓÖΪÕâЩPod¼¯ÈºÌṩÁ˸±±¾¹ÜÀí£¨ReplicationController£©ºÍ·ÃÎÊ´úÀí£¨Service£©µÄÄÜÁ¦¡£ËùÒÔ£¬Kubernetesʵ¼ÊÉϸüÌù½üSwarmÕâÑùµÄDockerÈÝÆ÷¼¯Èº¹ÜÀí¹¤¾ß£¬Ö»²»¹ýËüµÄ¹ÜÀíµ¥Î»ÊÇPod¡£ÕâÑùµÄ¶¨Î»ÓëBorgרעÓÚÖ§³ÅÄÚ²¿ÈÎÎñ²¢ÇÒ×î´ó³Ì¶ÈµØÌá¸ß×ÊÔ´ÀûÓÃÂʵijõÖÔÊDz»Ò»ÑùµÄ¡£ºÜÄÑÏëÏñ»áÓÐÈ˰ÑKVM»òÕßMapReduce JobÅÜÔÚKubernetesÉÏ£¬¶øÕâЩȴÊÇBorgµÄµäÐÍÈÎÎñ¡£

Ïà±È֮ϣ¬Mesos¹Ø×¢µÄºËÐÄÎÊÌâÊǼ¯Èº»·¾³ÏÂÈÎÎñ×ÊÔ´µÄ·ÖÅäºÍµ÷¶È£¬ÕâÓëBorgµÄÒ»²¿·ÖÄ¿±êºÜ½Ó½ü¡£µ«ÊÇ£¬Á½²ãµ÷¶È²ßÂÔ¾ö¶¨ÁËMesos±¾ÉíµÄʵÏÖÊÇÊ®·ÖÇáÁ¿µÄ£¬ËüµÄ´ó²¿·Ö¹¤×÷ÔÚÓÚÈçºÎÔÚ¼æ¹Ë¹«Æ½ºÍЧÂʵÄÇé¿öÏÂÏòÉϲã¿ò¼ÜÌṩºÏÀíµÄ×ÊÔ´ÑûÔ¼£¬ÖÁÓÚ¶ÔÔËÐÐÆäÉϵÄÈÎÎñ±¾ÉíMesosµÄ¹Ø×¢²¢²»Ëã¶à£¨½»¸øÉϲãframework¸ºÔð¼´¿É£©¡£

ÄÇôÓÐûÓÐÒ»¸ö¿ªÔ´ÏîÄ¿Äܹ»ÅäÉÏ¿ªÔ´°æBorgµÄ³ÆºÅÄØ£¿Ä¿Ç°¿´À´ÊÇ£ºAurora+Mesos¡£

Apache AuroraÏîÄ¿ÔÚMesosµÄ»ù´¡ÉÏÌṩÁ˺ܶà·Ç³£ÓÐÒâ˼µÄÌØÐÔ£¬ÕâÆäÖоͰüÀ¨ÁËͬʱÔËÐÐbatch jobºÍÆÕͨӦÓã¬ÈÎÎñÓÅÏȼ¶ºÍ×ÊÔ´ÇÀÕ¼µÄÄÜÁ¦¡£µ±È»£¬´Óʱ¼äµãÉÏÀ´¿´ºÜ¿ÉÄÜÊÇAurora½è¼øÁËBorgµÄ˼Ï룬µ«×î¹Ø¼üµÄÊÇ£¬Aurora°Ñ¼¯ÈºÀûÓÃÂʵÄÌá¸ßµ±×÷Á˸ÃÏîÄ¿µÄÖ÷ҪĿ±êÖ®Ò»£¬Õâ²ÅʹµÃËüÓëBorg²úÉúÁ˸ü¶àµÄ½»¼¯¡£

µ±È»£¬ÖÁÓÚÑ¡ÔñÄÄÖÖ£¬¾ÍÍêÈ«ÊÇÈ¡¾öÓÚÓû§µÄÐèÇóÁË¡£´Ó¸÷¸öÏîÄ¿µÄ·¢Õ¹ÉÏÀ´¿´£¬¼¯Èº¹æÄ£²»´óÓÖÐèÒªPod¸ÅÄîµÄ»°£¬Ö±½ÓʹÓÃKubernetes¾Í×ã¹»ÁË£¬µ«Èç¹ûÊÇ»¥ÁªÍøÆóÒµ²¿Êð×Ô¼ºÄÚ²¿µÄ˽ÓÐÔÆµÄ»°£¬»¹Êǽ¨ÒéÏÈ´îÒ»²ãMesos×÷Ϊ¼¯Èº×ÊÔ´µÄ³éÏó£¨ÒѾ­ÓÐ×Ô¼ºµÄ×ÊÔ´±àÅÅÆ½Ì¨µÄͬѧ³ýÍ⣬±ÈÈç°Ù¶ÈMatrixÕâÀࣩ£¬È»ºóʹÓò»Í¬µÄframework£¨°üÀ¨Aurora£¬MarathonÒÔ¼°Kubernetes±¾Éí£©À´Âú×㲻ͬ³¡¾°µÄÐèÇó¡£

×îºó˵һ¾ä£¬×÷ΪBorgµÄͬԴÑÜÉúÏîÄ¿£¬KubernetesµÄRoadmapÀﻹÓкܶàBorgµÄÓÅÐãÌØÐÔ´ýʵÏÖ£¬±ÈÈçÎÒÃÇÇ°ÃæÌáµ½¹ýµÄ×ÊÔ´Ä£ÐÍ£¬¶Ôbatch jobµÄÖ§³ÖµÈ¶¼ÊǺܺõÄÀý×Ó¡£¿ÉÒÔÔ¤¼û£¬Kubernetes½ÓÏÂÀ´ºÜÓпÉÄܻᷢչ³ÉΪһ¸ö¡º´óÁ¿½è¼øBorgÓÅÐã˼Ïë¡¢¼Ü¹¹¡¢ÒÔ¼°´úÂëʵÏÖ¡»µÄÒ»¸ö¼ÓÇ¿°æSwarm£¬Õâ±¾ÉíȷʵºÜÈÃÈËÆÚ´ý£¬ÕâÒ²ÊÇĿǰKubernetesÔÚÓû§ÑÛÖпÉÄÜÒª±ÈMesosÉÔʤһ³ïµÄÔ­ÒòÖ®Ò»¡£¸üºÎ¿ö£¬GoogleÒѾ­ÓëMesos´ï³ÉÁËÕ½ÂÔºÏ×÷£¬KubernetesºÍMesos½ñºóµÄ·Ö¹¤»á¸ü¼ÓÃ÷È·£¬Öصþ¹¦ÄÜ»á¸üÉÙ¡£ÕâÒ²Òâζ×ÅÔÚºËÐŦÄÜ×ã¹»ÍêÉÆÇ°£¬Kubernetes¶Ô×ÊÔ´ÀûÓÃÂÊÌáÉýµÈÎÊÌâÉϵÄÖØÊӳ̶ÈÒÀÈ»²»»á·Ç³£¸ß¡£

ÎÞÂÛÈçºÎ£¬µ±DockerÓöÉÏBorg£¬Õâ¾ø¶ÔÊÇÒ»¼þ·Ç³£ÓÐÒâÒåµÄÊÂÇé¡£ÔÚºóÐøµÄÎÄÕÂÀÎÒÃÇ»á½øÒ»²½¶ÔÒÔDockerΪºËÐĵÄÈÝÆ÷¼¯ÈºµÄ±àÅŹÜÀí¡¢µ÷¶È¡¢¼à¿ØºÍÐÔÄÜÓÅ»¯½øÐиü¶àµÄÉîÈëµÄÆÊÎöºÍ½â¶Á¡£

   
2479 ´Îä¯ÀÀ       31
 
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
 
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
 
Ïà¹Ø¿Î³Ì

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ