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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëdz³öDocker Swarm
 
×÷Õß ËïºêÁÁ À´Ô´ DaoCloud²©¿Í »ðÁú¹ûÈí¼þ  ·¢²¼ÓÚ 2015-02-02
  2080  次浏览      27
 

Swarm·¢²¼ÓÚ2014Äê12ÔµÄDockerCon£¬ÓÃÒÔ¹ÜÀíDocker¼¯Èº£¬²¢½«Æä³éÏóΪһ¸öÐéÄâÕûÌ屩¶¸øÓû§¡£Æä¼Ü¹¹ÒÔ¼°ÃüÁî±È½Ï¼òµ¥£¬Í¬Ê±Ò²ÎªÏ£Íû¹ÜÀíDocker¼¯ÈºµÄDocker°®ºÃÕß½µµÍÁËѧϰºÍʹÓÃÃż÷¡£

1.Swarm¼ò½é

Docker×Ôµ®ÉúÒÔÀ´£¬ÆäÈÝÆ÷ÌØÐÔÒÔ¼°¾µÏñÌØÐÔ¸øDevOps°®ºÃÕß´øÀ´ÁËÖî¶à·½±ã¡£È»¶øÔںܳ¤µÄÒ»¶Îʱ¼äÄÚ£¬DockerÖ»ÄÜÔÚµ¥hostÉÏÔËÐУ¬Æä¿çhostµÄ²¿Êð¡¢ÔËÐÐÓë¹ÜÀíÄÜÁ¦ÆÄÊÜÍâ½çÚ¸²¡¡£¿çhostÄÜÁ¦µÄ±¡Èõ£¬Ö±½Óµ¼ÖÂDockerÈÝÆ÷ÓëhostµÄ½ôñîºÏ£¬ÕâÖÖÇé¿öÏ£¬DockerÈÝÆ÷µÄÁé»îÐÔºÜÄÑÁîÈËÂúÒ⣬ÈÝÆ÷µÄÇ¨ÒÆ¡¢·Ö×éµÈ¶¼³ÉΪºÜÄÑʵÏֵŦÄܵ㡣

SwarmÊÇDocker¹«Ë¾ÔÚ2014Äê12Ô³õз¢²¼µÄÈÝÆ÷¹ÜÀí¹¤¾ß¡£ºÍSwarmÒ»Æð·¢²¼µÄDocker¹ÜÀí¹¤¾ß»¹ÓÐMachineÒÔ¼°Compose¡£

SwarmÊÇÒ»Ì×½ÏΪ¼òµ¥µÄ¹¤¾ß£¬ÓÃÒÔ¹ÜÀíDocker¼¯Èº£¬Ê¹µÃDocker¼¯Èº±©Â¶¸øÓû§Ê±Ï൱ÓÚÒ»¸öÐéÄâµÄÕûÌå¡£SwarmʹÓñê×¼µÄDocker API½Ó¿Ú×÷ΪÆäǰ¶Ë·ÃÎÊÈë¿Ú£¬»»ÑÔÖ®£¬¸÷ÖÖÐÎʽµÄDocker Client(dockerclient in go, docker_py, dockerµÈ)¾ù¿ÉÒÔÖ±½ÓÓëSwarmͨÐÅ¡£Swarm¼¸ºõÈ«²¿ÓÃGoÓïÑÔÀ´Íê³É¿ª·¢£¬²¢ÇÒ»¹´¦ÓÚAlpha°æ±¾£¬Ä¿Ç°ÔÚgithubÉÏ·¢²¼µÄ°æ±¾½öÓÐv0.1.0-rc1¡£È»¶øSwarmµÄ·¢Õ¹Ê®·Ö¿ìËÙ£¬¹¦ÄܺÍÌØÐԵıä¸üµü´ú»¹·Ç³£Æµ·±¡£Òò´Ë£¬¿ÉÒÔ˵Swarm»¹²»ÍƼö±»ÓÃÓÚÉú²ú»·¾³ÖУ¬µ«¿ÉÒԿ϶¨µÄÊÇSwarmÊÇÒ»ÏîºÜÓÐǰ;µÄ¼¼Êõ¡£

SwarmµÄÉè¼ÆºÍÆäËûDockerÏîĿһÑù£¬×ñÑ­“batteries included but removable”Ô­Ôò¡£±ÊÕß¶Ô¸ÃÔ­ÔòµÄÀí½âÊÇ£ºbatteries included´ú±íÉè¼ÆSwarmʱ£¬ÎªÁËÍêÈ«ÌåÏÖ·Ö²¼Ê½ÈÝÆ÷¼¯Èº²¿Êð¡¢ÔËÐÐÓë¹ÜÀí¹¦ÄܵÄÍêÕûÐÔ£¬SwarmºÍDockerЭͬ¹¤×÷£¬ÒԴﵽЧ¹û£»“but removable”Òâζ×ÅSwarmÓëDocker²¢·Ç½ôñîºÏ£¬ÕâÌ×¹ÜÀíÒýÇæ²¢Î´ÇÖÈëDockerµÄʹÓã¬Í¬Ê±ÕâÌ×»úÖÆÒ²¿ÉÒÔÓÃÒÔÆäËûÈÝÆ÷¼¼ÊõµÄ¼¯Èº²¿Êð¡¢ÔËÐÐÓë¹ÜÀí¡£

±¾ÎĽ«´ÓÒÔÏÂÁ½µã·ÖÎöSwarm£º

  • Swarm¼Ü¹¹
  • SwarmÃüÁî

2.Swarm¼Ü¹¹

Swarm×÷Ϊһ¸ö¹ÜÀíDocker¼¯ÈºµÄ¹¤¾ß£¬Ê×ÏÈÐèÒª½«Æä²¿ÊðÆðÀ´£¬¿ÉÒÔµ¥¶À½«Swarm²¿ÊðÓÚÒ»¸ö½Úµã¡£ÁíÍ⣬×ÔÈ»ÐèÒªÒ»¸öDocker¼¯Èº£¬¼¯ÈºÉÏÿһ¸ö½Úµã¾ù°²×°ÓÐDocker¡£¾ßÌåµÄSwarm¼Ü¹¹Í¼¿ÉÒÔ²ÎÕÕÏÂͼ£º

Swarm¼Ü¹¹Í¼

Swarm¼Ü¹¹ÖÐ×îÖ÷ÒªµÄ´¦Àí²¿·Ö×ÔÈ»ÊÇSwarm½Úµã£¬Swarm¹ÜÀíµÄ¶ÔÏó×ÔÈ»ÊÇDocker Cluster£¬Docker ClusterÓɶà¸öDocker Node×é³É£¬¶ø¸ºÔð¸øSwarm·¢ËÍÇëÇóµÄÊÇDocker Client¡£

3.SwarmÃüÁî

Swarm¼Ü¹¹Í¼¿ÉÒÔÈôó¼Ò¶ÔSwarmÓÐÒ»¸ö³õ²½µÄÈÏʶ£¬±ÈÈçSwarmµÄ¾ßÌ幤×÷Á÷³Ì£ºDocker Client·¢ËÍÇëÇó¸øSwarm£»Swarm´¦ÀíÇëÇó²¢·¢ËÍÖÁÏàÓ¦µÄDocker Node£»Docker NodeÖ´ÐÐÏàÓ¦µÄ²Ù×÷²¢·µ»ØÏìÓ¦¡£³ý´ËÖ®Í⣬SwarmµÄ¹¤×÷Ô­ÀíÒÀÈ»»¹²»¹»Ã÷ÁË¡£

ÉîÈëÀí½âSwarmµÄ¹¤×÷Ô­Àí£¬¿ÉÒÔÏÈ´ÓSwarmÌṩµÄÃüÁîÈëÊÖ¡£SwarmÖ§³ÖµÄÃüÁîÖ÷ÒªÓÐ4¸ö£ºswarm create¡¢swarm manage¡¢swarm join¡¢swarm list¡£µ±È»»¹ÓÐÒ»¸öswarm helpÃüÁ¸ÃÃüÁîÓÃÓÚÖ¸µ¼´ó¼ÒÈçºÎÕýȷʹÓÃswarmÃüÁ±¾ÎIJ»ÔÙ׸Êö¡£

3.1 swarm create

SwarmÖÐswarm createÃüÁîÓÃÓÚ´´½¨Ò»¸ö¼¯Èº±êÖ¾£¬ÓÃÓÚSwarm¹ÜÀíDocker¼¯ÈºÊ±£¬Docker NodeµÄ½Úµã·¢ÏÖ¹¦ÄÜ¡£

·¢Æð¸ÃÃüÁîÖ®ºó£¬Swarm»áǰÍùDocker HubÉÏÄÚ½¨µÄ·¢ÏÖ·þÎñÖлñȡһ¸öÈ«ÇòΨһµÄtoken£¬ÓÃÒÔΨһµÄ±êʶSwarm¹ÜÀíµÄDocker¼¯Èº¡£

×¢£ºSwarmµÄÔËÐÐÐèҪʹÓ÷þÎñ·¢ÏÖ£¬Ä¿Ç°¸Ã·þÎñÄÚ½¨ÓëDocker Hub£¬¸Ã·þÎñ·¢ÏÖ»úÖÆÄ¿Ç°»¹ÔÚalpha°æ±¾£¬Õ¾µãΪ£ºhttp://discovery-stage.hub/docker.com ¡£

3.2 swarm manage

SwarmÖÐswarm manageÊÇ×îÎªÖØÒªµÄ¹ÜÀíÃüÁî¡£Ò»µ©swarm manageÃüÁîÔÚSwarm½ÚµãÉϱ»´¥·¢£¬Ôò˵Ã÷Óû§ÐèÒªswarm¿ªÊ¼¹ÜÀíDocker¼¯Èº¡£´ÓÔËÐÐÁ÷³ÌµÄ½Ç¶ÈÀ´½²£¬swarm¾­ÀúµÄ½×¶ÎÖ÷ÒªÓÐÁ½µã£ºÆô¶¯swarm¡¢½ÓÊÕ²¢´¦ÀíDocker¼¯Èº¹ÜÀíÇëÇó¡£

SwarmÆô¶¯µÄ¹ý³Ì°üº¬Èý¸ö²½Ö裺

  1. ·¢ÏÖDocker¼¯ÈºÖеĸ÷¸ö½Úµã£¬ÊÕ¼¯½Úµã״̬¡¢½ÇÉ«ÐÅÏ¢£¬²¢¼àÊÓ½Úµã״̬µÄ±ä»¯£»
  2. ³õʼ»¯ÄÚ²¿µ÷¶È£¨scheduler£©Ä£¿é£»
  3. ´´½¨²¢Æô¶¯API¼àÌý·þÎñÄ£¿é£»

µÚÒ»¸ö²½Ö裬Swarm·¢ÏÖDocker¼¯ÈºÖеĽڵ㡣·¢ÏÖ£¨discovery£©ÊÇSwarmÖÐÓÃÓÚά»¤Docker¼¯Èº×´Ì¬µÄ»úÖÆ¡£¼ÈÈ»Éæ¼°µ½·¢ÏÖ£¨discovery£©£¬ÄÇÔÚÕâ֮ǰ±ØÐëÏÈÓÐ×¢²á£¨register£©¡£SwarmÖÐÓÐרߺÔð·¢ÏÖ£¨discovery£©µÄÄ£¿é£¬¶ø¹ØÓÚ×¢²á£¨register£©²¿·Ö£¬²»Í¬µÄdiscoveryģʽÏ£¬×¢²á£¨register£©Ò²»áÓв»Í¬µÄÐÎʽ¡£

Ŀǰ£¬SwarmÖÐÌṩÁË5ÖÖ²»Í¬µÄ·¢ÏÖ£¨discovery£©»úÖÆ£ºNode Discovery¡¢File Discovery¡¢Consul Discovery¡¢EtcD DiscoveryºÍZookeeper Discovery¡£

µÚ¶þ¸ö²½Ö裬SwarmÄÚ²¿µÄµ÷¶È£¨scheduler£©Ä£¿é±»³õʼ»¯¡£swarmͨ¹ý·¢ÏÖ»úÖÆ·¢ÏÖËùÓÐ×¢²áµÄDocker Node£¬²¢ÊÕ¼¯µ½ËùÓÐDocker NodeµÄ״̬ÒÔ¼°¾ßÌåÐÅÏ¢¡£´Ëºó£¬Ò»µ©Swarm½ÓÊÕµ½¾ßÌåµÄDocker¹ÜÀíÇëÇó£¬SwarmÐèÒª¶ÔÇëÇó½øÐд¦Àí£¬²¢Í¨¹ýËùÓÐDocker NodeµÄ״̬ÒÔ¼°¾ßÌåÐÅÏ¢£¬À´É¸Ñ¡£¨filter£©¾ö²ßµ½µ×ÄÄЩDocker NodeÂú×ãÒªÇ󣬲¢Í¨¹ýÒ»¶¨µÄ²ßÂÔ£¨strategy£©½«ÇëÇóת·¢ÖÁ¾ßÌåµÄÒ»¸öDocker Node¡£

µÚÈý¸ö²½Ö裬Swarm´´½¨²¢³õʼ»¯API¼àÌý·þÎñÄ£¿é¡£´Ó¹¦ÄܵĽǶÈÀ´½²£¬¿ÉÒÔ½«¸ÃÄ£¿é³éÏóΪSwarm Server¡£ÐèҪ˵Ã÷µÄÊÇ£ºËäÈ»Swarm ServerÍêÈ«¼æÈÝDockerµÄAPI£¬µ«ÊÇÓв»ÉÙDockerµÄÃüÁîĿǰÊDz»Ö§³ÖµÄ£¬±Ï¾¹¹ÜÀíDocker¼¯ÈºÓë¹ÜÀíµ¥¶ÀµÄDocker»áÓÐÒ»Ð©Çø±ð¡£µ±Swarm Server±»³õʼ»¯²¢Íê³É¼àÌýÖ®ºó£¬Óû§¼´¿ÉÒÔͨ¹ýDocker ClientÏòSwarm·¢ËÍDocker¼¯ÈºµÄ¹ÜÀíÇëÇó¡£

SwarmµÄswarm manage½ÓÊÕ²¢´¦ÀíDocker¼¯ÈºµÄ¹ÜÀíÇëÇ󣬼´ÊÇSwarmÄÚ²¿¶à¸öÄ£¿éЭͬºÏ×÷µÄ½á¹û¡£ÇëÇóÈë¿ÚΪSwarm Server£¬´¦ÀíÒýÇæÎªScheduler£¬½ÚµãÐÅÏ¢ÒÀ¿¿Disocovery¡£

3.3 swarm join

SwarmµÄswarm joinÃüÁîÓÃÓÚ½«Docker NodeÌí¼ÓÖÁSwarm¹ÜÀíµÄDocker¼¯ÈºÖС£´ÓÕâµãÒ²¿ÉÒÔ¿´³öswarm joinÃüÁîµÄÖ´ÐÐλÓÚDocker Node£¬Òò´ËÔÚDocker NodeÉÏÔËÐиÃÃüÁÊ×ÏÈÐèÒªÔÚDocker NodeÉϰ²×°Swarm£¬ÓÉÓÚ¸ÃSwarmÖ»»áÖ´ÐÐswarm joinÃüÁ¹Ê¿ÉÒÔ½«Æäµ±³ÉDocker NodeÉÏÓÃÓÚ×¢²áµÄagentÄ£¿é¡£

¹¦ÄܶøÑÔ£¬swarm join¿ÉÒÔÈÏΪÊÇÍê³ÉDocker NodeÔÚSwarm½Úµã´¦µÄ×¢²á£¨register£©¹¤×÷£¬ÒÔ±ãSwarmÔÚÖ´ÐÐswarm manageʱ¿ÉÒÔ·¢ÏÖ¸ÃDocker Node¡£È»¶ø£¬ÉÏÎÄÌá¼°µÄ5ÖÖdiscoveryģʽÖУ¬²¢·ÇÿÖÖģʽ¶¼Ö§³Öswarm joinÃüÁî¡£²»Ö§³ÖµÄdiscoveryµÄģʽÓÐNode DiscoveryÓëFile Discovery¡£

Docker NodeÉÏswarm joinÖ´ÐÐÖ®ºó£¬±êÖ¾×ÅDocker NodeÏòSwarm×¢²á£¬ÇëÇó¼ÓÈëSwarm¹ÜÀíµÄDocker¼¯ÈºÖС£Swarmͨ¹ý×¢²áÐÅÏ¢£¬·¢ÏÖDocker Node£¬²¢»ñÈ¡Docker NodeµÄ״̬ÒÔ¼°¾ßÌåÐÅÏ¢£¬ÒԱ㴦ÀíDockerÇëÇóʱ×÷Ϊµ÷¶ÈÒÀ¾Ý¡£

3.4 swarm list

SwarmÖеÄswarm listÃüÁîÓÃÒÔÁоÙDocker¼¯ÈºÖеÄDocker Node¡£

Docker NodeµÄÐÅÏ¢¾ùÀ´Ô´ÓÚSwarm½ÚµãÉÏ×¢²áµÄDocker Node¡£¶øÒ»¸öDocker NodeÔÚSwarm½ÚµãÉÏ×¢²á£¬½ö½öÊÇ×¢²áÁËDocker NodeµÄIPµØÖ·ÒÔ¼°Docker¼àÌýµÄ¶Ë¿ÚºÅ¡£

ʹÓÃswarm listÃüÁîʱ£¬ÐèÒªÖ¸¶¨discoveryµÄÀàÐÍ£¬ÀàÐͰüÀ¨£ºtoken¡¢etcd¡¢file¡¢zkÒÔ¼°<ip>¡£¶øswarm list²¢Î´ÂÞÁÐDocker¼¯ÈºµÄ¶¯Ì¬ÐÅÏ¢£¬±ÈÈçDocker NodeÕæÊµµÄÔËÐÐ״̬£¬»òÕßDocker NodeÔÚDocker¼¯ÈºÖаçÑݵĽÇÉ«ÐÅÏ¢¡£

4.×ܽá

SwarmµÄ¼Ü¹¹ÒÔ¼°ÃüÁûÓкܸ´ÔÓ£¬Í¬Ê±Ò²ÎªÏ£Íû¹ÜÀíDocker¼¯ÈºµÄDocker°®ºÃÕß½µµÍÁËѧϰºÍʹÓÃÃż÷¡£

Ë×»°ËµµÃºÃ£¬Ã»ÓÐÒ»ÖÖÒ»ÀÍÓÀÒݵŤ¾ß£¬ÓÐЧµÄ¹ÜÀíDocker¼¯ÈºÍ¬ÑùÒ²ÊÇÈç´Ë¡£È±·¦³¡¾°À´Ì¸ÂÛSwarmµÄ¼ÛÖµ£¬ÒâÒå²¢²»»áºÜ´ó¡£Ïà·´£¬Ì½Ë÷ºÍÍÚ¾òSwarmµÄÌØµãÓ빦ÄÜ£¬²¢ÎªDocker¼¯ÈºµÄ¹ÜÀíÌṩһÖÖ¿ÉÑ¡µÄ·½°¸£¬ÊÇDocker°®ºÃÕ߸üÓ¦¸Ã²ÎÓëµÄÊ¡£

±¾Îijõ²½½éÉÜSwarm£¬²¢Éæ¼°¼Ü¹¹ÓëÃüÁÏÂÆÚ½«´øÀ´SwarmµÄ¾ßÌåʹÓã¬ÒÔ¼°SwarmµÄ¼Ü¹¹ÆÊÎö¡£

5.×÷Õß½éÉÜ

ËïºêÁÁ£¬DaoCloud³õ´´ÍŶӳÉÔ±£¬Èí¼þ¹¤³Ìʦ£¬Õã½­´óѧVLISʵÑéÊÒÓ¦½ìÑо¿Éú¡£¶ÁÑÐÆÚ¼ä»îÔ¾ÔÚPaaSºÍDocker¿ªÔ´ÉçÇø£¬¶ÔCloud FoundryÓÐÉîÈëÑо¿ºÍ·á¸»Êµ¼ù£¬Éó¤µ×²ãƽ̨´úÂë·ÖÎö£¬¶Ô·Ö²¼Ê½Æ½Ì¨µÄ¼Ü¹¹ÓÐÒ»¶¨¾­Ñ飬׫дÁË´óÁ¿ÓÐÉî¶ÈµÄ¼¼Êõ²©¿Í¡£2014ÄêÄ©ÒԺϻïÈËÉí·Ý¼ÓÈëDaoCloudÍŶӣ¬ÖÂÁ¦ÓÚ´«²¥ÒÔDockerΪÖ÷µÄÈÝÆ÷µÄ¼¼Êõ£¬Íƶ¯»¥ÁªÍøÓ¦ÓõÄÈÝÆ÷»¯²½·¥¡£ÓÊÏ䣺allen.sun@daocloud.io

6.²Î¿¼ÎÄÏ×

Swarm: a Docker-native clustering system

Intro to Docker Swarm: Part 1 - Overview

Intro to Docker Swarm: Part 2 - Configuration Options and Requirements

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

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

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

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

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