±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂ磬ÎÄÕÂÖ÷Òª½éÉÜÁË΢·þÎñµÄ¼Ü¹¹Ñݽø¹ý³ÌÒÔ¼°ÈçºÎʹÓÃdubbo+zookeeperʵÏÖ¼ò»¯µÄ΢·þÎñ¼Ü¹¹¡£ |
|
΢·þÎñ¼Ü¹¹³ÉÁ˵±Ïµļ¼ÊõÈȵ㣬ʵÏÖ΢·þÎñÊÇÒª¸¶³öºÜ´ó³É±¾µÄ£¬µ«Ò²ÐíÊÇÒòΪ΢·þÎñµÄÓŵãÌ«¹ýÓÚÎüÒýÈË£¬ÒÔÖÁÓڴ󲿷ֿª·¢Õß¶¼½«Ëüµ±³ÉδÀ´µÄ·¢Õ¹Ç÷ÊÆ¡£
΢·þÎñ¼Ü¹¹µÄÑݽø¹ý³Ì
dubboµÄÓû§ÊÖ²áÖнéÉÜÁË·þÎñ»¯¼Ü¹¹µÄ½ø»¯¹ý³Ì£¬ÈçÏÂͼ£º

ͼһ¡¢·þÎñ»¯¼Ü¹¹µÄÑݽø¹ý³Ì
1.orm¨Cµ¥Ò»Ó¦Óüܹ¹
Ò»¸ö¸ßÄÚ¾Û°æ±¾£¬ËùÓй¦Äܲ¿ÊðÔÚÒ»Æð¡£Êý¾Ý·ÃÎÊ¿ò¼Ü(orm)³ÉΪ¹Ø¼ü¡£Õâ¸ö¼Ü¹¹ºÜÉÙ±»ÈËʹÓ㬼¸ºõ½Ó½üÃð¾øÁ˰ɡ£
Óŵ㣺³É±¾µÍ£¬ÊʺϹ¦ÄÜÉÙÓÖ¼òµ¥È±µã£ººÜ¶à£¬±ÈÈçÎÞ·¨ÊÊÓ¦¸ßÁ÷Á¿£¬¶þ´Î¿ª·¢ÄÑ£¬²¿Êð³É±¾¸ß
2.mvc¼Ü¹¹-´¹Ö±Ó¦Óüܹ¹
µ±·ÃÎÊÁ¿½¥½¥Ôö´ó£¬ÂýÂýÑÝ»¯³ÉÓõĺܶàµÄmvc¼Ü¹¹¡£ËäÈ»»¹ÊÇËùÓеŦÄܶ¼ÊDz¿ÊðÔÚͬһ¸ö½ø³ÌÖУ¬µ«ÊÇ¿ÉÒÔͨ¹ýË«»ú»òÕßǰÖøºÔؾùºâÀ´ÊµÏÖ¸ºÔØ·ÖÁ÷¡£ÕâÑùÓ¦ÓÃÒ²¿ÉÒÔ²ð·Ö³É²»Í¬µÄ¼¸¸öÓ¦Óã¬ÒÔÌáÉýÐÔÄܺÍЧÂÊ¡£
´Ëʱ£¬mvc¼Ü¹¹ÓÃÓÚ·ÖÀëǰºó¶ËÂß¼¡£Ò»·½Ã棬ÓÐÒ»¶¨µÄÄ£¿é»¯¡£ÁíÒ»·½Ã棬¼ÓËٺͷ½±ãÁË¿ª·¢¡£
3.rpc¼Ü¹¹-·Ö²¼Ê½·þÎñ¼Ü¹¹
µ±mvc´¹Ö±Ó¦Ó÷ֳɲ»Í¬Ó¦ÓÃʱ£¬Ô½À´Ô½¶àµÄÇé¿öÏ¡£²»¿É±ÜÃâµÄÊÂÓ¦ÓÃaÓëÓ¦ÓÃbÖ®¼äµÄ½»»¥¡£´Ëʱ½«ºËÐĺ͹«¹²µÄÒµÎñ¹¦Äܳé³öÀ´£¬×÷Ϊµ¥¶ÀµÄ·þÎñ£¬²¢ÊµÏÖǰºó¶ËÂß¼·ÖÀë¡£
´ËʱÔò¾ÍÐèÒªÌá¸ßÒµÎñµÄ¸´Óü°ÕûºÏµÄ·Ö²¼Ê½rpc¿ò¼Ü£¬ÀýÈçdubboµÈ¡£
4.soa¼Ü¹¹-Á÷¶¯¼ÆËã¼Ü¹¹
µ±rpc¼Ü¹¹ÖеķþÎñÔ½À´Ô½¶àʱ£¬·þÎñµÄÉúÃüÖÜÆÚµÄ¹Ü¿Ø£¬ÈÝÁ¿µÄÆÀ¹ÀµÈ¸÷ÖÖÎÊÌâ»á³öÏÖ£¬Ê¹·þÎñ»¯³ÉΪƿ¾±¡£ÐèÒªÔö¼ÓÒ»¸öµ÷¶ÈÖÐÐÄÀ´½øÐжԷþÎñ¹Ü¿Ø£¬¼à¶½µÈ¡£
5.΢·þÎñ¼Ü¹¹
ÔÚsoaµÄ»ù´¡ÉÏ£¬ÈËÃÇÓÖÌá³öÁË΢·þÎñ¼Ü¹¹£¬Ëü¾ÍÊǽ«¹¦ÄÜ·ÖÉ¢µ½¸÷¸öÀëÉ¢µÄ·þÎñÖÐÈ»ºóʵÏÖ¶Ô·½°¸µÄ½âñî¡£·þÎñ¸üÔ×Ó£¬×ÔÖθüС£¬È»ºó¸ßÃܶȲ¿Êð·þÎñ¡£
΢·þÎñµÄ¼¼Êõ¹Ø×¢µã
ҪʵÏÖÒ»¸ö΢·þÎñµÄ¼Ü¹¹£¬ÎÒÃÇÐèÒª¹Ø×¢µÄ¼¼Êõµã°üÀ¨£º·þÎñ×¢²á¡¢·¢ÏÖ¡¢¸ºÔؾùºâºÍ½¡¿µ¼ì²é£¬Ç°¶Ë·ÓÉ(Íø¹Ø)£¬ÈÝ´í£¬·þÎñ¿ò¼ÜµÄÑ¡Ôñ£¬¶¯Ì¬ÅäÖùÜÀíµÈÄ£¿é¡£ÕâЩģ¿é¿ÉÒÔ×é³ÉÒ»¸ö¼ò»¯µÄ΢·þÎñ¼Ü¹¹Í¼ÈçÏ£º

ͼ¶þ¡¢¼ò»¯µÄ΢·þÎñ¼Ü¹¹Í¼
±ÊÕßʹÓÃÂìÒϽðÈÚÔÆÓÐÒ»ÄêµÄʱ¼ä£¬ÂìÒϽð·þͨ¹ýÂìÒϽðÈÚÔÆÊä³öÁË»ýÀÛ¶àÄêµÄ¼¼Êõ×é¼þ¡£¸øÆäËûÆóÒµµÄ·þÎñ»¯ÌåϵºÍ¿ò¼Ü½¨ÉèÌṩÁ˺ܺõÄÉè¼ÆË¼Â·¡£³ýÁË΢·þÎñËùÐèÒªµÄ»ù´¡×é¼þÖ®Í⣬»¹ÌṩÁË·Ö²¼Ê½ÏûÏ¢×é¼þ£¬·Ö¿â·Ö±í×é¼þ£¬·Ö²¼Ê½µ÷¶È×é¼þµÈÆóÒµ¿ª·¢³£ÓõÄÖмä¼þ¡£¸ù¾ÝÂìÒϽðÈÚÔÆµÄÉè¼ÆË¼Â·£¬Ò»¸öÍøÕ¾µÄ»ù´¡×é¼þ¼Ü¹¹Í¼ÈçÏ£º

ͼÈý¡¢ÍøÕ¾µÄ»ù´¡×é¼þ¼Ü¹¹Í¼
¿ÉϧÂìÒϽðÈÚÔÆÖеIJúÆ·²¢²»ÊÇ¿ªÔ´µÄ£¬Ò»¸öÆóÒµÏëÓµÓÐÊôÓÚ×Ô¼ºµÄÍøÕ¾¼Ü¹¹£¬¾ÍҪѡ³ö×îÊʺϵĿªÔ´µÄ·þÎñ¿ò¼ÜʵÏÖÕâЩ×é¼þ£¬´Ó¶øÊ¹ºóÐø¿ª·¢Õ߸ü¹Ø×¢ÓÚÒµÎñÂ߼ʵÏÖ¡£
ÕâЩ×é¼þµÄʵÏÖ·½Ê½ÒÔºóÓÐʱ¼äµÄ»°»áÒ»Ò»½²½â£¬ÕâÆªÎÄÕ½ÓÏÂÀ´ÏȽéÉÜÒ»ÏÂdubbo+zookeeperÀ´ÊµÏÖ΢·þÎñÖеÄǰ¶Ë·þÎñ¡¢ºó¶ËͨÓ÷þÎñ¡¢·þÎñ×¢²áÖÐÐÄÖÐËùÉæ¼°µ½µÄ¹¦ÄÜ¡£
ʹÓÃdubbo+zookeeperʵÏÖ¼ò»¯µÄ΢·þÎñ¼Ü¹¹
dubboÊÇÒ»¸ö·Ö²¼Ê½·þÎñ¿ò¼Ü£¬Êǰ¢Àï°Í°ÍSOA·þÎñ»¯ÖÎÀí·½°¸µÄºËÐÄ¿ò¼Ü¡£zookeeperÊÇÒ»¸öΪ·Ö²¼Ê½Ó¦ÓÃÌṩһÖÂÐÔ·þÎñµÄÈí¼þ£¬ÌṩµÄ¹¦ÄܰüÀ¨£ºÅäÖÃά»¤¡¢ÓòÃû·þÎñ¡¢·Ö²¼Ê½Í¬²½¡¢×é·þÎñµÈ¡£zookeeper¿ÉÒÔ×÷Ϊdubbo·þÎñµÄ×¢²áÖÐÐÄ£¬Á½Õß½áºÏÆðÀ´¿ÉÒÔʵÏÖ΢·þÎñÖеķþÎñ×¢²á¡¢·¢ÏÖ¡¢¸ºÔؾùºâºÍ½¡¿µ¼ì²é£¬ÈÝ´í£¬¶¯Ì¬ÅäÖùÜÀíµÄ¹¦ÄÜ¡£ÓÉÓÚdubboûÓÐÌṩǰ¶Ë·ÓɵŦÄÜ£¬ËùÒÔÎÒÃÇ»¹ÐèʵÏÖÒ»¸ö¾ß±¸¼à¿Ø¡¢°²È«ÈÏÖ¤¡¢ÏÞÁ÷¡¢·þÎñ·´Ïò·Óɹ¦ÄܵÄÍø¹Ø×é¼þ²ÅÄÜʵÏÖÍêÕûµÄ΢·þÎñ¡£Õâ¸ö×é¼þʵÏÖÆðÀ´±È½Ï¸´ÔÓ£¬ÔÚÕâÆªÎÄÕÂÖв»×ö½éÉÜ£¬ÎÒÃÇÏÈÓÃspringMVC½«dubbo·þÎñ±©Â¶³Éä¯ÀÀÆ÷¿É·ÃÎʵÄhttp½Ó¿Ú¡£
µÚÒ»²½£ºzookeeper¼¯ÈºµÄ²¿Êð
ʹÓÃzookeeper×÷ΪdubboµÄ×¢²áÖÐÐÄ£¬²¿ÊðÆðÀ´²¢²»Âé·³¡£ÎªÁ˱£³Ö×¢²áÖÐÐĵĸ߿ÉÓÃÐÔ£¬ÔÚÉú²ú»·¾³ÏÂÎÒÃÇÐèÒªÅäÖöà¸özookeeperÐͬÔËÐС£ÔÚ¼¯ÈºÄ£Ê½Ï£¬zookeeper»á»ùÓÚPaxosËã·¨´Ó¼¯ÈºÖÐÑ¡Ôñһ̨×÷Ϊleader£¬ÆäËû»úÆ÷×÷Ϊfollower£¬×¢²áÖÐÐĵÄÊý¾Ý¶¼ÒÔleaderΪ׼¡£Ò»Ì¨zk»úÆ÷³ÉΪleaderµÄÌõ¼þÊdz¬¹ýÕą̂»úÆ÷ÊÇ¿ÉÓõģ¬ÇÒ±»³¬¹ý°ëÊýµÄ»úÆ÷Ñ¡¾ÙΪleader¡£»ùÓÚÕâÖÖʵÏÖ·½Ê½£¬ÎÒÃÇÑ¡Ôñzk¼¯ÈºµÄÊýÁ¿Ê±×îºÃÎªÆæÊý¸ö£¬×îÉÙΪ3¸ö£¬ÕâÑùÖ»ÒªÓг¬¹ý°ëÊýµÄzk»úÆ÷´æ»îÄÇ×¢²áÖÐÐľÍÊÇ¿ÉÓõġ£
×¢£ºÈç¹ûÎÒÃÇÑ¡Ôñ2̨»úÆ÷×÷ΪzkµÄ¼¯Èº£¬ÄÇÖ»ÒªÓÐһ̨zk¹Òµô£¬Áíһ̨»úÆ÷¾ÍÎÞ·¨µÃµ½³¬¹ý°ëÊýµÄѡƱ£¬ÄÇôÕâ¸özk¼¯Èº¾ÍÖ±½ÓʧЧÁË¡£Òò´ËÑ¡2̨»úÆ÷×÷Ϊzk¼¯ÈºµÄÎȶ¨ÐÔÔÚÀíÂÛÉϲ»Èçһ̨»úÆ÷×÷Ϊע²áÖÐÐĵÄÎȶ¨ÐÔ¡£
ÒÔ3̨»úÆ÷×÷Ϊzk¼¯ÈºÎªÀý£¬Ã¿Ì¨zkµÄ¾ßÌ岿Êð·½Ê½Îª£º
1¡¢ÏÂÔØ°²×°°ü²¢½âѹµ½°²×°Ä¿Â¼£¬zookeeper°²×°°üµÄÏÂÔØµØÖ·Îª£ºhttps://www.apache.org/dist/zookeeper/
2¡¢½øÈë½âѹĿ¼µÄconfÎļþ¼Ð£¬ÅäÖÃzookeeperÆô¶¯µÄ»ù±¾²ÎÊý¡£
ÔÚconfÎļþ¼ÐÏÂÓÐÒ»¸ö zoo_sample.cfgµÄÎļþ£¬ÊÇzkÆô¶¯µÄÅäÖÃÑùÀý£¬zookeeper½ø³ÌÔÚÆô¶¯µÄʱºò»áÕÒzoo.cfgÎļþ×÷ΪĬÈϵÄÅäÖÃÎļþ£¬ËùÒÔÎÒÃǸ´ÖÆÒ»¸öÃû³ÆÎªzoo.cfgµÄÎļþ£¬²¢±à¼ÆäÖеÄÅäÖÃÐÅÏ¢ÈçÏ£º

ͼËÄ¡¢zookeeperµÄÅäÖÃÎļþ
ͼÖÐÓúì¿ò±ê³öÀ´µÄµØ·½ÊÇzkÆô¶¯ÐèÒª¶îÍâ×¢ÒâµÄ²ÎÊý£º
dataDirΪÄÚ´æÊý¾Ý¿â¿ìÕյĴæ·ÅλÖã¬
clientPort Ϊzk½ø³ÌµÄ¼àÌý¶Ë¿Ú
server.A=B:C:D
AΪÊý×Ö£¬±êʶÕâÌõÅäÖÃΪµÚ¼¸¸özk·þÎñÆ÷£¬¼´»úÆ÷id
BΪhostÃû£¬±êʶÕâ¸ö·þÎñÆ÷µÄÖ÷»úµØÖ·
CºÍDΪzk¼¯ÈºµÄ³ÉÔ±ÓÃÓÚÑ¡¾ÙleaderʱµÄͨѶ¶Ë¿Ú
3¡¢ÔÚdataDir·¾¶Ï´´½¨myidÎļþ£¬±êʶÕą̂»úÆ÷¶ÔÓ¦µÄ»úÆ÷id
4¡¢ÔËÐÐzookeeper½ø³Ì£¬ÔÚzookeeperĿ¼ÏµÄbinÎļþ¼ÐÖУ¬ÔËÐÐ
./zkServer.sh start
ps: Í£Ö¹·½·¨¡ª¡ªÔËÐÐ./zkServer.sh stop
5¡¢·þÎñÑéÖ¤
zk½ø³ÌÆô¶¯ºó£¬Ä¬ÈÏ»á´ÓÈý̨»úÆ÷ÖÐÑ¡³öÒ»¸öleader£¬2¸öfollower£¬ÔÚbinĿ¼ÏÂÔËÐÐ./zkServer.sh
status¿ÉÒԲ鿴zk½ø³ÌµÄÔËÐÐ״̬



ͼÎå¡¢Èý̨»úÆ÷zookeeperµÄÔËÐÐ״̬
ÈçͼËùʾ£¬¼¯ÈºÑ¡Ôñzoo2×÷Ϊleader£¬ÆäËû»úÆ÷×÷Ϊ follower µÄ·½Ê½ÔËÐС£
µÚ¶þ²½£º¿ª·¢Ç°¶Ë·þÎñºÍºó¶ËͨÓ÷þÎñ
µÚ¶þ²½ÐèÒª´´½¨Á½¸öÏîÄ¿£º
ÎÒÃÇʹÓÃspringMVCÄ£¿é´úÌæÒ»Ï·þÎñǰ¶Ë·ÓÉ£¬Óëǰ¶Ë·þÎñºÏ³ÉÒ»¸öÏîÄ¿£¬×÷Ϊ·þÎñµÄµ÷ÓÃÕß¡£
¿ª·¢Ò»¸öºó¶ËͨÓ÷þÎñ½Ó¿Ú£¬×÷Ϊ·þÎñµÄÌṩÕß¡£
Èç¹û¿ª·¢ÕßÊÇÓÃmaven×öµÄÏîÄ¿¹ÜÀí£¬¸ø´ó¼ÒÍÆ¼öÒ»¸öÊ®·ÖʵÓõĶàÄ£¿éÏîÄ¿½á¹¹£¬Ä£¿éµÄ·Ö²ãºÍÒÀÀµ¹ØÏµÈçÏ£º

ͼÁù£ºÏîĿģ¿é»®·Ö
Èç¹ûÏîÄ¿µÄÊý¾Ý²ã²Ù×÷±È½Ï¸´ÔÓ£¬¿ÉÒÔÔÚDAO²ãÇ°Ãæ¼ÓÒ»¸öÁìÓò²ã£¬Ä£¿éÒÀÀµ¹ØÏµÈçÏ£º

ͼÆß£ºÏîĿģ¿é»®·Ö(´øÁìÓò²ã)
°´ÕÕͼÖеÄmavenÄ£¿é½á¹¹£¬ÎÒÃÇÉú³É·þÎñÌṩ·½ºÍ·þÎñµ÷Ó÷½Á½¸öÏîÄ¿£¬Èçͼ£º

ͼ°Ë¡¢·þÎñÌṩ·½ÏîÄ¿½á¹¹

ͼ¾Å¡¢·þÎñµ÷Ó÷½ÏîÄ¿½á¹¹
ÎÒÃǽ«·þÎñÌṩ·½ÃüÃûΪdubboservice£¬·þÎñµ÷Ó÷½ÃüÃûΪdubboclient¡£
Ê×ÏÈÔÚdubboserviceÏîÄ¿ÖÐʵÏÖÒ»¸ö¼òµ¥µÄHello World ·þÎñ¡£
1¡¢½Ó¿Ú£º
[java] view
plain copy
publicinterfaceTestService{StringsayHello(Stringname);
} |
2¡¢ÊµÏÖÀࣺ
[java] view plain
copy
@Service("testService") publicclassTestServiceImplimplementsTestService{
@OverridepublicStringsayHello(Stringname){
returnString.format("Hi!Client_%s!",name);} |
3¡¢È»ºóÔÚdubboserviceÖÐÒýÈëdubbo£¬zookeeperËùÓõÄÒÀÀµ£¬×ø±êÈçÏ£º
[html] view
plain copy
com.alibaba
dubbo2.5.3
org.apache.zookeeper
zookeeper3.4.5
com.github.sgroschupf
zkclient0.1 |
4¡¢½«Hello World·þÎñÔÚspringµÄÅäÖÃÎļþÖб©Â¶³öÀ´,Èçͼ£º
[html] view plain
copy
xmlns:dubbo="https://code.alibabatech.com/ schema/dubbo"xmlns:jdbc= "https://www.springframework.org/schema/ jdbc"xmlns:tx=" https://www.springframework.org/schema/tx"xmlns: task="https://www.springframework.org/schema/task"
xsi:schemaLocation=" https://www.springframework.org/ schema/beanshttps://www.springframework.org/ schema/beans/spring-beans-3.2.xsd
https://www.springframework.org/schema/aophttps:// www.springframework.org/schema/aop/spring-aop-3.2.xsd https://www.springframework.org/schema/context https://www.springframework.org /schema/context/spring-context-3.2.xsd
https://www.springframework.org/schema/jdbchttps:// www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd https://www.springframework.org/schema/tx https://www.springframework.org/schema/tx/spring-tx-3.2.xsd
https://www.springframework.org/schema/taskhttps:// www.springframework.org/schema/task/spring-task-3.2.xsd https://code.alibabatech.com/schema/dubbo
https://code.alibabatech.com/schema/dubbo/dubbo.xsd"> |
5¡¢½«dubboserviceÏîÄ¿Æô¶¯£¬ÎÒÃDZãÏò×¢²áÖÐÐÄÌṩÁËÒ»¸ö¼òÒ׵ĺó¶ËͨÓ÷þÎñ¡£
È»ºóÔÚdubboclientÏîÄ¿ÖÐʵÏÖ¶Ôºó¶Ë·þÎñµÄÒýÓ㬺ͶÔÍâµÄ·ÓÉ
1¡¢³ýÁËÔÚdubboclientÖÐÒýÈëdubbo£¬zookeeperËùÓõÄÒÀÀµÖ®Í⣬ÎÒÃÇ»¹ÐèÒªÒýÈëdubboserviceÖÐËùÓõ½µÄ·þÎñÒÀÀµ£¬ÈçÏ£º
[html] view
plain copy
com.alibaba
dubbo2.5.3
org.apache.zookeeper
zookeeper3.4.5
com.github.sgroschupf
zkclient0.1
org.zhdd.testdubboservice-service
1.0.0-SNAPSHOT |
2¡¢ÔÚspringµÄÅäÖÃÎļþÖÐÉùÃ÷ËùÒýÓõķþÎñ£º
3¡¢Ð½¨Ò»¸öcontroller£¬½«ÒýÓõķþÎñͨ¹ýcontroller±©Â¶³öÈ¥£¬´úÂëÈçÏ£º
[java] view
plain copy
@ControllerpublicclassHelloController{
@Autowired
privateTestServicetestService;
@RequestMapping("/hello/{name}")@ResponseBody
publicStringhello(@PathVariableStringname) {Stringrslt=testService.sayHello(name);
returnrslt;}
} |
4¡¢Æô¶¯ÏîÄ¿£¬Õâ¸öʱºòdubboclient ¾Í³É¹¦ÒýÓõ½ÁËdubboserviceµÄ·þÎñ
ÎÒÃÇͨ¹ýä¯ÀÀÆ÷·ÃÎÊdubboclient±©Â¶³öÀ´µÄ½Ó¿Ú£¬È·±£dubboclient¿ÉÒÔÕý³£µ÷Óõ½dubboserviceµÄ¾ßÌåʵÏÖ£¬ÈçͼËùʾ£º

ÕâÑùÎÒÃǾͳɹ¦²¿ÊðÁËÒ»¸ö¼òÒ×µÄ΢·þÎñ¼Ü¹¹¡£
ÎÒÃÇ¿ÉÒÔͨ¹ýzookeeperµÄ²é¿´¹¤¾ß¸üÖ±¹ÛµÄ²é¿´dubboÔÚzookeeperÖеÄ×¢²áºÍ¶©ÔÄÐÅÏ¢£¬´ËʱµÄ×¢²áºÍ¶©ÔÄÐÅÏ¢ÈçÏ£º

|