ÔÚ 2004 Äê÷ 02 ÈÕÐÇÆÚÈÕ
ÄýÊÓÄýÊӼƻÕýÔÚÓ¢ÌØÍøÉϺÍÔÚÆóÒµµÃµ½½Ï¶àµÄÃûÉù¡£ ÕâÌṩʲô P2 P ÊǵĸŹۣ¬¶øÇÒ JXTA ÄÜÈçºÎÓÃÀ´Ð´ P2 P ÉêÇë P2 P ÊÇʲô?
ʲôÍêÈ«µØÊÇ¶Ë¶Ô¶Ë (P2 P) ¼ÆËã? ʲô´ÓÆäËûµÄ¼ÆËã»úÀýÇø±ðËü? Äã¿ÉÒÔ˵µ±¼ÆËã»úÒ»ÆðÊ×Ïȱ»ÍøÂ磬ËûÃÇÐγÉÁË a P 2P ÍøÂçµÄʱºò¡£ ¼ÄËźòÆ÷¡¢ DNS ËźòÆ÷,¼Ïó»ú ÓÎÏ·¡¢ºÍÉùÒô-ÉÏÃæµÄ-IP ÒѾȫ²¿±»ÅäÒô? 2P?¼°Ê±µÄÔÚһЩµãµÄϵͳ¡£ ×î½ü,ÉêÇ룬ÏñÊÇ Kazaa,Gnutella ºÍ Napster ÒѾÊÇÁ÷Ðеļƻµ±ËûÃÇÌýµ½? 2P µÄʱºò£¬¶àÊýÏë? ÄãÄܼûµ½ÒéÌâÔÚÊÖ±ß ; P2 P doesn ?ÕæµÄÓÐÒ»ÖÖ¼òµ¥ÓÖ¼ò½àµÄ¶¨Òå¡£ ÔÚ³¢ÊÔ¶¨Òå? 2P ·½Ãæ? ÎÒÃÇÓ¦¸Ã¿´Ö÷Òª¹ÛÄîºÍ²»ÊÇÎÄ×ֵļǼ»òÂäʵ¡£
P2 P ²»ÊÇÒ»ÖÖ¼¼Êõ»òÕßÂäʵ¶øÇÒ²»Äܹ»ÈÝÒ×µØÓÐÒ»¸öÒòËØµÄÌØµã¡£ ¶àÊýÒѾ³¢ÊÔ±íʾÒÔ¼¯Öеij̶ÈΪ»ù´¡µÄ P2 P ÉêÇëµÄÌØÉ«£¬µ«ÊÇÕâÊÇÇйý P2 P ¼ÆËã»úµÄ»ù´¡µÄÒ»¸öÏ·¾çÐԵĹý¶È¼ò»¯¡£ ´óÌåÉÏ, P2 P ÊÇÒ»¸öÊ¹ÍøÂç¶Ô³ÆµÄ¼ÆËã»úÀý; ¿ÉÄÜÓм¯ÖеķþÎñµ«Êǿͻ§ (»òÕßÄýÊÓ) ÊÇÉêÇëµÄÈ«²¿½¹µã»òÂäʵ¡£ ¼¯ÖÐµÄ P2 P ÉêÇëʱ³£Ê¹ÓÃÒ»¸öÖÐÑëµÄĿ¼´¢´æ¹ØÓÚÊý¾ÝµÄ²Î¿¼, µ«ÊǹÍÓÃͬٹ¦ÄÜÐÔ×ªÒÆ»òÕß¹µÍ¨ÄÇÊý¾Ý¡£ ʱ³£Ê¹·ÖÉ¢ P2 P ÉêÇëºÜ¼òµ¥, ³ýÁ˱»·ÖÅä¶øÇÒ·ÖÏíµÄÄÚÈÝÒÔÍâÓÃûÓÐÇø±ðÌØÐԵĸ´ÖÆÍ¬Ù¡£ µ±È»£¬ÓÐÒ»Æð»ìºÏÕâЩ¶þÀàÐ͵ÄһЩÉêÇë/»ù´¡, ´ó¸ÅÊÇһΪʲô²»Ó¦¸ÃÆÚ´ý×÷Ϊһ¸ö·ÖÀà (JXTA,Seti@Home) µÄΨһ·½·¨µÄ¼¯ÖС£ Èç¹ûÎÒÃÇ¿´ÎÒÃǵĽÏÔçµÄÀý×Ó, ÎÒÃǼûµ½ Napster ºÍ Gnutella ÂäÔÚ P2 P µÄÒ»°ã·¶Î§Ö®ÄÚ£¬µ«ÊÇÎÒÃÇÒ²¼ûµ½ Gnutella ÈÃ?µÄ¸ü¶àÒÔ eer ΪÖÐÐÄ?½á¹¹, µ± Napster ¹ÍÓÃ? entralized µÄʱºò?¹¹³É¡£ ÕâÀïµÄ²»Í¬ÊÇ Napster ¿Í»§ÄÜÉÙûÓм¯ÖеÄËźòÆ÷×ö£¬¶øÇÒµ±Í¬Ù±»Ôö¼ÓÒÔ¼°/ »òÒÆ¶¯µÄʱºò£¬ÄÇ Gnutella ¿Í»§½«»áά³Ö¼¸ºõËùÓеŦÄÜÐÔ¡£ ÔÚÕâÁ½¸öÉêÇëÖУ¬È»¶ø£¬¿Í»§-ËźòÆ÷µÄÄ£Ðͱ»´òÆÆ£¬¶øÇÒÊý¾Ý±»·ÖÅäÔÚͬٵĿí¹ãÅÅÁе±ÖС£ ²»¾Ã£¬ÎÒÃǽ«»áÕÒ JXTA »ìºÏÕâЩ¶þ? tyles? Ï£ÍûÕÒÒ»¼äÂí·¿, ¿ÉÒÀ±ÈÀý¾ö¶¨µÄ, ÖÐÑë-½«¡£ÖÃÓÚµØÃæ
P2 P µÄ¹ÛÄîÊÇÔÚÏ൱һЩʱ¼äÖÜΧºÍ×îºóÁ¬½ÓµÄ×°ÖõÄÔöÖ³, ´ø¿íËٶȵÄÔö¼Ó£¬¼ÆËãÁ¦Á¿µÄÔö¼Ó¶øÇҽϴóµÄ´¢²ØÄÜÁ¦ÕýÔÚ´øÁì¶ÔÏÂÒ»¸ö-ÊÀ´úµÄÉêÇë·¢Õ¹µÄ×îǰ²¿µÄ P2 P¡£ Ò»ÈçºÎ¿ÉÄÜÈ¡ÔÚÉÏÃæ±»ÁгöµÄÀûÓô󲿷ݵĽø²½µÄÉêÇëµÄʵ¼Ê×î´óÖµ? Ò»ºÃÑ¡ÏîÊǽåÓÉʵÏÖÔÚ JXTA »ù´¡¼Ç¼µÄÖÜΧ±»½¨ÔìµÄÒ»¸öÉêÇë¡£
JXTA ÊÇʲô?
Éè·¨¼õÇáÍøÂçÉêÇëµÄ P2 P µÄ·¢Õ¹, ÉýÑô¹«Ë¾²úÉúÁË JXTA¡£ JXTA ÊÇÒ»×éÔÚÖ¤Ã÷µÄÍøÂç¼Ç¼£¬ÏñÊÇ´«Êä¿ØÖÆÐÒéºÍ HTTP µÄ¶¥¶ËÉϱ»·Ö²ã¶Ñ»ýµÄ¼Ç¼¡£ ÕâЩ¼Ç¼¸ù¾Ý¿ÉÀ©Õ¹±êʾÓïÑÔÐÅÏ¢±»¶¨Òå¡£ ͬʱ, £¬ JXTA ²»ÐèÒªÒ»¸öÌØ¶¨µÄ×÷ҵϵͳ»ò¹æ»ÓïÑÔ; Ïà·´µØ JXTA Ϊ a P 2P ÉêÇëµÄ»ù´¡ÑöÀµËüµÄ¼Ç¼¹æ¸ñµÄ×é¡£ ÓÐһЩÖ÷Òª¹ÛÄîÒ»Ó¦¸ÃÁ˽⵱·¢Õ¹Ò»¸ö JXTA ÉêÇëµÄʱºò¡£ ÕâЩ¹ÛÄî, µ±ÒÔ±ê×¼µÄ¼Ç¼Åä¶Ô, ¿¼Âǵ½×÷Ϊ a P 2P »ù´¡µÄ JXTA µÄ¸ß½×²ãÀí½âºÍËüµÄÄÜÁ¦¡£
Ö÷Òª JXTA ¹ÛÄî:
ͬÙ
һͬ٠Èκα»ÍøÂçʵÏÖÒ»¸ö»ò¸ü¶à¸ö JXTA ¼Ç¼µÄ×°ÖᣠͬÙÄܰüÀ¨µç»°ºÍ¸öÈËÊý´«ÖúÊÖ¡¢Á¬Í¬¸öÈ˼ÆËã»ú»òËźòÆ÷¡£ Ëü±»¼Ù¶¨ËùÓеÄͬٷÇͬ²½µØ¶øÇÒ¶ÀÁ¢µØ´Ó±Ë´Ë²Ù×÷¡£ ÿͬٶÀÌØµØ±»Ò»¸öͬÙÉí·Ý֤ʶ±ð¡£ ͬٿÉÄÜÓв»Í¬µÄ¹¦ÄÜÒÔÐí¶à²»Í¬µÄ±í¸ñ´æÔÚ¡£ Ò»¸öÌØ¶¨µÄÀý×ÓÊÇÖмäµÄͬÙ, ÓÃÀ´¶¨Â·Ïß±»ËûÃǵÄÍøÂç½á¹¹·Ö¿ªµÄ¸øÍ¬ÙµÄѶϢ¡£ (¾ÙÀýÀ´Ëµ, NATS ¡¢·À»ðǽ,´úÀí)
ÄýÊÓС×é
һͬÙС×éÒѾ¾ö¶¨Ò»Í¨³£×éµÄ·þÎñµÄÒ»¸öͬٵÄÊÕ¼¯ÊÇ¡£ ¿´ÕâµÄÁíÍâÒ»¸ö·½·¨ÊÇÔÚÒ»¸öС×éµÄËùÓеÄͬÙÓй²Í¬µÄÐËȤ¡£ ͬÙÔÚÈκεĸøÓèʱ¼ä¿ÉÄÜÊôÓÚ³¬¹ýÒ»¸öͬÙС×é¡£ Ô¤ÏÈÉ趨µØ£¬±»ÀýʾµÄµÚÒ»¸öС×éÊÇÍøÂçͬÙС×é: ËùÓеÄͬÙÊôÓÚÍøÂçͬÙС×顣ͬٿÉÄÜÑ¡¾Ù²Î¼ÓÁíÍâµÄͬÙС×é¡£ ¹ØÓÚͬ٣¬Ã¿¸öͬÙС×é±»Ëü×Ô¼º¶ÀÌØµÄ PeerGroup Éí·ÝÖ¤¶¨Òå¡£ ͬÙС×é¿ÉÄÜÒÔ¶àÖÖ·½Ê½±»ÓÃ: ËûÃÇ¿ÉÄܱ»ÓòúÉú°²ÐĵÄС×é,ÏÞÖÆ¿ÉµÃµÄ·¶Î§, »òʵÏÖͬٵļàÌý¡£ JXTA ¼Ç¼ÃèÊöͬٿÉÄÜÈçºÎ³ö°æ,·¢ÏÖ,²Î¼Ó, ¶øÇÒ¼ì²âͬÙС×é¡£
¹ã¸æ
¹ã¸æ ÔÚ JXTA ÓëÕæÕýµÄÊÀ½ç¹ã¸æÀàËÆ; JXTA ʹÓÃ¹ã¸æÃèÊö×ÊÔ´¡£ ÔÚ JXTA ÕâЩ¹ã¸æÍ¨³£¶¨ÒåÌØ¶¨Ò»Èº×ÊÔ´,Ò²¾ÍÊÇͬ١¢Í¬ÙС×éºÍ×é¼þ¡£ ¹ã¸æ¶Ô³É¹¦ P2 P ÉêÇëµÄ·¢Õ¹ºÜÖØÒª¡£
¹Ü
¹Ü Á¬½Ó·þÎñºÍÉêÇëµÄ¹µÍ¨Í¾¾¶ÊÇ¡£ ¹ÜÊÇÁ÷¹ýÒ»¸ö JXTA ÉêÇëµÄÐÅÏ¢µÄÖ÷ÒªÔËÊäϵͳ¡£ ÓйܵÄһЩÀàÐÍ, µ«ÊDZê×¼µÄ¹ÜÊÇ·Çͬ²½µÄºÍ uni-·½ÏòµÄ¡£ ÕâÀàÐ͵ĹÜÊÇÇáÁ¿¼¶£¬µ«ÊÇËüÒ²²»ÖÆÔì¹ØÓÚ°²È«ºÍÄãµÄÊý¾ÝµÄÍêÈ«µÄÈκα£Ö¤¡£ ÓÐÆäËûµÄ¹ÜÒ»¿ÉÄÜʵÏÖ, µ«ÊǹØÓÚËùÓеÄÉêÇ룬½»Ò×Ò»¶¨½Ó½üµØÔÚÒ»ÖÖ¸ö°¸»ù´¡Éϱ»×Ðϸ¼ì²é¡£ °Ñ¸÷ÖÖ²»Í¬µÄ¹ÜÁ¬½áµ½¶Ëµã»òÆäËûµÄ¹ÜÖ±µ½¹Ü×°¶©¼Ç¼,ÔÚÏÂÒ»¸öÇø¶ÎÖб»ÌÖÂÛΪֹ±»ÁôÏ¡£
·þÎñ
·þÎñ ÔÚ JXTA ÔÚÒ»¸öÍøÂçÉϱíÏֿɵõÄÈκÎÀàÐ͵ķþÎñ¡£ Êǵģ¬ËüÊÇÄÇô¿í¹ãµÄ¡£ ·þÎñ¿ÉÄܰüÀ¨ÍøÂç·þÎñ¡¢ RMI ·þÎñ,CORBA ·þÎñ; Ŀ¼¼ÌÐø¡£ JXTA Ö÷ÒªµØÊ¹ÓÃÒÔ¹ÜÊäËÍ»½Æð·þÎñ£¬µ«Êǵ± JXTA ÄÜʹÓõĕrºò£¬Õâ²»ÊÇÒ»¸öÐèÇóÆäËûµÄ±ê×¼Èç´ËµÄµ±×ö WSDL ºÍ·ÊÔíÒ²»½Æð·þÎñ¡£
ÓжþÖ÷Òª·þÎñµÄÀàÐÍ: Ò»¸öÄÄÒ»ÊÊÓÃÓÚͬٺÍÊÊÓÃÓÚС×éµÄËû¡£ ͬٷþÎñÊÇÓëÌØ¶¨µÄͬÙÓйصķþÎñ¡£ Peergroup ·þÎñ£¬ÁíÒ»·½Ã棬ÓÐ¹Ø peergroup £¬¶øÇÒÄ㽫»áÔÚÒ»¸öС×éÀïÃæÍ¨³£ÔÚËùÓеÄͬÙÉíÉÏÕÒÀýÖ¤¡£ ±È½ÏºóÕßÀàÐ͵ķþÎñ¿¼Âǵ½¸ßÓÐЧ£¬ÒòΪֻҪС×éµÄÒ»¸ö³ÉÔ±»î×Å£¬·þÎñ½«»áÊǿɵõġ£
JXTA 2.1.1 ¹æ¸ñ°üÀ¨ÏÂÁеļǼ:
ͬٷ¢ÏּǼ – ÕâÒ»¸ö¼Ç¼ÊÇÔÚ¡«ÊÖ±ß¹ã¸æËûÃÇ×Ô¼ºµÄ×ÊÔ´ (¾ÙÀýÀ´Ëµ, ͬÙ,С×飬¹Ü»ò·þÎñ) ¶øÇÒ·¢ÏÖÀ´×ÔÆäËûµÄͬٵÄ×ÊÔ´µÄͬÙÓÃ.
ͬÙÊý¾Ý¼Ç¼ – ÕâÒ»¸ö¼Ç¼ÊÇÔÚ¡«Êֱ߻ñµÃÀ´×ÔÆäËûµÄͬٵÄ״̬Êý¾Ý (Õý³£ÔËÐÐʱ¼ä¡¢ÖÝ¡¢½»Í¨, µÈµÈ¡£) µÄͬÙÓá£
ͬٷֽâÆ÷¼Ç¼ – ÕâÒ»¸ö¼Ç¼׼ÐíÄýÊÓ½«Ò»¸ö×ܳƵÄÒÉÎÊË͵½Ò»»òÕ߽϶àµÄͬٶøÇÒÊܵ½¶ÔÒÉÎʵÄÒ»¸ö»ØÓ¦¡£
¹Ü×°¶©¼Ç¼ – ÕâÒ»¸ö¼Ç¼ÊÇÔÚ¡«Êֱ߽¨Á¢ÔÚÒ»»ò½Ï¶àµÄͬÙÖ®¼äµÄÒ»¸öÐéÄâµÄ¹µÍ¨Í¨µÀµÄͬÙÓá£
ͬٶ˵㹤×÷·ÏßÅŶ¨¼Ç¼ ?ÕâÒ»¸ö¼Ç¼±»Óà ÓÉÕÒµ½Ä¿µÄµØµÄ·¾¶µÄͬÙÔÚÆäËûµÄͬÙÉíÉÏÒÆÖ²¡£ ·¾¶Êý¾Ý°üÀ¨ÄÜÓÃÀ´´«´ï¸øÄ¿µÄµØµÄѶϢµÄ½ÓÌæÕßͬÙÉí·ÝÖ¤µÄ±»ÃüÁîµÄÐòÁС£ (¾ÙÀýÀ´Ëµ£¬ÐÅÏ¢ÄܽåÓɽ«ËüË͵½±»µÝËÍÄýÊÓÒ», ÄÄÒ»¸ö½ÓÌæËüÄýÊÓ B, ÄÄÒ»¸ö½ÓÌæËüµ½×îºóµÄÄ¿µÄµØ¡£)
Ô¼»á¼Ç¼ ÕâÒ»¸ö¼Ç¼±»Í¬ÙÓÃÔÚÒ»¸öͬÙС×éÀïÃæ·±Ö³ÐÅÏ¢¡£
JXTA ͬٿÉÄÜÀûÓÃËùÓÐÕâЩ¼Ç¼, »òËü¿ÉÄÜÀûÓÃÖ»ÓÐÒ»¸ö, ÔÚÒ»¸ö¸ø¶¨µÄÉêÇëÖÐÑöÀµÍ¬ÙµÄÐèÒª¡£
Ϊ·À»ðǽ/NAT ºáÔ½³éÈ¡ÑùÆ· JXTA ÉêÇ뽨Öþѧ
ÎÒÃǽ«»á¸ÅÂÔ˵Ã÷Éæ¼°Îåλ¿Í»§µÄÒ»¸ö JXTA ÉêÇë¡£ ÎÒÃǽ«»á°ÑÖØÐļ¯ÖÐÔÚÓë Peer2 µÄ¹µÍ¨¶øÇÒµ÷²é±»ÍøÂç¿Õ¼äµÄÆäËûͬٹÍÓõķ½·¨¡£ ÒòΪûÓÐÔÚ´«Êä¿ØÖÆÐÒ齻ͨ·½ÃæµÄÏÞÖÆÔÚËûÃǵÄÍøÂçÉÏ£¬ËùÒÔÔÚÏÂÁеÄͼ±íÖУ¬ÄãÄܼûµ½ Peer1 £¬¶øÇÒͬ٠3 ¾ÓÉ´«Êä¿ØÖÆÐÒ齫»á´æÈ¡ Peer2 ¡£ ÄýÊÓ 4 ¶øÇÒͬ٠5 ÅöÇÉÔÚÏàͬµÄͬÙС×éÖÐ, µ«ÊÇÓÐ×è¶Ï´«Êä¿ØÖÆÐÒ齻ͨÄýÊÓ 2 µÄÒ»¸ö·À»ðǽ. ÔÚÕâÇé¿ö£¬ÎÒÃÇÐèÒªÁíÍâµÄͬٵ£ÈÎÔÚ±»ÏÞÖÆµÄ½ÚÖ®¼äµÄÒ»¸ö½ÓÌæÕß¡£ ʹÓñê×¼µÄ JXTA ¼Ç¼, ÎÒÃÇÔÚÓ¢ÌØÍøÉÏµÄ¸Û¿Ú 80 ÉϽ¨Á¢ JXTA ½ÓÌæÕßÈüÅÜ¡£ ΪÁËҪȷ¶¨ÔÚ±»±£»¤µÄ½ÚÖ®¼äµÄ¹µÍ¨, ÎÒÃÇÅäÖÃÎÒÃÇµÄ JXTA ÉêÇëʹÓà http ½ÓÌæÕߺÍÎÒÃÇµÄ JXTA ½ÓÌæÕßµÄ http Ô¼»á¡£½åÓÉÕâÒ»¸ö½á¹¹£¬ JXTA ½«»áÊ×Ïȳ¢ÊÔ¾ÓÉ´«Êä¿ØÖÆÐÒ鹵ͨ¶øÇÒÈç¹ûËüʧ°Ü, Ëü½«»á³¢ÊÔ¾ÓÉ HTTP ÒÔ¸ø¶¨µÄ½ÓÌæÕß/Ô¼»á¹µÍ¨¡£ Ô¼»áµ£ÈÎͬٵÄÒ»¸ö±¨ÐÅÕß¡£ Èç¹ûͬ٠4 ´ò¿ªÁËÒ»¸ö¹ÜÄýÊÓ£¬ 2¸öÐÅÏ¢»á±»´«´ïµ½Ô¼»á£¬¶øÇÒͬ٠2 »á´ú±í Peer4 ´ÓÔ¼»áÊÕµ½ÐÅÏ¢¡£ JXTA ʹÓÃÍ»µÌ×÷ΪËûÃÇµÄ HTTP ËźòÆ÷,ÊÇÒ»ÖÖÁ÷ÐÐÓÖÎȶ¨µÄ¹«¿ª-À´Ô´µÄ²úÆ·¡£
ÃÜÂëÎÒÃÇΪ½ÓÌæÕßÓÃÒÀÏÂÁи÷Ïî:
¹«Öڵİ༶½ÓÌæÕßʵÏÖÊÊÓÚÁÔÈ¡µÄ {
˽È赀 PeerGroup С×é;
˽È赀 RendezVousService rdvService;
˽È赀 DiscoveryService ·¢ÏÖ;
¹«Öڵľ²Ì¬¿ÕÖ÷ÒªµÄ (Ïß args[]) ͶÀýÍâ {
½ÓÌæÓ¦Óà = еĽÓÌæÕß;()
app.startJxta();
app.run();
}
˽ÈËµÄ¿Õ startJxta() ¶ªÀýÍâ {
³¢ÊÔ {
// ²úÉú, ¶øÇÒ¿ªÊ¼¼ÙÉèÖµ jxta NetPeerGroup
С×é = PeerGroupFactory.newNetPeerGroup;()
} ²¶×½ (PeerGroupException e){
// ÎÞ·¨ instanciate С×é,Ó¡Ë¢¶ÑµþºÍ³ö¿Ú
System.out.println(" ËÀÍöʹʴíÎó : NetPeerGroup ¾Û¼¯´´Ôìʧ°Ü ");
e.printStackTrace();
System.exit(-1);
}
discovery=group.getDiscoveryService;()
RendezVousService rdvServicee = group.getRendezVousService();
rdvServicee.startRendezVous();
}
¹«ÖڵĿձ¼ÅÜ {()
System.out.println("·ÓÉÆ÷/Ô¼»áͬٿªÊ¼¡£¡£n");
µ± {µÄʱºò (ÕæÊµµÄ)
³¢ÊÔ {
Thread.sleep(60000);
} ²¶×½ (InterruptedException ie){
System.exit(0);
}
}
}
}
ΨһµÄ×¢²áʹÓÃÕßÄÜдÒâ¼û¡£ ÇëµÇ¼»òÕߵǼǡ£ ʹ±»ÓÐÁ¦Á¿AkoComment 1.0 ±´Ëü 2! |