ÒýÑÔ£ºÌáµ½ÈÝÆ÷£¬´ó¼ÒµÚһʱ¼ä¶¼»áÏëµ½Docker£¬±Ï¾¹DockerÊÇĿǰ×îΪÁ÷ÐеÄÈÝÆ÷¿ªÔ´ÏîÄ¿£¬ËüʵÏÖÁËÒ»¸öÈÝÆ÷ÒýÇæ£¨Docker
engine£©£¬²¢ÇÒΪÈÝÆ÷µÄ´´½¨ºÍ¹ÜÀí¡¢ÈÝÆ÷¾µÏñµÄÉú³É¡¢·Ö·¢ºÍÏÂÔØÌṩһÌ׷dz£±ãÀûµÄ¹¤¾ßÁ´£¬¶øËüµÄÈÝÆ÷¾µÏñ¸ñʽ¼¸ºõ¾ÍÊÇÒµ½çµÄÊÂʵ±ê×¼¡£µ«Æäʵ³ýÁËDockerÖ®Í⣬ÔÚÈÝÆ÷µÄ¿ªÔ´Éú̬ȦÖл¹ÓÐÆäËüһЩÏîĿҲÔÚ×ö×Ô¼ºµÄÈÝÆ÷ÒýÇæ£¬ÕâÑùµÄÏîĿһ°ãÒ²±»³Æ×÷ΪÈÝÆ÷ÔËÐÐʱ£¨container
runtime£©£¬±ÈÈ磺CoreOSµÄrktºÍMesosµÄÈÝÆ÷ÒýÇæ£¨Mesos containerizer£©¡£
ÔÚ±¾ÎÄÖУ¬ÎÒ½«¶ÔMesosÈÝÆ÷ÒýÇæ½øÐÐÒ»¸öÈ«ÃæµÄ½éÉÜ£¬½âÊÍÔÚDockerÈç´ËÁ÷ÐеÄÇé¿öÏÂMesosΪʲô»¹Òª¼á³Ö×ö×Ô¼ºµÄÈÝÆ÷ÒýÇæ£¬½éÉÜMesosÈÝÆ÷ÒýÇæµÄ×ÜÌå¼Ü¹¹ºÍ¸÷ºËÐÄ×é¼þ£¬ÒÔ¼°Ëü¶ÔÈÝÆ÷¸÷Ïà¹Ø±ê×¼¹æ·¶µÄ²ÉÄɺÍÖ§³Ö¡£
ÈÝÆ÷ºÍÈÝÆ÷ÒýÇæµÄ¶¨Òå
Ê×ÏÈÎÒÃÇÀ´Á˽âÒ»ÏÂʲôÊÇÈÝÆ÷¡£ÎÒ¸öÈ˶ÔÈÝÆ÷µÄ¶¨ÒåÊÇ£ºÒ»¸ö»òÒ»×éʹÓÃÁËcgroups×ö×ÊÔ´ÏÞ¶¨¡¢Ê¹ÓÃÁËnamespace×ö×ÊÔ´¸ôÀë¡¢ÇÒʹÓÃÁ˵ľµÏñÎļþ×ö¸ùÎļþϵͳµÄ½ø³Ì¡£ÈçÏÂͼ1Ëùʾ£º

ͼ1
Óɴ˿ɼû£¬ÊµÏÖÈÝÆ÷µÄÈý´óºËÐļ¼Êõ·Ö±ðÊÇ£º
Cgroups£¨Control Cgroups£¬¿ØÖÆÈº×飩£ºLinuxÖеÄCgroups°üº¬¶à¸ö²»Í¬µÄ×Óϵͳ£¬È磺CPU¡¢memory¡¢deviceµÈ¡£Í¨¹ýÕâЩ×Óϵͳ¾Í¿ÉÒÔ¶ÔÈÝÆ÷Äܹ»Ê¹Óõĸ÷ÖÖ×ÊÔ´½øÐÐÏÞ¶¨£¬±ÈÈ磺ͨ¹ýCPU×Óϵͳ¿ÉÒÔÏÞ¶¨ÈÝÆ÷ʹÓÃCPU×ÊÔ´µÄÏà¶ÔÈ¨ÖØºÍµ¥Î»Ê±¼äÄÚÄܹ»Ê¹ÓõĵÄCPUʱ¼ä¡£
Namespace£¨ÃüÃû¿Õ¼ä£©£ºLinuxͬÑùÖ§³Ö¶à¸önamespace£¬È磺mount¡¢network¡¢pidµÈ¡£Í¨¹ýÕâЩnamespace¿ÉÒÔ¶ÔÈÝÆ÷½øÐв»Í¬Î¬¶ÈµÄ×ÊÔ´¸ôÀ룬±ÈÈ磺ͨ¹ýmount
namespace¿ÉÒÔÈÃÈÝÆ÷¾ßÓÐ×Ô¼º¶ÀÁ¢µÄ¹ÒÔØ¿Õ¼ä£¬ÔÚÖ÷»ú»ò±ðµÄÈÝÆ÷Öз¢ÉúµÄ¹ÒÔØÊ¼þ¶Ô¸ÃÈÝÆ÷¾Í²»¿É¼û£¬·´Ö®ÒàÈ»¡£Í¨¹ýnetwork
namespace¿ÉÒÔÈÃÈÝÆ÷¾ßÓÐ×Ô¼º¶ÀÁ¢µÄÍøÂçÐÒéÕ»£¬¶ø²»±ØºÍÆäËùÔÚÖ÷»ú¹²ÓÃͬһ¸öÍøÂçÐÒéÕ»¡£
Layered filesystem£¨·Ö²ãÎļþϵͳ£©£ºLinuxÖеÄlayered filesystemÓжàÖÖ²»Í¬µÄʵÏÖ£¬È磺AUFS¡¢overlayfsµÈ¡£Í¨¹ýÕâЩlayered
filesystemÅäºÏmount namespace¾Í¿ÉÒÔ¿ìËÙ²¿Êð³öÈÝÆ÷×Ô¼º¶ÀÁ¢µÄ¸ùÎļþϵͳ¡£¶øÇÒ£¬»ùÓÚͬһ¸ö¾µÏñÎļþ´´½¨³öÀ´µÄ¶à¸öÈÝÆ÷¿ÉÒÔ¹²Ïí¸Ã¾µÏñÎļþÖÐÏàͬµÄÖ»¶Á·Ö²ã£¬ÒÔ´ïµ½½ÚÊ¡Ö÷»ú´ÅÅ̿ռäµÄЧ¹û¡£
ÉÏÃæÕâÈýÖÖ¼¼Êõ¶¼ÊÇÔÚLinuxϵͳÖдæÔÚÒѾÃÇÒÏà¶Ô³ÉÊìµÄ¼¼Êõ£¬µ«ÈÃÖÕ¶ËÓû§Ö±½ÓʹÓÃËüÃÇÀ´´´½¨ºÍ¹ÜÀíÈÝÆ÷ÏÔÈ»²¢²»·½±ã¡£ËùÒÔ£¬ÈÝÆ÷ÒýÇæ¾ÍÓ¦Ô˶øÉúÁË£¬ËüËù×öµÄÖ÷Òª¹¤×÷¾ÍÊǽ«ÕâÈýÖÖ¼¼ÊõÔÚÆäÄÚ²¿ÓлúµØ½áºÏºÍÀûÓÃÆðÀ´ÒÔʵÏÖ´´½¨ÈÝÆ÷ºÍ¹ÜÀíÈÝÆ÷µÄÉúÃüÖÜÆÚ£¬²¢¶ÔÍâÌṩÓѺõĽӿÚÈÃÓû§Äܹ»·½±ãµÄ´´½¨ºÍ¹ÜÀíÈÝÆ÷¡£Cgroups¡¢namespaceºÍlayered
filesystemµÄÏêϸ½éÉÜÎҾͲ»ÔÙ±¾ÎÄÖÐ׸ÊöÁË£¬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔ²éÔÄLinuxÖÐÕâÈýÖÖ¼¼ÊõµÄÏà¹ØÎĵµ¡£
ÐèÒªÖ¸³öµÄÊÇ£¬ÈÝÆ÷ÒýÇæ¶ÔÕâÈýÖÖ¼¼ÊõµÄʹÓÃÍùÍùÊÇÓÐÑ¡ÔñÇҿɶ¨ÖƵ쬱ÈÈ磺Óû§¿ÉÒÔͨ¹ýÈÝÆ÷ÒýÇæ´´½¨Ò»¸öʹÓÃcgroups
memory×Óϵͳµ«²»Ê¹ÓÃCPU×ÓϵͳµÄÈÝÆ÷£¬ÕâÑùµÄÈÝÆ÷¶ÔÄÚ´æ×ÊÔ´µÄʹÓþͻáÊܵ½ÏàÓ¦µÄÏÞ¶¨£¬µ«¶ÔCPU×ÊÔ´µÄʹÓÃÔò²»ÊÜÈκÎÏÞ¶¨¡£Óû§Ò²¿ÉÒÔ´´½¨Ò»¸öʹÓÃmount
namespaceµ«²»Ê¹ÓÃnetwork namespaceµÄÈÝÆ÷£¬ÕâÑùµÄÈÝÆ÷¾Í»áÓÐ×Ô¼º¶ÀÁ¢µÄ¹ÒÔØ¿Õ¼ä£¬µ«ºÍÖ÷»ú¹²ÓÃÒ»¸öÍøÂçÐÒéÕ»¡£MesosÈÝÆ÷ÒýÇæÔÚÕâ·½ÃæµÄ¿É¶¨ÖÆ»¯½øÐе÷dz£³¹µ×£¬³ýÁËÉÏÃæËù˵µÄ¶Ôcgroups×ÓϵͳºÍnamespaceµÄ¶¨ÖÆÖ®Í⣬MesosÈÝÆ÷ÒýÇæ»¹Äܹ»Ö§³ÖÎÞ¾µÏñÎļþ´´½¨ÈÝÆ÷£¬ÕâÊÇÆäËüÈÝÆ÷ÒýÇæËù²»¾ß±¸µÄ¡£
MesosÈÝÆ÷ÒýÇæ²úÉúµÄ±³¾°
ÔÚDockerÈç´ËÁ÷ÐеÄÇé¿öÏ£¬MesosΪʲô»¹Òª¼á³Ö×ö×Ô¼ºµÄÈÝÆ÷ÒýÇæÄØ£¿ÆäʵMesosÔÚºÜÔçÆÚµÄ°æ±¾¾ÍºÍDocker½øÐÐÁ˼¯³É£¬Óû§¿ÉÒÔͨ¹ýMesos´´½¨Ò»¸öDockerÈÝÆ÷£¬ÔÚÄÚ²¿ÊµÏÖÉÏ£¬Mesos
agent»áµ÷ÓÃDockerµÄÃüÁîÐкÍDocker engineͨÐÅ£¬ÒÔÈÃÆä´´½¨DockerÈÝÆ÷¡£ÕâÒ²¾ÍÊÇÒâζ×ÅMesos¶ÔÈÝÆ÷µÄ¹ÜÀíÑÏÖØÒÀÀµÓÚDocker
engine£¬¶øÕâÖÖ×ö·¨µÄÎÊÌâÊÇ£º
Îȶ¨ÐÔ²»×㣺Mesos³£³£»á±»ÓÃÀ´¹ÜÀí¼¸Ç§ÉõÖÁÉÏÍò½ÚµãµÄÉú²ú»·¾³£¬¶øÔÚÈç´Ë´ó¹æÄ£µÄÉú²ú»·¾³ÖУ¬Îȶ¨ÐÔÊǼ«ÆäÖØÒªµÄ¡£¶øÔÚÕâÑùµÄ»·¾³ÖУ¬Í¨¹ýʵ²âÎÒÃÇ·¢ÏÖDocker
engineµÄÎȶ¨ÐÔÊÇÓÐËù²»×ãµÄ£¬ÓÐʱ»á³öÏÖÍ£Ö¹ÏìÓ¦ÉõÖÁһЩĪÃûÆäÃîµÄbug£¬¶øÕâÑùµÄÎÊÌâ·´Ó³µ½DockerÉçÇøÖкóÓÐʱÓÖÎÞ·¨¼°Ê±µÃµ½½â¾ö¡£Õâ¾Í´ÙʹÁËMesosµÄ¿ª·¢Õß¿ªÊ¼Éè¼ÆºÍʵÏÖ×Ô¼ºµÄÈÝÆ÷ÒýÇæ¡£
ÄÑÓÚÀ©Õ¹£ºMesosµÄÓû§³£³£»áÌá³öһЩºÍÈÝÆ÷Ïà¹ØµÄÐÂÐèÇ󣨱ÈÈ磺ÈÃÈÝÆ÷Äܹ»Ê¹ÓÃGPU×ÊÔ´£¬Í¨¹ýCNIÅäÖÃÈÝÆ÷µÄÍøÂ磬µÈµÈ£©£¬¶øÕâЩÐèÇó¶¼ÊÜÏÞÓÚDocker
engineµÄʵÏÖ£¬Èç¹ûDockerÉçÇø¾Ü¾ø²ÉÄÉÕâЩÐèÇ󣬻òÓÐÍêÈ«²»Í¬µÄʵÏÖ·½Ê½£¬ÄÇMesos×÷ΪDocker
engineÖ®Éϵĵ÷Ó÷½Ò²Î޼ƿÉÊ©¡£
ÖÚËùÖÜÖª£¬MesosµÄ¶¨Î»ÊÇÊý¾ÝÖÐÐIJÙ×÷ϵͳ£¬ËüÊÇÒ»¸ö·Ç³£ºÃµÄͨÓÃ×ÊÔ´¹ÜÀíºÍ×ÊÔ´µ÷¶Èϵͳ£¬Ò»¿ªÊ¼¾ÍÊÇÒ»¸ö¡°´óÄÔ¼¶¡°µÄ´æÔÚ£¬µ«Èç¹ûÖ»ÓС°´óÄÔ¡±Ã»ÓС°ËÄÖ«¡±£¨¶ÔÈÝÆ÷µÄÖ§³Ö¾ÍÊÇ¡°ËÄÖ«¡±µÄÒ»ÖÖ£©£¬»ò¡°ËÄÖ«¡°ÕÆÎÕÔÚ±ðÈËÊÖÖУ¬ÄÇMesos±¾ÉíºÍÆäÉú̬ȦµÄ¿É³ÖÐø·¢Õ¹ÏÔÈ»ÊÇÊÜÏ޵ġ£ËùÒÔ£¬·¢Õ¹×Ô¼ºµÄ¡°ËÄÖ«¡±ÊÇMesosÖð²½·¢Õ¹×³´óµÄ±ØÈ»Ñ¡Ôñ¡£
»ùÓÚÉÏÊöÕâЩÔÒò£¬MesosÉçÇø¾ö¶¨Òª×ö×Ô¼ºµÄÈÝÆ÷ÒýÇæ£¬Õâ¸öÈÝÆ÷ÒýÇæÍêÈ«²»ÒÀÀµÓÚDocker engine£¨¼´£ººÍDocker
engineûÓÐÈκν»»¥£©£¬µ«Í¬Ê±ËüÓÖÍêÃÀ¼æÈÝDocker¾µÏñÎļþ¡£ÕâÒ²¾ÍÒâζ×Å£¬Óû§¿ÉÒÔͨ¹ýMesosÔÚһ̨ûÓа²×°ÔËÐÐDocker
engineµÄÖ÷»úÉÏ£¬»ùÓÚÈÎÒâDocker¾µÏñ´´½¨³öÈÝÆ÷¡£
MesosÈÝÆ÷ÒýÇæµÄ×ÜÌå¼Ü¹¹ºÍºËÐÄ×é¼þ
Ê×ÏÈÎÒÃÇÀ´¿´Ò»ÏÂMesosµÄ×ÜÌå¼Ü¹¹£¬ÒÔ¼°ÈÝÆ÷ÒýÇæÔÚÆäÖеÄλÖá£

ͼ2
ÉÏͼ2ÖÐÀ¶É«²¿·ÖÊÇMesos×ÔÉíµÄ×é¼þ£¬¿ÉÒÔ¿´µ½MesosÊǵäÐ͵Ämaster + agent¼Ü¹¹¡£MasterÔËÐÐÔÚMesos¼¯ÈºÖеĹÜÀí½ÚµãÉÏ£¬¿ÉÒÔÓжà¸ö£¨Ò»°ãÉèÖÃΪÈý¸ö¡¢Îå¸öµÈÆæÊý¸ö£©£¬ËüÃÇÏ໥֮¼äͨ¹ýZookeeperÀ´½øÐÐleaderÑ¡¾Ù£¬±»Ñ¡¾Ù³ÉleaderµÄmaster¶ÔÍâÌṩ·þÎñ£¬¶øÆäËûmasterÔò×÷Ϊleader
masterµÄ±¸·ÝËæÊ±´ýÃü¡£MasterÖ®ÉÏ¿ÉÒÔÔËÐжà¸ö¼ÆËã¿ò¼Ü£¬ËüÃÇ»áµ÷ÓÃmasterÌṩµÄAPI·¢Æð´´½¨ÈÎÎñµÄÇëÇó¡£Master֮ϿÉÒÔ¹ÜÀíÈÎÒâ¶à¸ö¼ÆËã½Úµã£¬Ã¿¸ö¼ÆËã½ÚµãÉ϶¼ÔËÐÐÒ»¸öagent£¬Ëü¸ºÔðÏòmasterÉϱ¨±¾½ÚµãÉϵļÆËã×ÊÔ´£¬²¢½ÓÊÜmasterÏ·¢µÄ´´½¨ÈÎÎñµÄÇëÇ󣬽«ÈÎÎñ×÷ΪÈÝÆ÷ÔËÐÐÆðÀ´¡£¶øagentÄÚ²¿µÄÒ»¸ö×é¼þcontainerizer¾ÍÊÇÓÃÀ´¹ÜÀíÈÝÆ÷µÄÉúÃüÖÜÆÚµÄ£¨°üÀ¨£ºÈÝÆ÷µÄ´´½¨/¸üÐÂ/¼à¿Ø/Ïú»Ù£©£¬Ëü¾ÍÊÇMesosµÄÈÝÆ÷ÒýÇæ¡£
ÎÒÃÇÔÙÀ´½øÒ»²½¿´Ò»ÏÂMesosÈÝÆ÷ÒýÇæÄÚ²¿µÄ×ÜÌå¼Ü¹¹ºÍºËÐÄ×é¼þ¡£

ͼ3
ÈçÉÏͼËùʾ£¬MeossÈÝÆ÷ÒýÇæÄÚ²¿°üº¬Á˶à¸ö×é¼þ£¬Ö÷ÒªÓУºlauncher¡¢provisioner£¨ÆäÄÚ²¿ÓÖ°üº¬ÁËstoreºÍbackendÁ½¸ö×é¼þ£©ºÍisolator¡£ÏÂÃæÀ´ÖðÒ»½éÉÜÕâЩ×é¼þµÄÖ÷Òª¹¦ÄܺÍÓÃ;¡£
Launcher
LauncherÖ÷Òª¸ºÔð´´½¨ºÍÏú»ÙÈÝÆ÷£¬ÓÉÓÚÈÝÆ÷µÄ±¾ÖÊÆäʵ¾ÍÊÇÖ÷»úÉϵĽø³Ì£¬ËùÒÔlauncherÔÚÆäÄÚ²¿ÊµÏÖÉÏ£¬Ö÷Òª¾ÍÊÇÔÚÐèÒª´´½¨ÈÝÆ÷ʱ£¬µ÷ÓÃLinuxϵͳµ÷ÓÃfork()/clone()À´´´½¨ÈÝÆ÷µÄÖ÷½ø³Ì£¬ÔÚÐèÒªÏú»ÙÈÝÆ÷ʱ£¬µ÷ÓÃLinuxϵͳµ÷ÓÃkill()À´É±µôÈÝÆ÷ÖеĽø³Ì¡£LauncherÔÚµ÷ÓÃclone()ʱ¸ù¾ÝÐèÒª°ÑÈÝÆ÷´´½¨ÔÚÆä×Ô¼ºµÄnamespaceÖУ¬±ÈÈ磺Èç¹ûÈÝÆ÷ÐèÒª×Ô¼ºµÄÍøÂçÐÒéÕ»£¬ÄÇlauncherÔÚµ÷ÓÃclone()ʱ¾Í»á¼ÓÈëCLONE_NEWNETµÄ²ÎÊýÀ´ÎªÈÝÆ÷´´½¨Ò»¸ö×Ô¼ºµÄnetwork
namespace¡£
LauncherĿǰÔÚMesosÖÐÓÐÁ½ÖÖ²»Í¬µÄʵÏÖ£ºLinux launcherºÍPosix launcher£¬ÉÏÃæÌáµ½µÄ¾ÍÊÇLinux
launcherµÄʵÏÖ·½Ê½£¬Posix launcherÊÊÓÃÓÚ¼æÈÝPosix±ê×¼µÄÈκλ·¾³£¬ËüÖ÷ÒªÊÇͨ¹ý½ø³Ì×飨process
group£©ºÍ»á»°£¨session£©À´ÊµÏÖÈÝÆ÷¡£ÔÚLinux»·¾³ÖУ¬Mesos agent»áĬÈÏÆôÓÃLinux
launcher¡£
Provisioner
ΪÁËÖ§³Ö»ùÓÚ¾µÏñÎļþ´´½¨ÈÝÆ÷£¬MesosΪÆäÈÝÆ÷ÒýÇæÒýÈëÁËprovisioner¡£Õâ¸ö×é¼þÍê³ÉµÄÖ÷Òª¹¤×÷ÊÇͨ¹ýstore×é¼þÀ´ÏÂÔØºÍ»º´æÖ¸¶¨µÄ¾µÏñÎļþ£¬Í¨¹ýbackend×é¼þ»ùÓÚÖ¸¶¨µÄ¾µÏñÎļþÀ´²¿ÊðÈÝÆ÷µÄ¸ùÎļþϵͳ¡£
Store
MesosÈÝÆ÷ÒýÇæÖÐĿǰÒѾʵÏÖÁËAppc storeºÍDocker store£¬·Ö±ðÓÃÀ´Ö§³ÖAppc¸ñʽµÄ¾µÏñºÍDocker¾µÏñ£¬´ËÍ⣬MesosÉçÇøÕýÔÚʵÏÖOCI
storeÒÔÖ§³Ö·ûºÏOCI£¨Open Container Initiative£©±ê×¼¸ñʽµÄ¾µÏñ¡£ËùÒÔ»ù±¾ÉÏ£¬Õë¶ÔÿÖÖ²»Í¬µÄ¾µÏñÎļþ¸ñʽ£¬Mesos¶¼»áȥʵÏÖÒ»¸ö¶ÔÓ¦µÄstore¡£¶øÒÔºóµ±OCI¾µÏñ¸ñʽ³ÉΪҵ½çÈÝÆ÷¾µÏñÎļþµÄ±ê×¼¸ñʽʱ£¬ÎÒÃÇ¿ÉÄܻῼÂÇÔÚMesosÈÝÆ÷ÒýÇæÖÐÖ»±£ÁôÒ»¸öOCI
store¡£
StoreÏÂÔØµÄ¾µÏñ»á±»×÷ΪÊäÈë´«¸øbackendÀ´È¥²¿ÊðÈÝÆ÷µÄ¸ùÎļþϵͳ£¬ÇҸþµÏñ»á±»»º´æÔÚagent±¾µØµÄ¹¤×÷Ŀ¼ÖУ¬µ±Óû§»ùÓÚͬһ¾µÏñÔٴδ´½¨Ò»¸öÈÝÆ÷ʱ£¬Store¾Í²»»áÖØ¸´ÏÂÔØ¸Ã¾µÏñ£¬¶øÊÇÖ±½Ó°Ñ»º´æÖеľµÏñ´«¸øbackend¡£
Backend
BackendµÄÖ÷Òª¹¤×÷¾ÍÊÇ»ùÓÚÖ¸¶¨¾µÏñÀ´²¿ÊðÈÝÆ÷µÄ¸ùÎļþϵͳ¡£Ä¿Ç°MesosÈÝÆ÷ÒýÇæÖÐʵÏÖÁËËĸö²»Í¬µÄbackend£º
AUFS£ºAUFSÊÇLinuxÖеÄÒ»ÖÖ·Ö²ãÎļþϵͳ¡£AUFS backend¾ÍÊǽèÖúÕâÖÖ·Ö²ãÎļþϵͳ°ÑÖ¸¶¨¾µÏñÎļþÖеĶà¸ö·Ö²ã¹ÒÔØ×éºÏ³ÉÒ»¸öÍêÕûµÄ¸ùÎļþϵͳ¸øÈÝÆ÷ʹÓ᣻ùÓÚͬһ¾µÏñÎļþ´´½¨³öÀ´µÄ¶à¸öÈÝÆ÷¹²ÏíÏàͬµÄÖ»¶Á²ã£¬ÇÒ¸÷×ÔÓµÓжÀÁ¢µÄ¿Éд²ã¡£
Overlay£ºOverlay backendºÍAUFS backend·Ç³£ÀàËÆ£¬ËüÊǽèÖúOverlayfsÀ´¹ÒÔØ×éºÏÈÝÆ÷µÄ¸ùÎļþϵͳ¡£OverlayfsÒ²ÊÇÒ»ÖÖ·Ö²ãÎļþϵͳ£¬ËüµÄÔÀíºÍAUFSÀàËÆ£¬
ËùÒÔ£¬AUFS backendËù¾ß±¸µÄÓŵãOverlay backend¶¼ÓУ¬µ«²»Í¬µÄÊÇOverlayfsÒѾ±»Linux±ê×¼ÄÚºËËù½ÓÊÜ£¬ËùÒÔ£¬ËüÔÚLinuxƽ̨ÉÏÓиüºÃµÄÖ§³Ö¡£
Copy£ºCopy backendµÄ×ö·¨·Ç³£¼òµ¥£¬Ëü¾ÍÊǼòµ¥µØ°ÑÖ¸¶¨¾µÏñÎļþµÄËùÓзֲ㶼¿½±´µ½Ò»¸öÖ¸¶¨Ä¿Â¼ÖÐ×÷ΪÈÝÆ÷µÄ¸ùÎļþϵͳ¡£ËüµÄȱµãÏÔ¶øÒ×¼û£º»ùÓÚͬһ¾µÏñ´´½¨µÄ¶à¸öÈÝÆ÷Ö®¼äÎÞ·¨¹²ÏíÈκηֲ㣬Õâ¶Ô¼ÆËã½ÚµãµÄ´ÅÅ̿ռäÔì³ÉÁËÒ»¶¨µÄÀË·Ñ£¬ÇÒÔÚ¿½±´¾µÏñ·Ö²ãʱҲ»áÏûºÄ½Ï´óµÄ´ÅÅÌI/O¡£
Bind£ºBind backend±È½ÏÌØÊ⣬ËüÖ»Äܹ»Ö§³Öµ¥·Ö²ãµÄ¾µÏñ¡£ËüÊÇÀûÓÃbind mountÕâÒ»¼¼Êõ°Ñµ¥·Ö²ãµÄ¾µÏñÒÔÖ»¶ÁµÄ·½Ê½¹ÒÔØµ½Ö¸¶¨Ä¿Â¼ÏÂ×÷ΪÈÝÆ÷µÄ¸ùÎļþϵͳ¡£Ïà¶ÔÓÚCopy
backend£¬Bind backendµÄËٶȸü¿ì£¨¼¸ºõ²»ÐèÒªÏûºÄ´ÅÅÌI/O£©£¬ÇÒ¶à¸öÈÝÆ÷¿ÉÒÔ¹²Ïíͬһ¾µÏñ£¬µ«È±µã¾ÍÊÇÖ»ÄÜÖ§³Öµ¥·Ö²ã¾µÏñ£¬ÇÒ¸ùÎļþϵͳÊÇÖ»¶ÁµÄ£¬Èç¹ûÈÝÆ÷ÔÚÔËÐÐʱÐèҪдÈëÊý¾Ý£¬¾ÍÖ»ÄÜͨ¹ý¶îÍâ¹ÒÔØÍⲿ¾íµÄ·½Ê½À´ÊµÏÖ¡£
ÔÚÓû§Ã»ÓÐÖ¸¶¨Ê¹ÓÃijÖÖbackendµÄÇé¿öÏ£¬Mesos agentÔÚÆô¶¯Ê±»áÒÔÈçÏÂÂß¼À´×Ô¶¯ÆôÓÃÒ»ÖÖbackend£º
Èç¹û±¾½ÚµãÖ§³ÖOverlayfs£¬ÆôÓÃOverlay backend¡£
Èç¹û±¾½Úµã²»Ö§³ÖOverlayfsµ«Ö§³ÖAUFS£¬ÆôÓÃAUFS backend¡£
Èç¹ûOverlayFSºÍAUFS¶¼²»Ö§³Ö£¬ÆôÓÃCopy backend¡£
ÓÉÓÚBind backendµÄ¾ÖÏÞÐԽϴó£¬Mesos agent²¢²»»á×Ô¶¯ÆôÓÃËü¡£
Isolator
Isolator¸ºÔð¸ù¾ÝÓû§´´½¨ÈÝÆ÷ʱÌá³öµÄÐèÇó£¬ÎªÃ¿¸öÈÝÆ÷½øÐÐÖ¸¶¨µÄ×ÊÔ´ÏÞ¶¨£¬ÇÒÖ¸ÒýlauncherΪÈÝÆ÷½øÐÐÏàÓ¦µÄ×ÊÔ´¸ôÀ롣ĿǰMesosÄÚ²¿ÒѾʵÏÖÁËÊ®¶à¸ö²»Í¬µÄisolator£¬±ÈÈ磺cgroups
isolatorͨ¹ýLinux cgroupsÀ´¶ÔÈÝÆ÷½øÐÐCPU¡¢memoryµÈ×ÊÔ´µÄÏÞ¶¨£¬¶øCNI
isolator»áÖ¸ÒýlauncherΪÿ¸öÈÝÆ÷´´½¨Ò»¸ö¶ÀÁ¢network namespaceÒÔʵÏÖÍøÂç¸ôÀ룬²¢µ÷ÓÃCNI²å¼þΪÈÝÆ÷ÅäÖÃÍøÂ磨È磺IPµØÖ·¡¢DNSµÈ£©¡£
IsolatorÔÚMesosÖÐÓÐ×ŷdz£ºÃµÄÄ£¿é»¯Éè¼Æ£¬ÇÒ¶¨ÒåÁËÒ»Ì׷dz£ÇåÎúµÄAPI½Ó¿ÚÈÃÿ¸öisolator¿ÉÒÔ¸ù¾Ý×Ô¼ºËùÐèÒªÍê³ÉµÄ¹¦ÄÜÈ¥ÓÐÑ¡ÔñµØÊµÏÖ¡£ÕâÌ×isolator½Ó¿Ú¹á´©ÈÝÆ÷µÄÕû¸öÉúÃüÖÜÆÚ£¬MesosÈÝÆ÷ÒýÇæ»áÔÚÈÝÆ÷ÉúÃüÖÜÆÚµÄ²»Í¬½×¶Îͨ¹ý¶ÔÓ¦µÄ½Ó¿ÚÀ´µ÷ÓÃisolatorÍê³É²»Í¬µÄ¹¦ÄÜ¡£ÏÂÃæÊÇһЩÖ÷ÒªµÄisolator½Ó¿Ú£º
prepare()£ºÕâ¸ö½Ó¿ÚÔÚÈÝÆ÷±»´´½¨Ö®Ç°±»µ÷Óã¬ÓÃÀ´Íê³ÉһЩ׼±¸ÐԵŤ×÷¡£±ÈÈ磺cgroups
isolatorÔÚÕâ¸ö½Ó¿ÚÖлáΪÈÝÆ÷´´½¨¶ÔÓ¦µÄcgroups¡£
isolate()£ºÕâ¸ö½Ó¿ÚÔÚÈÝÆ÷¸Õ¸Õ±»´´½¨³öÀ´µ«»¹Î´ÔËÐÐʱ±»µ÷Óã¬ÓÃÀ´½øÐÐһЩ×ÊÔ´¸ôÀëÐԵŤ×÷£¬±ÈÈ磺cgroups
isolatorÔÚÕâ¸ö½Ó¿ÚÖлá°ÑÈÝÆ÷µÄÖ÷½ø³Ì·ÅÈëÉÏÒ»²½´´½¨µÄcgroupsÖÐÒÔʵÏÖ×ÊÔ´¸ôÀë¡£
update()£ºµ±ÈÝÆ÷ËùÉêÇëµÄ×ÊÔ´·¢Éú±ä»¯Ê±£¨È磺ÈÝÆ÷ÔÚÔËÐÐʱÉêÇëʹÓøü¶àµÄCPU×ÊÔ´£©£¬Õâ¸ö½Ó¿Ú»á±»µ÷Óã¬ËüÓÃÀ´ÔÚÔËÐÐʱ¶¯Ì¬µ÷Õû¶ÔÈÝÆ÷µÄ×ÊÔ´ÏÞ¶¨¡£
cleanup()£ºµ±ÈÝÆ÷±»Ïú»ÙʱÕâ¸ö½Ó¿Ú»á±»µ÷Óõ½£¬ÓÃÀ´½øÐÐÏà¹ØµÄÇåÀí¹¤×÷¡£±ÈÈ磺cgroups
isolator»á°Ñ֮ǰΪÈÝÆ÷´´½¨µÄcgroupsɾ³ý¡£
½èÖúÓÚÕâÖÖÄ£¿é»¯ºÍ½Ó¿Ú±ê×¼»¯µÄÉè¼Æ£¬Óû§¿ÉÒԺܷ½±ãµØ¸ù¾Ý×Ô¼ºµÄÐèÇóȥʵÏÖÒ»¸ö×Ô¼ºµÄisolator£¬È»ºó½«Æä²åÈëµ½Mesos
agentÖÐÈ¥Íê³ÉÌØ¶¨×ÊÔ´µÄÏÞ¶¨ºÍ¸ôÀë¡£
MesosÈÝÆ÷ÒýÇæ¶ÔÈÝÆ÷±ê×¼¹æ·¶µÄÖ§³Ö
ÈÝÆ÷ÕâÏî¼¼ÊõÔÚ½ü¼¸ÄêÀ´·ÉËÙ·¢Õ¹£¬ÊµÏÖÁ˱¬Õ¨Ê½µÄÔö³¤¡£µ«¾ÍÏñÈκÎÒ»ÖÖ³ÉÊìµÄ¼¼ÊõÒ»Ñù£¬ÔڶȹýÁË¡°Ò°ÂùÉú³¤ÆÚ¡±ºó£¬¶¼ÐèÒªÖÆ¶¨ÏàÓ¦µÄ¹æ·¶À´¶ÔÆä½øÐбê×¼»¯£¬ÈÃËüÄܹ»³ÖÐøÎȶ¨µØ·¢Õ¹¡£ÈÝÆ÷¼¼ÊõÒ²²»ÀýÍ⣬ĿǰÒÑÖªµÄÈÝÆ÷Ïà¹ØµÄ±ê×¼¹æ·¶ÓУº
OCI£¨Open Container Initiative£©£º×¨×¢ÓÚÈÝÆ÷¾µÏñÎļþ¸ñʽºÍÈÝÆ÷ÉúÃüÖÜÆÚ¹ÜÀíµÄ¹æ·¶£¬Ä¿Ç°ÒѾ·¢²¼ÁË1.0µÄ°æ±¾¡£
CNI£¨Container Network Interface£©£º×¨×¢ÓÚÈÝÆ÷ÍøÂçÖ§³ÖµÄ¹æ·¶£¬Ä¿Ç°ÒѾ·¢²¼ÁË0.6.0°æ±¾¡£
CSI£¨Container Storage Interface£©£º×¨×¢ÓÚÈÝÆ÷´æ´¢Ö§³ÖµÄ¹æ·¶£¬Ä¿Ç°»¹Ôڲݰ¸½×¶Î¡£
±ê×¼¹æ·¶´øÀ´µÄÒæ´¦ÊÇÏÔ¶øÒ×¼ûµÄ£º
¶ÔÓÚÖÕ¶ËÓû§£º±ê×¼»¯µÄÈÝÆ÷¾µÏñºÍÈÝÆ÷ÔËÐÐʱÄܹ»ÈÃÓû§²»±Øµ£ÐÄ×Ô¼º±»Ä³¸öÈÝÆ÷ÒýÇæËù¡°°ó¼Ü¡±£¬¿ÉÒÔ¸ü¼ÓרעÓÚ¶Ô×ÔÉíÒµÎñºÍÓ¦ÓõÄÈÝÆ÷»¯£¬¸ü¼Ó×ÔÓɵØÈ¥Ñ¡ÔñÈÝÆ÷ÒýÇæ¡£
¶ÔÓÚÍøÂç/´æ´¢ÌṩÉÌ£º±ê×¼¹æ·¶Öж¨ÒåµÄÍøÂç/´æ´¢¼¯³É½Ó¿Ú°ÑÈÝÆ÷ÒýÇæµÄÄÚ²¿ÊµÏֺͲ»Í¬µÄÍøÂç/´æ´¢½â¾ö·½°¸¸ôÀ뿪À´£¬Èø÷ÌṩÉÌÖ»ÐèʵÏÖÒ»Ì×±ê×¼»¯½Ó¿Ú¾Í¿ÉÒÔ°Ñ×Ô¼ºµÄ½â¾ö·½°¸·½±ãµØ¼¯³Éµ½¸÷¸öÈÝÆ÷ÒýÇæÖÐÈ¥£¬¶ø²»±Ø·Ñʱ·ÑÁ¦µØÈ¥Öð¸öÊÊÅ䲻ͬµÄÈÝÆ÷ÒýÇæ¡£
MesosÈÝÆ÷ÒýÇæÔÚÉè¼ÆºÍʵÏÖÖ®³õ£¬¾Í³ÖÓÐÓµ±§ºÍ²ÉÄÉÒµ½ç±ê×¼¹æ·¶µÄ̬¶È£¬ÊÇ×îÔçÖ§³ÖCNIµÄÈÝÆ÷ÒýÇæÖ®Ò»£¬ÇÒĿǰÕýÔÚ»ý¼«ÊµÏÖ¶ÔOCI¾µÏñ¹æ·¶µÄÖ§³Ö¡£CSIĿǰÕýÔÚÓÉMesosÉçÇøºÍKubernetsÉçÇøÒ»ÆðÖ÷µ¼²¢Öð²½ÍêÉÆ£¬´ýCSIÖð½¥³ÉÊìºó£¬MesosÈÝÆ÷ÒýÇæ×ÔÈ»»áµÚһʱ¼äÖ§³Ö¡£ÈÕºó£¬×÷Ϊͬʱ֧³ÖÈý´ó±ê×¼¹æ·¶µÄÈÝÆ÷ÒýÇæ£¬MesosÈÝÆ÷ÒýÇæ×ÔÈ»»á¸üºÃµØ·þÎñÉϲãÓ¦Óÿò¼ÜºÍÖÕ¶ËÓû§£¬Í¬Ê±¸ü¼ÓÍêÉÆµØÖ§³Ö¸÷ÖÖÖ÷Á÷ÍøÂç/´æ´¢½â¾ö·½°¸¡£ |