JGroups/ARM(Ò»)
¸ù¾ÝHein MelingºÍAlberto MontresorµÄppt±àд
ǰÑÔ
½øÈëÁË·Ö²¼Ê½µÄʱ´ú£¬ÎÒÃÇͨ³£½«1£©¿É¿¿µÄ¸ß¿ÉÓÃÐÔ2£©ÈÝ´í 3£©¸ºÔؾùºâ ¶¨ÒåΪ·Ö²¼Ê½ÏµÍ³Âú×ãµÄÈý¸ö»ù±¾Ìõ¼þ¡£·Ö²¼Ê½ÏµÍ³²¢²»ÊÇÖ¸²Ù×÷ϵͳ£¬Ëü°çÑÝÒ»ÖÖÖмä¼þµÄ½ÇÉ«£¬ÔÚ¸÷ÖÖ²Ù×÷ϵͳºÍÓ¦ÓÃÖ®¼ä¹¹¼ÜÆðÒ»Ì×ÇÅÁº£¬ËüÄܹ»×öµ½ i£©²»ÒÀÀµÓÚÌØ¶¨µÄÓ²¼þ£¬Èí¼þ¼°²Ù×÷ϵͳ£¬²»ÊÜÏÞÓÚϵͳ¼Ü¹¹ºÍÈí¼þÌåϵ ii) ÔÚ³ä·ÖÀûÓñãÒ˵ÄÓ²¼þºÍÈí¼þµÄ»ù´¡ÉÏ£¬ÊµÏÖ×î´óµÄÐԼ۱ȡ£
½øÒ»²½ÌÖÂÛ·Ö²¼Ê½ÏµÍ³µÄʱºò£¬ÈÃÎÒÃÇÁ˽âÒ»ÏÂÎÒÃÇ´«Í³µÄ¼¯ÖÐÊ½ÏµÍ³Ãæ¶ÔµÄÌôÕ½£º
<!--[if !supportLists]-->1£¬ <!--[endif]-->·þÎñÆ÷Ó²¼þ¹ÊÕÏ£¨Ó²ÅÌË𻵣©
<!--[if !supportLists]-->2£¬ <!--[endif]-->ÍøÂç¹ÊÕÏ£¨½»»»»ú£¬Â·ÓÉÆ÷±ÀÀ££©
<!--[if !supportLists]-->3£¬ <!--[endif]-->²Ù×÷ϵͳ¹ÊÕÏ£¨WindowsËÀ»ú£©
<!--[if !supportLists]-->4£¬ <!--[endif]-->Èí¼þ¹ÊÕÏ£¨ÄÚ´æÐ¹Â¶£©
·Ö²¼Ê½ÏµÍ³ÐèÒª½â¾ö¼¯ÖÐʽϵͳËù´øÀ´µÄÎÊÌ⣬ÐèÒª´ÓÒÔÏÂÁ½¸ö·½Ãæ×ÅÊÖ
<!--[if !supportLists]-->1£© <!--[endif]-->ÌṩһÌ×ϵͳ¿ò¼Ü£¬¸Ã¿ò¼ÜʵÏÖÁË·þÎñÆ÷Ö®¼äµÄ¶à·Êý¾Ý¸´ÖÆÇÒÔÚ³öÏÖ¹ÊÕϵÄʱºò£¬²»ÐèÒª¹ÜÀíÔ±µÄ¸ÉÔ¤±ãÄÜ×Ô¶¯»Ö¸´¡£
<!--[if !supportLists]-->2£© <!--[endif]-->ÌṩһÌ×½Ó¿Ú£¬ÈÃÓû§Äܹ»ÔÚ´Ë»ù´¡ÉÏ¿ª·¢¿É¿¿µÄ£¬¸ß¿ÉÓÃÐԵķֲ¼Ê½Ó¦Óá£
ÈÃÎÒ¿´¿´¹ýÈ¥µÄ·Ö²¼Ê½ÏµÍ³¿ò¼Ü°Ñ
<!--[if !supportLists]-->l <!--[endif]-->Corba
<!--[if !supportLists]-->l <!--[endif]-->DCOM/.Net
<!--[if !supportLists]-->l <!--[endif]-->Java RMI/Jini/EJB
ÕâÈýÖÖϵͳ¿ò¼Ü¶¼¾ßÓÐÒÔϵÄÌØÐÔ
<!--[if !supportLists]-->1£¬ <!--[endif]-->ÃæÏò¶ÔÏó
<!--[if !supportLists]-->2£¬ <!--[endif]-->»ùÓÚClient/ServerÔ¶³Ì·½·¨µ÷ÓõÄ˼Ïë
<!--[if !supportLists]-->3£¬ <!--[endif]-->Ä£¿é»¯
<!--[if !supportLists]-->4£¬ <!--[endif]-->¸ß¶ÈÖØÓÃÐÔ
<!--[if !supportLists]-->5£¬ <!--[endif]-->»¥²Ù×÷ÐÔ
<!--[if !supportLists]-->6£¬ <!--[endif]-->¿ÉÒÆÖ²ÐÔ(DCOMÏÞÓÚWindowsƽ̨ÉÏ)
ÏÂÃæ£¬ÒÔJava RMI Ô¶³Ì·½·¨µ÷ÓÃΪÀý£¬ÃèÊöһϴ«Í³µÄ·Ö²¼Ê½¿ò¼Ü´æÔÚµÄÎÊÌâ¡£
Java RMI £¨Remote Method Invocation Ô¶³Ì·½·¨µ÷Óã©ÊÇÓÃJavaÔÚJDK1.1ÒÔºóµÄ°æ±¾ÊµÏֵģ¬Ëü´ó´óÔöÇ¿ÁËJava¿ª·¢·Ö²¼Ê½Ó¦ÓõÄÄÜÁ¦¡£RMIÊÇÔÚÒ»ÖÖ°Ù·ÖÖ®°Ù´¿JavaµÄÍøÂç·Ö²¼Ê½Ó¦ÓÃϵͳµÄºËÐĽâ¾ö·½°¸Ö®Ò»£¬ÆäʵËü¿ÉÒÔ±»¿´×÷ÊÇRPCµÄJava°æ±¾¡£µ«ÊÇ´«Í³RPC²¢²»ÄܺܺõØÓ¦ÓÃÓÚ·Ö²¼Ê½¶ÔÏóϵͳ¡£¶øJava RMI ÔòÖ§³Ö´æ´¢ÓÚ²»Í¬µØÖ·¿Õ¼äµÄ³ÌÐò¼¶¶ÔÏóÖ®¼ä±Ë´Ë½øÐÐͨÐÅ£¬ÊµÏÖÔ¶³Ì¶ÔÏóÖ®¼äµÄÎÞ·ìÔ¶³Ìµ÷Óá£RMIĿǰʹÓÃJavaÔ¶³ÌÏûÏ¢½»»»ÐÒéJRMP£¨Java Remote Messaging Protocol£©½øÐÐͨÐÅ¡£JRMPÊÇרΪJavaµÄÔ¶³Ì¶ÔÏóÖÆ¶¨µÄÐÒé¡£ÓÃJava RMI¿ª·¢µÄÓ¦ÓÃϵͳ¿ÉÒÔ²¿ÊðÔÚÈκÎÖ§³ÖJRE£¨Java Run Environment Java£¬ÔËÐл·¾³£©µÄƽ̨ÉÏ¡£µ«ÓÉÓÚJRMPÊÇרΪJava¶ÔÏóÖÆ¶¨µÄ£¬Òò´Ë£¬RMI¶ÔÓÚÓ÷ÇJavaÓïÑÔ¿ª·¢µÄÓ¦ÓÃϵͳµÄÖ§³Ö²»×ã¡£²»ÄÜÓëÓ÷ÇJavaÓïÑÔÊéдµÄ¶ÔÏó½øÐÐͨÐÅ¡£
<!--[if !vml]--> <!--[endif]-->
RMIÈÃJVM1ÓëJVM2»¥Ïàµ÷ÓõÄʱºò£¬ºÜºÃÆÁ±ÎÁ˵ײã²Ù×÷ϵͳµÄϸ½Ú£¬µ«ÊÇ£¬Èç¹û½«ÉÏÃæµÄ¼Ü¹¹¸Ä³ÉÒ»¶Ô¶àģʽ£¨Ò»¸ö¿Í»§¶Ë¶Ô¶à¸ö·þÎñÆ÷£©£¬ClientÈÔÈ»±ÜÃâ²»ÁËÐèÒªÖªµÀϵͳ¸÷¸ö·þÎñÆ÷µÄÍøÂçϸ½Ú£¨¼´¿Í»§¶Ë¶Ô·þÎñÆ÷µÄµ÷Óò¢²»ÊÇ͸Ã÷µÄ£©£¬¶øÇÒ£¬·þÎñÆ÷Ö®¼ä»¹´æÔÚÒ»¸öÈçºÎά³Öµ÷ÓÃÒ»ÖÂÐÔµÄÎÊÌâ¡£
×ÜÖ®£¬RMIºÍDCOMµÈ·Ö²¼Ê½¿ò¼Ü¶¼Ã»Óкܺõĵؿ¼Âǿɿ¿ÐԺ͸߿ÉÓÃÐÔµÄÐèÇó¡£ÓÚÊÇ£¬Ò»¸öеĸÅÄî´ÓÕâÀïÌá³öÁË——×é¼þȺ(Object Group)¡£
×é¼þȺ¿ÉÒÔÕâÑùÀí½â£ºËüÊÇÒ»¸ö»ùÓÚ·þÎñÆ÷¶ÔÏóºÍ×é¼þµÄ¶¯Ì¬¼¯ºÏ£¬¼¯ºÏÖеÄËùÓÐ×é¼þ¶ÔÏó»¥ÏàÐ×÷ºÍά³Ö¸÷¸ö×é¼þÒ»ÖÂÐÔ£¬ËûÃÇΪ¿Í»§¶ËÍâÌṩһÖ¡¢¿É¿¿ºÍ¸ß¿ÉÓÃÐÔ·þÎñ¡£
<!--[if !vml]--><!--[endif]-->
<!--[if !vml]--><!--[endif]-->
×é¼þȺÒÀÀµÓÚÈýÖÖ·þÎñÀ´¹¹¼ÜÆð·Ö²¼Ê½Ìåϵ¿ò¼Ü£¬ÔÚÃèÊöÕâÌ׿ò¼Ü֮ǰ£¬ÏÈÔ¼¶¨£¬Èº×飨Group£©ÊÇÒ»¸ö×é¼þµÄ×éºÏ£¬×é¼þ¿É³éÏóΪ×éÔ±£¬Èº×é·¢ÉúµÄʼþͨ³£ÓУº
<!--[if !supportLists]-->a) <!--[endif]-->Join
<!--[if !supportLists]-->b) <!--[endif]-->Leave
<!--[if !supportLists]-->c) <!--[endif]-->Merge
<!--[if !supportLists]-->d) <!--[endif]-->Partition
<!--[if !supportLists]-->e) <!--[endif]-->Crash
<!--[if !supportLists]-->1£¬ <!--[endif]-->Ⱥ×é¹ÜÀí·þÎñ£¨Group Membership Service£©
ÒòΪȺ×éÊǶ¯Ì¬µÄ£¬ÓÐЩ×éÔ±»á¼ÓÈë(join)µ½Èº£¬ÓÐЩ×éÔ±»áÍÑÀë(leave)£¬ÓÐЩ×éÔ±»áÒòΪ¹ÊÕ϶øÅ¼È»ÍÑÀë(crash)£¬ÓÐʱºò»¹´æÔÚ2¸öȺ֮¼äµÄºÏ²¢(merge)¡¢·ÖÀë(Partition)µÈʼþ£¬Òò´Ë£¬Èº±ØÐë¾ßÓд¦ÀíÕâЩʼþµÄÄÜÁ¦¡£
<!--[if !supportLists]-->2£¬ <!--[endif]-->¿É¿¿¶à²¥·þÎñ£¨Reliable Multicast Service£©
ÔÚ·Ö²¼Ê½Èº×é»·¾³Ï£¬ÎÒÃÇͨ¹ýÒ»¶Ô¶àµÄ·½Ê½À´ÊµÏָ߿ÉÓÃÐÔ£¨¸úHAÆäʵͬһ¸ö¸ÅÄ£¬ÏÖÔڵĹؼüÊÇ£¬ÎÒÃǵÄȺÈçºÎ½øÐпɿ¿µÄͨѶ¡£
´ð°¸ºÜ¼òµ¥——¶à²¥¡£¹ØÓÚȺ×é¶à²¥µÄ¸ÅÄî¿É²Î¿¼£º
http://blog.csdn.net/huangzhq/archive/2005/02/18/291761.aspx
<!--[if !supportLists]-->3£¬ <!--[endif]-->״̬´«Êä·þÎñ£¨State Transfer Service£©
״̬´«ÊäµÄÄ¿µÄ¾ÍÔÚÓÚȺ×é×éÔ±µÄÐÅϢͬ²½£¬Ò²¾ÍÊÇ£¬×éÔ±A¸ú×éÔ±BËù¿´µ½µÄȺµÄ½á¹¹ÊÇÒ»Öµġ£Ò²¾ÍÊÇ£¬Èº×é³ÉÔ±ÊÇͨ¹ý´Ë·þÎñÀ´Î¬³Ö¸ÃȺµÄÒ»¸öͳһµÄÊÓͼ(View)¡£
|