¡¡¡¡ÁíÒ»·½Ã棬ÓÎÏ··þÎñ¶ËµÄÓ¦ÓòãÓëÁ¬½Ó²ãÄÑÒÔ·ÖÀë¡£¾Ù¸öÀý×Ó£¬ÔÚÕâÖÖÉè¼Æ˼·Ï£¬Á½¸ö½ø³ÌÓÐûÓÐÁ¬½ÓÊÇÒ»ÖÖ²»È·¶¨Ì¬£¬Éè¼ÆµÄʱºò¾õµÃûÓУ¬½á¹ûij¸öÐèÇóÀ´ÁË£¬²»½¨Á¢Á¬½Ó¾ÍºÜÄÑʵÏÖ¡£ÕâÑù¶ÔÓÚÓ¦ÓòãÀ´Ëµ£¬¾ÍÐèÒªÌṩÁ¬½ÓµÄ¸ÅÄij¸ö½ø³Ì±ØÐëÏȸúÆäËû½ø³ÌÁ¬½Ó½¨Á¢³É¹¦ÁË£¬È»ºó²ÅÄܵ÷ÓÃÆäËû½ø³ÌÌṩµÄ·þÎñ¡£¶øʵ¼ÊÉÏ£¬¸üÓÅÑŵÄÉè¼ÆÊÇÓ¦ÓòãÍêÈ«²»¹Ø×¢Á¬½Óϸ½Ú£¬Ö»ÐèÒªÖªµÀÆäËûµÄ½ø³ÌÌṩÁË·þÎñ£¬×Ô¼º¾ÍÄÜ»ñÈ¡µ½ÕâÖÖ·þÎñ¡£
¡¡¡¡ÕâÑù£¬ÎÒÃǾÍÐèÒªÔÚÓÎÏ··þÎñ¶ËÖÐÌṩ·þÎñµÄ¸ÅÄî¡£³¡¾°Í¬²½·þÎñÊÇÒ»ÖÖ·þÎñ£¬ÁÄÌì·þÎñÊÇÁíÒ»ÖÖ·þÎñ¡£»ùÓÚÕâ¸ö˼·£¬ÎÒÃǼÌÐø̽ÌÖ·þÎñÓ¦¸ÃÈçºÎ¶¨Ò壬·þÎñÓÐÄÄЩÀàÐÍ£¬²»Í¬ÀàÐ͵ķþÎñµÄÏûÏ¢Á÷Ó¦¸ÃÊÇÔõÑùµÄ¡£
3.2 Service-OrientedÓÎÏ··þÎñ¶Ë
3.2.1 ÓÎÏ··þÎñ¶ËÖеķþÎñ
¶¨ÒåÎÊÌâ
¡¡¡¡Ö®Ç°Ìáµ½£¬´«Í³MMO¼Ü¹¹Ëæ·¢Õ¹Öð½¥³öÏÖÁË·Ö²ðµÄÐèÇó£¬×î³£¼ûµÄÊÇ°ÑÁÄÌìÂß¼´ÓÈ«¾Ö½ø³ÌÖвð³öÀ´¡£
¡¡¡¡ÕâÖÖ²ð·ÖµÄ˼·ÊÇ·ûºÏservice-orientedµÄ·¢Õ¹Ç÷ÊƵģ¬×ÐϸÏëÏëµÄ»°£¬ÆäʵÁÄÌì·þÎñ±¾À´¾ÍÓ¦¸ÃÊǾßÌåÏîÄ¿Î޹صġ£ÓÎÏ·ÖпÉÒÔǶÈ빫˾µÄ¹«¹²ÁÄÌì·þÎñ£¬ÉõÖÁÊǵÚÈý·½ÌṩµÄÁÄÌì·þÎñ£¬±ÈÈçÍøÒ××î½ü¿ªÍƵÄÔÆÐÅ¡£
¡¡¡¡ÕâÑù£¬ÁÄÌì·þÎñ¾ÍÊǶÀÁ¢ÓÚÓÎÏ·ÒµÎñ¶ø³Ö¾Ã´æÔڵģ¬ÎÒÃǾʹӴúÂ븴ÓõIJã´ÎÉÏÉýµ½ÁË·þÎñ¸´ÓᣳÏÈ»£¬¹«Ë¾ÄÚ²»Í¬ÏîÄ¿£¬Ò²¿ÉÒÔÖ±½ÓÓÃͬһÌ×ÁÄÌì·þÎñ´úÂë¿â£¬´ïµ½´úÂ뼶±ðµÄ¸´Óᣵ«ÊÇÕâÑù×ö×îºóµÄ½á¹ûÍùÍù¾ÍÊÇ£¬Ã¿¸öÍŶӶ¼»á´Ó¸üÔçµÄÍŶÓÄùýÀ´ÁÄÌìÒµÎñ´úÂ룬Ȼºó×Ô¼º¸ÄÔì¸ÄÔ죬³ÉÁËÍêÈ«²»Í¬µÄ·ÖÖ§£¬×îºóÁ¬´úÂ븴Óö¼×ö²»µ½ÁË¡£
¡¡¡¡´ÓÁíÒ»¸ö˼·À´½²£¬Í¬Ò»¿îÓÎÏ·µÄ²»Í¬×é·þÎñÆ÷£¬ÆäʵҲֻÐèҪͬÑùµÄÒ»×éÁÄÌì·þÎñ¡£µ«ÊÇÈç¹û°´´«Í³µÄģʽ£¬Ò»×é·þÎñÆ÷Ö»ÄÜ¿ªÁã»òÒ»¸öÁÄÌì·þÎñÆ÷£¬ÊÂʵÉÏ£¬ÓпÉÄÜij10×é·þÎñÆ÷ÓÃ1¸öÁÄÌì·þÎñÆ÷¾Í¹»ÁË£¬¶øij1×é·þÎñÆ÷ÓÃ1¸öÁÄÌì·þÎñÆ÷ѹÁ¦¶¼ÓÐЩ´ó¡£
¡¡¡¡Òò´Ë£¬ÎÒÃÇ¿ÉÒÔ¶¨Òå·þÎñµÄ¸ÅÄî¡£
¡¡¡¡ÔÚÃ÷È·Õâ¸ö¶¨Òå֮ǰ£¬ÄãÒ²Ðí×¢Òâµ½ÁË£¬ÎÒÔÚÎÄÕµÄ֮ǰ²¿·Ö´ë´ÊºÜ»ìÂÒ——Ò»»á¶ùÊÇXX½ø³Ì£¬Ò»»á¶ùÊÇXX·þÎñÆ÷£¬Ò»»á¶ùÓÖÊÇXX·þÎñ¡£ÏÖÔÚ£¬ÎÒÃÇͳ³ÆΪXX·þÎñ£¨»òXXservice£©¡£
¡¡¡¡±ÈÈ磬³¡¾°·þÎñÓëÇг¡¾°·þÎñ£¬ÁÄÌì·þÎñ£¬¹«»á·þÎñµÈµÈ¡£
·þÎñÊÇʲô£¿¡¡¡¡¿ÉÒÔ¼òµ¥Àí½âΪһ×é·½·¨¼¯ºÏ¡£·þÎñÊÇ·Ö²¼Ê½ÓÎÏ··þÎñ¶ËÖеÄ×îСʵÌ壬һ¸ö·þÎñÌṩÁËÒ»×éÈ·¶¨µÄ¡¢¿É¹©µ÷Óõķ½·¨¡£
¡¡¡¡skynetÖУ¬Ò»¸öskynet_contextΨһ¶ÔÓ¦Ò»¸ö·þÎñ£¬¶øÒ»¸öskynet½Úµã¶ÔÓ¦Ò»×é·þÎñ£»´«Í³MMOÖУ¬Ò»¸ö½ø³Ì¶ÔÓ¦Ò»×é·þÎñ£¬µ«ÊǺÜÄÑÔÚÆäÖÐÕÒµ½“Ò»¸ö”·þÎñµÄ»®·Ö½çÏÞ¡£
¡¡¡¡ÔÚÈ·¶¨ÈçºÎ»®·Ö·þÎñ֮ǰ£¬Ê×ÏÈ¿´¿´·þÎñµÄÀàÐÍ¡£
¡¡¡¡¶ÔÓÚÓÎÏ··þÎñ¶ËµÄÐèÇóÀ´Ëµ£¬·þÎñ¿ÉÒÔ´ó¸Å·ÖΪÁ½ÀࣺһÀàÊǾßÓжÀÁ¢ÃüÃû¿Õ¼äµÄ£»Ò»ÀàÊÇÔÚÈ«¾ÖÃüÃû¿Õ¼äµÄ¡£
¡¡¡¡·þÎñµÄÃüÃû¿Õ¼äÆäʵҲËãÊǾßÓÐÓÎÏ·¿ª·¢ÌØÉ«µÄ£¬ËäÈ»²»ÖªµÀ×îÔçMMO·Ö·þµÄ¾ßÌåÔÒòÊÇʲô£¬µ«ÊǾÍÊÂʵ¶øÑÔ£¬ARPGÓÎÏ·µÄ·Ö·þÒѾ³ÉÁ˲߻®ÐèÇ󡣺óÀ´ÓÖÊǸ÷ÖÖÇþµÀ·þµÄÐèÇó³öÏÖ£¬ÃüÃû¿Õ¼ä¸üÊÇû°ì·¨¶ªµô¡£¶øÇÒ»¹ÓÐÒ»µã£¬¾ÍÊÇ¿ª·¢½×¶Î±¾µØµ÷ÊÔ¶Ô¸ôÀë·þÎñ¶Ë»·¾³µÄÐèÇó¡£
¡¡¡¡¾Ù¸öÀý×Ó£¬Ö®Ç°Ìáµ½µÄÁÄÌì·þÎñ¾ÍÊÇÒ»ÖÖÈ«¾ÖÃüÃû¿Õ¼äµÄ·þÎñ£¬¶ø¶ÔÓÚ·Ö·þÓÎÏ·À´Ëµ£¬³¡¾°·þÎñ¾ÍÊǾßÓжÀÁ¢ÃüÃû¿Õ¼äµÄ·þÎñ¡£¶ø¶ÔÓÚÊÖÓÎÀ´Ëµ£¬¿ÉÒÔ»®·Ö³öµÄ·þÎñ¾Í¸ü¶àÁË¡£
·þÎñ»®·Ö½â¾öÁËʲôÎÊÌ⣿¡¡¡¡ÒÔ½ø³ÌΪµ¥Î»¿ª·¢ºÍ·þÎñΪµ¥Î»¿ª·¢ÊÇÁ½ÖÖ²»Í¬µÄ˼·¡£ÈËÊÇÓжèÐԵģ¬Èç¹û²»ÊÇÌرð±ØÒª£¬ÉÏÃæҲûÈËÇ¿ÍÆ£¬ÄÇÎÒÏë´ó²¿·Ö³ÌÐòÔ±»¹ÊÇ»á°ÑÁÄÌì·þÎñʵÏÖÔÚÈ«¾Öе÷½ø³ÌÀï¡£
¡¡¡¡·þÎñµÄ¸ÅÄî¾ÍÊÇΪÁËÌá³öÒ»ÖÖÓëÎïÀíÈÝÆ÷Î޹صijéÏó¡£·þÎñ¿ÉÒÔÒÔij¸ö½ø³ÌΪÈÝÆ÷£¬Ò²¿ÉÒÔÒÔij¸öÏß³ÌΪÈÝÆ÷¡£¿ÉÒÔÏñskynetÒ»ÑùÒÔÒ»¸öluaStateΪÈÝÆ÷£¬Ò²¿ÉÒÔÏñErlangÓÎÏ··þÎñ¶ËÄÇÑùÒÔÒ»¸öactorΪÈÝÆ÷¡£¶øÒ»¸öÈÝÆ÷Ò²¿ÉÒÔÌṩ¶àÖÖ·þÎñ¡£
¡¡¡¡×¢Ò⣬ÕâÀïÌá³öµÄ·þÎñÕâÖÖ³éÏóÓë֮ǰËù˵µÄGateÕâÖÖ»ù´¡ÉèÊ©³éÏóÊDz»Í¬µÄ¡£Èç¹û½«ÓÎÏ··þÎñ¶Ë¿´×öÒ»¸öÕûÌ壬ÄÇôGate¾ÍÊÇÆäÖеÄstatic parts£¬·þÎñ¾ÍÊÇÆäÖеÄdynamic parts¡£Á½Õß½â¾öµÄÊDz»Í¬²ãÃæµÄÎÊÌâ¡£
¡¡¡¡·þÎñ»®·ÖµÄºËÐÄÔÔòÊǽ«Á½×éñîºÏÐԽϵ͵ÄÂß¼»®·ÖΪ²»Í¬µÄ·þÎñ¡£¾ßÌåʵÏÖÖп϶¨²»´æÔÚÍêÃÀµÄ»®·Ö·½°¸£¬Òò´Ë×÷ΪÈò½£¬Ö»ÒªÊÇ»¥½»»¥²»¶àµÄÂß¼¶¼¿ÉÒÔ»®·ÖΪ²»Í¬µÄ·þÎñ¡£¾ÙÒ»¸ö¼òµ¥µÄÀý×Ó¾ÍÊǹ«»á·þÎñv.s.³¡¾°·þÎñ£¬Á½ÕߵĹØϵ²¢²»ÊÇÌرðÃÜÇС£
ÒýÈëеÄÎÊÌâ¡¡¡¡·þÎñ»®·ÖµÄ¼«¶ËÊÇÿһ¸öÐÒé°ü¶¼¶ÔÓ¦Ò»ÖÖ·þÎñ¡£ÊÂʵÉÏ£¬·þÎñµÄ¶¨Òå±¾À´¾ÍÊÇ»ù±¾¸ô¾øµÄÂß¼¼¯ºÏ¡£Èç¹û·þÎñ¶¨ÒåµÃÌ«¶à£¬·þÎñ¼äÊý¾Ý½»»¥¾Í»á¸´ÔÓµ½³ÌÐòÔ±ÎÞ·¨Î¬»¤µÄ³Ì¶È¡£
¡¡¡¡¸´ÔÓÊý¾Ý½»»¥µÄÁíÒ»·½Ã棬ÊǸ´ÔÓµÄÍøÂçÍØÆË¡£»ùÓÚÎÒÃÇ֮ǰµÄ¼Ü¹¹£¬clientÓë·þÎñµÄͨÐÅ¿ÉÒÔ½èÖúGate¼ò»¯Ä£ÐÍ£¬µ«ÊÇ·þÎñÖ®¼äµÄͨÐÅÈ´ÐèÒª O(n^2)µÄÁ¬½ÓÊý¡£·þÎñ¶¼ÊÇdynamic parts£¬È´¶ÔÆäËû·þÎñµÄÓÐÎÞ²úÉúÁËÒÀÀµ£¬¶øÇҴ󲿷ÖÇé¿öÏÂÕâÖÖÒÀÀµ¶¼ÊÇË«ÏòµÄ¡£Õû¸ö·þÎñ¶ËµÄÍøÂç»á´í×Û¸´ÔÓ¡£
3.2.2 ÓÎÏ··þÎñ¶ËÖеÄMessage Queue
¶¨ÒåÎÊÌâ
¡¡¡¡ÎÒÃÇÒª½â¾öµÄ×î¹Ø¼üµÄÎÊÌâÊÇ£ºÈç¹û·þÎñÖ®¼äºÜÈÝÒ׾ͲúÉúÏ໥ÒÀÀµ£¬Ó¦¸ÃÈçºÎ»¯¼ò¸´ÔÓµÄÍøÂçÍØÆË¡£Èç¹û˵µÃʵ¼ÊÒ»µã£¬ÄǾÍÊÇÈ÷þÎñÆ÷×éµÄÆô¶¯Á÷³ÌÓë¹Ø±ÕÁ÷³Ì¸ü¼ÓÓÅÑÅ£¬Í¬Ê±±£Ö¤ÕýÈ·ÐÔ¡£
¡¡¡¡skynet¸øÎÒ´øÀ´µÄ˼·ÊÇ£¬·þÎñÓë·þÎñÖ®¼äÎÞÐè±£³ÖÎïÀíÁ¬½Ó£¬¶øÖ»ÐèÒª½èÖú×Ô¼º¼ÄËÞµÄskynetÓëÆäËû·þÎñͨÐÅ£¬Ï൱ÓÚËùÓзþÎñ¼äµÄÁ¬½Ó¶¼ÊdzéÏóµÄ¡¢ÐéÄâµÄ¡£skynetÊÇÕû¸ö¼¯ÈºÖеÄstatic parts£¬·þÎñ×÷Ϊdynamic partsÆô¶¯Ë³Ðò¿Ï¶¨ÔÚskynetÖ®ºó¡£
¡¡¡¡skynet¿ÉÒÔ´ó´ó¼ò»¯·þÎñ¼äÍØÆ˹Øϵ£¬µ«ÊÇÆ䶨λ±Ï¾¹²»ÔÚÓÚ´Ë£¬±ÈÈ磬skynet²¢²»×öÏûÏ¢µÄqos±£Ö¤£¬skynetҲûÓÐÌṩ¸÷ÖÖ·½±ãµÄÍâΧÉèÊ©¡£ÎÒÃÇ»¹ÐèÒªÌṩ¸üÇ¿´óÓïÒåµÄ»ù´¡ÉèÊ©³éÏó¡£
¡¡¡¡Ãæ¶ÔÕâÖÖÐèÇó£¬ÎÒÃÇÐèÒªÒ»ÖÖÏûÏ¢¶ÓÁÐÖмä¼þ¡£
¡¡¡¡Éú²úÕßÏû·ÑÕßÒ»Ö±¶¼ÊÇÒ»ÖֱȽϾµäµÄ½âñîÄ£ÐÍ£¬¶øÏûÏ¢¶ÓÁоÍÊÇ»ùÓÚÕâÖÖÄ£Ð͹¹½¨µÄ¡£Ã¿¸öskynet½Úµã±¾ÖÊÉϾÍÊÇÒ»¸ö¸ß¶È¾«¼òµÄÏûÏ¢¶ÓÁУ¬Îª¼ÄËÞµÄÿ¸ö·þÎñά»¤Ò»¸ö˽ÓжÓÁУ¬¶ÔÈ«¾Ö¶ÓÁÐÖеÄÏûÏ¢dispatch£¬Çý¶¯¼ÄËÞ·þÎñ¡£
¡¡¡¡¶øÎÒÏ£ÍûµÄÊǸü´¿´âµÄÏûÏ¢¶ÓÁÐÖмä¼þ£¬Ñ¡ÔñÓкܶ࣬ÏÂÃæÒÔRabbitMQΪÀý¼òµ¥½éÉÜ¡£
¡¡