±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËDubbodµÄÔµÆð¡¢Â䵨µÚÒ»²½¡¢
¹¦ÄÜÀ©Õ¹¡¢ÐòÁл¯À©Õ¹¡¢ÇëÇóÈÛ¶Ï¡¢·þÎñ²âÊÔ¹¤¾ß¼°±¤ÀݲâÊÔÍø¹ØµÈ£¬Ï£Íû¶ÔÄãµÄѧϰÓаïÖú¡£
ÎÄÀ´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
1 ÔµÆð
Я³Ìµ±³õΪʲôҪÒýÈë Dubbo ÄØ£¿Êµ¼ÊÉÏ´Ó 2013 Äêµ×Æð£¬Ð¯³ÌÄÚÖ÷ҪʹÓõľÍÊÇ»ùÓÚ HTTP
ÐÒéµÄ SOA ΢·þÎñ¿ò¼Ü¡£Õâ¸ö¿ò¼ÜÊÇЯ³ÌÄÚ²¿×ÔÐÐÑз¢µÄ£¬ÕûÌå¼Ü¹¹ÔÚÕâ½ü6ÄêÖÐûÓнøÐдóµÄÖØ¹¹¡£Êܵ½µ±³õÉè¼ÆµÄÏÞÖÆ£¬¿ò¼Ü±¾ÉíµÄÀ©Õ¹ÐÔ²»ÊǺܺã¬Ê¹µÃÓû§ÒªÏë×Ô¼ºÀ©Õ¹Ò»Ð©¹¦Äܾͻá±È½ÏÀ§ÄÑ¡£ÁíÍ⣬ÓÉÓÚ
HTTP ÐÒéÒ»¸öÁ¬½ÓͬʱֻÄÜ´¦ÀíÒ»¸öÇëÇó¡£Ôڸ߲¢·¢µÄÇé¿öÏ£¬·þÎñ¶ËµÄÁ¬½ÓÊýºÍÏ̳߳صÈ×ÊÔ´¶¼»á±È½Ï½ôÕÅ£¬Ó°Ïìµ½ÇëÇó´¦ÀíµÄÐÔÄÜ¡£¶ø
Dubbo ×÷Ϊһ¸ö¸ßÐÔÄÜµÄ RPC ¿ò¼Ü£¬²»½öÊÇÒ»¿îÒµ½çÖªÃûµÄ¿ªÔ´²úÆ·£¬ËüÕûÌåÓÅÐãµÄ¼Ü¹¹Éè¼ÆºÍÊý¾Ý´«Ê䷽ʽҲ¿ÉÒÔ½â¾öÉÏÃæÌáµ½µÄÕâЩÎÊÌâ¡£ÕýºÃÔÚ
2017 ÄêϰëÄ꣬°¢ÀïÐû²¼ÖØÆôά»¤ Dubbo ¡£»ùÓÚÕâЩÔÒò£¬ÎÒÃÇÍŶӾö¶¨°Ñ Dubbo ÒýÈëЯ³Ì¡£
2 Dubbo Â䵨µÚÒ»²½
ÒªÔÚ¹«Ë¾Â䵨 Dubbo Õâ¸öзþÎñ¿ò¼Ü£¬µÚÒ»²½¾ÍÊǽâ¾ö·þÎñÖÎÀíºÍ¼à¿ØÕâÁ½¸öÎÊÌâ¡£
·þÎñÖÎÀí
ÔÚ·þÎñÖÎÀíÕâ·½Ãæ£¬Ð¯³ÌÏÖÓÐµÄ SOA ¿ò¼ÜÒѾÓÐÁËÒ»Ì×ÍêÕûµÄ·þÎñ×¢²áÖÐÐĺͷþÎñÖÎÀíϵͳ¡£¶ÔÓÚ·þÎñ×¢²áÖÐÐÄ£¬´ó¼Ò±È½Ï³£ÓõĿÉÄÜÊÇ
Apache Zookeeper ¡£¶øÎÒÃÇʹÓõÄÊDzο¼ Netflix ¿ªÔ´µÄ Eureka ×ÔÐÐÑз¢µÄ×¢²áÖÐÐÄ
Artemis ¡£Artemis µÄ¼Ü¹¹ÊÇÒ»¸öÈ¥ÖÐÐĵĶԵȼ¯Èº¡£¸÷¸ö½ÚµãµÄµØÎ»Ïàͬ£¬Ã»ÓÐÖ÷´ÓÖ®·Ö¡£·þÎñʵÀýÓ뼯ȺÖеÄÈÎÒâÒ»¸ö½Úµã±£³Ö³¤Á¬½Ó£¬·¢ËÍ×¢²áºÍÐÄÌøÐÅÏ¢¡£ÊÕµ½ÐÅÏ¢µÄ½Úµã»á½«ÕâЩÐÅÏ¢·Ö·¢¸øÆäËû½Úµã£¬È·±£¼¯Èº¼äÊý¾ÝµÄÒ»ÖÂÐÔ¡£¿Í»§¶ËÒ²»áͨ¹ýÒ»¸ö³¤Á¬½ÓÀ´½ÓÊÜ×¢²áÖÐÐÄÍÆË͵ķþÎñʵÀýÁбíÐÅÏ¢¡£
ÔÚ·þÎñÊý¾ÝÄ£ÐÍ·½Ã棬ÎÒÃÇÖ±½Ó¸´ÓÃÁËÏÖÓÐ SOA ·þÎñµÄÊý¾ÝÄ£ÐÍ¡£ÈçͼËùʾ£¬×îºËÐĵķþÎñÄ£ÐͶÔÓ¦µÄÊÇ
Dubbo ÖеÄÒ»¸ö interface ¡£Ò»¸öÓ¦ÓóÌÐòÄÚ¿ÉÒÔ°üº¬¶à¸ö·þÎñ£¬Ò»¸ö·þÎñÒ²¿ÉÒÔ²¿ÊðÔÚ¶à¸ö·þÎñÆ÷ÉÏ¡£ÎÒÃǽ«Ã¿¸ö·þÎñÆ÷ÉÏÔËÐеķþÎñÓ¦ÓóÆÎª·þÎñʵÀý¡£
ËùÓеķþÎñÔÚÉÏÏßǰ¶¼ÐèÒªÔÚÖÎÀíϵͳÖнøÐÐ×¢²á¡£×¢²áºó£¬ÏµÍ³»áΪÆä·ÖÅäÒ»¸öΨһµÄ±êʶ£¬Ò²¾ÍÊÇ ServiceID
¡£Õâ¸ö ServiceID ½«»áÔÚ·þÎñʵÀý×¢²áʱ·¢ËÍÖÁ×¢²áÖÐÐÄÓÃÀ´±êʶʵÀýµÄ¹éÊô£¬¿Í»§¶ËÒ²ÐèҪͨ¹ýÕâ¸öIDÀ´»ñȡָ¶¨·þÎñµÄʵÀýÁÐ±í¡£
ÓÉÓÚ Dubbo ±¾Éí²¢Ã»ÓÐ ServiceID µÄÉè¼Æ£¬ÕâÀïµÄÎÊÌâ¾ÍÊÇÈçºÎÏò×¢²áÖÐÐÄ´«µÝÒ»¸ö interface
Ëù¶ÔÓ¦µÄ ServiceID ÐÅÏ¢¡£ÎÒÃǵķ½·¨ÊÇÔÚ Service ºÍ Reference ÅäÖÃÖÐÔö¼ÓÒ»¸ö
serviceId ²ÎÊý¡£ArtemisServiceRegistry µÄʵÏÖ»á¶ÁÈ¡Õâ¸ö²ÎÊý£¬²¢´«µÝ¸ø×¢²áÖÐÐÄ¡£ÕâÑù¾Í¿ÉÒÔÕý³£µÄÓë×¢²áÖÐÐĽøÐн»»¥ÁË¡£
·þÎñ¼à¿Ø
ÔÚ·þÎñ¼à¿ØÕâ·½ÃæÎÒÃÇÖ÷Òª×öÁËÁ½²¿·Ö¹¤×÷£ºÍ³¼ÆÊý¾Ý²ãÃæµÄ¼à¿ØºÍµ÷ÓÃÁ´²ãÃæµÄ¼à¿Ø¡£
ͳ¼ÆÊý¾ÝÖ¸µÄÊǶԸ÷ÖÖ·þÎñµ÷ÓÃÊý¾ÝµÄ¶¨ÆÚ»ã×Ü£¬±ÈÈçµ÷ÓÃÁ¿¡¢ÏìӦʱ¼ä¡¢ÇëÇóÌåºÍÏìÓ¦ÌåµÄ´óСÒÔ¼°ÇëÇó³öÏÖÒì³£µÄÇé¿öµÈµÈ¡£Õⲿ·ÖÊý¾ÝÎÒÃÇ·Ö±ðÔÚ¿Í»§¶ËºÍ·þÎñ¶ËÒÔ·ÖÖÓÁ£¶È½øÐÐÁË»ã×Ü£¬È»ºóÊä³öµ½
Dashboard ¿´°åÉÏ¡£Í¬Ê±ÎÒÃÇÒ²¶ÔÕâЩÊý¾ÝÔö¼ÓÁËһЩ±êÇ©£¬ÀýÈ磺Service ID¡¢·þÎñ¶Ë
IP ¡¢µ÷Óõķ½·¨µÈµÈ¡£Óû§¿ÉÒԺܷ½±ãµÄ²éѯ×Ô¼ºÐèÒªµÄ¼à¿ØÊý¾Ý¡£
ÔÚ¼à¿Ø·þÎñµ÷ÓÃÁ´ÉÏ£¬ÎÒÃÇʹÓõÄÊÇ CAT ¡£CAT ÊÇÃÀÍŵãÆÀ¿ªÔ´µÄÒ»¸öʵʱµÄÓ¦ÓÃ¼à¿ØÆ½Ì¨¡£Ëüͨ¹ýÊ÷ÐεÄ
Transaction ºÍ Event ½Úµã£¬¿ÉÒÔ½«Õû¸öÇëÇóµÄ´¦Àí¹ý³Ì¼Ç¼ÏÂÀ´¡£ÎÒÃÇÔÚ Dubbo
µÄ¿Í»§¶ËºÍ·þÎñ¶Ë¶¼Ôö¼ÓÁË CAT µÄ Transaction ºÍ Event Âñµã£¬¼Ç¼Á˵÷ÓõķþÎñ¡¢
SDK µÄ°æ±¾¡¢·þÎñºÄʱ¡¢µ÷Ó÷½µÄ±êʶµÈÐÅÏ¢£¬²¢ÇÒͨ¹ý Dubbo µÄ Attachment °Ñ CAT
·þÎñµ÷ÓõÄÉÏÏÂÎÄÐÅÏ¢´«µÝµ½ÁË·þÎñ¶Ë£¬Ê¹µÃ¿Í»§¶ËºÍ·þÎñ¶ËµÄ¼à¿ØÊý¾Ý¿ÉÒÔÁ¬½ÓÆðÀ´¡£ÔÚÅÅÕϵÄʱºò¾Í¿ÉÒԺܷ½±ãµÄ½øÐвéѯ¡£ÔÚͼÉÏ£¬ÍâÃæÒ»²ãÎÒÃÇ¿´µ½µÄÊǿͻ§¶Ë¼Ç¼µÄ¼à¿ØÊý¾Ý¡£ÔÚµ÷Ó÷¢Æð´¦Õ¹¿ªºó£¬ÎÒÃǾͿÉÒÔ¿´µ½¶ÔÓ¦µÄÔÚ·þÎñ¶ËµÄ¼à¿ØÊý¾Ý¡£
³õ°æ·¢²¼
ÔÚ½â¾öÁË·þÎñÖÎÀíºÍ¼à¿Ø¶Ô½ÓÕâÁ½¸öÎÊÌâºó£¬ÎÒÃǾÍËãÍê³ÉÁË Dubbo ÔÚЯ³Ì³õ²½µÄÒ»¸ö±¾µØ»¯£¬ÔÚ 2018
Äê 3 Ô£¬ÎÒÃÇ·¢²¼ÁË Dubbo Я³Ì¶¨ÖưæµÄÊ׸ö¿ÉÓð汾¡£ÔÚÕýʽ·¢²¼Ç°ÎÒÃÇÐèÒª¸øÕâ¸ö²úÆ·Æð¸öÐÂÃû×Ö¡£¼ÈÈ»ÊÇЯ³Ì£¨Ctrip£©¼Ó
Dubbo £¬ÎÒÃǾͰÑÕâ¸ö¶¨Öư汾³ÆÎª CDubbo ¡£
3 CDubbo ¹¦ÄÜÀ©Õ¹
³ýÁË»ù±¾µÄϵͳ¶Ô½Ó£¬ÎÒÃÇ»¹¶Ô CDubbo ½øÐÐÁËһϵÁеŦÄÜÀ©Õ¹£¬Ö÷Òª°üÀ¨ÒÔÏÂÕâ 5 µã£ºCallback
ÔöÇ¿¡¢ÐòÁл¯À©Õ¹¡¢È۶ϺÍÇëÇó²âÊÔ¹¤¾ß¡£ÏÂÃæÎÒÀ´ÖðÒ»¸ø´ó¼Ò½éÉÜһϡ£
Callback ÔöÇ¿
Ê×ÏÈ£¬ÎÒÃÇ¿´Ò»ÏÂÕâ¶Î´úÂë¡£ÇëÎÊ´úÂëÀïÓÐûÓÐʲôÎÊÌâÄØ£¿
Õâ¶Î´úÂëÀïÓÐÒ»¸ö DemoService ¡£ÆäÖÐµÄ callbackDemo ·½·¨µÄ²ÎÊýÊÇÒ»¸ö½Ó¿Ú¡£ÏÂÃæµÄ
Demo ÀàÖзֱðÔÚ foo ºÍ bar Á½¸ö·½·¨Öе÷ÓÃÁËÕâ¸ö callbackDemo ·½·¨¡£ÏàÐÅÓùý
Callback µÄÅóÓÑÃÇÓ¦¸ÃÖªµÀ£¬foo Õâ¸ö·½·¨µÄµ÷Ó÷½Ê½ÊÇÕýÈ·µÄ£¬¶ø bar Õâ¸ö·½·¨ÔÚÖØ¸´µ÷ÓõÄʱºòÊǻᱨ´íµÄ¡£ÒòΪ¶ÔÓÚͬһ¸ö
Callback ½Ó¿Ú£¬¿Í»§¶ËÖ»ÄÜ´´½¨Ò»¸öʵÀý¡£
µ«ÕâÓÖÓÐʲôÎÊÌâÄØ£¿ÎÒÃÇÀ´¿´Ò»ÏÂÕâÑùÒ»¸ö³¡¾°¡£
Ò»¸öÓû§ÔÚÒ³ÃæÉÏ·¢ÆðÁËÒ»¸ö²éѯ»úƱµÄÇëÇó¡£Õ¾µã·þÎñÆ÷½ÓÊÕµ½ÇëÇóÖ®ºóµ÷ÓÃÁ˺ó¶ËµÄ²éѯ»úƱ·þÎñ¡£¿¼Âǵ½Õâ¸öµ÷ÓÿÉÄÜ»áºÄʱ½Ï³¤£¬½Ó¿ÚÉÏʹÓÃÁË
callback À´»Ø´«Êµ¼ÊµÄ²éѯ½á¹û¡£È»ºóÔÙÓÉÕ¾µã·þÎñÆ÷ͨ¹ýÀàËÆ WebSocket µÄ¼¼ÊõÍÆË͸ø¿Í»§¶Ë¡£ÄÇôÎÊÌâÀ´ÁË¡£Õ¾µã·þÎñÆ÷½ÓÊܵ½»Øµ÷Êý¾ÝʱÐèÒªÖªµÀËü¶ÔÓ¦µÄÊÇÄĸöÓû§µÄÄĴε÷ÓÃÇëÇó£¬ÕâÑù²ÅÄܰÑÊý¾ÝÕýÈ·µÄÍÆË͸øÓû§¡£µ«¶ÔÓÚÈ«¾ÖΨһµÄcallback½Ó¿ÚʵÀý£¬ÏëÒªÄõ½Õâ¸öÇëÇóÉÏÏÂÎÄÐÅÏ¢¾Í±È½ÏÀ§ÄÑÁË¡£ÐèÒªÔÚ½Ó¿Ú¶¨ÒåºÍʵÏÖÉÏÔ¤ÏÈ×öºÃ×¼±¸¡£¿ÉÄÜÐèÒª¶îÍâÒýÈëһЩȫ¾ÖµÄ¶ÔÏóÀ´±£´æÕⲿ·ÖÉÏÏÂÎÄÐÅÏ¢¡£
Õë¶ÔÕâ¸öÎÊÌ⣬ÎÒÃÇÔÚ CDubbo ÖÐÔö¼ÓÁË Stream ¹¦ÄÜ¡£¸úÇ°ÃæÒ»Ñù£¬ÎÒÃÇÏÈÀ´¿´´úÂë¡£
Õâ¶Î´úÂëÓëÇ°ÃæµÄ´úÂëÓÐÊ²Ã´Çø±ð£¿Ê×ÏÈ£¬ callback ½Ó¿ÚµÄ²ÎÊýÌæ»»ÎªÁËÒ»¸ö StreamContext
¡£»¹ÓнÓÊܻص÷µÄµØ·½²»ÊÇ֮ǰµÄÈ«¾ÖΨһʵÀý£¬¶øÊÇÒ»¸öÄäÃûÀ࣬²¢ÇÒÒ²²»ÔÙÊǵ¥µ¥Ò»¸ö·½·¨£¬¶øÊÇÓÐ3¸ö·½·¨£¬onNext¡¢onErrorºÍonCompleted
¡£ÕâÑùµ÷Ó÷½ÔÚÄäÃûÀàÀï¾Í¿ÉÒÔͨ¹ý±Õ°üÀ´»ñȡԱ¾ÇëÇóµÄÉÏÏÂÎÄÐÅÏ¢ÁË¡£ÊDz»ÊÇÌåÑé¾ÍºÃһЩÁË£¿
ÄÇô Stream ¾ßÌåÊÇÔõôʵÏÖµÄÄØ£¿ÎÒÃÇÀ´¿´Ò»ÏÂÕâÕÅͼ¡£
ÔÚ¿Í»§¶Ë£¬¿Í»§¶Ë·¢Æð´ø Stream µÄµ÷ÓÃʱ£¬ÐèҪͨ¹ý StreamContext.create
·½·¨´´½¨Ò»¸öStreamContext¡£ËäȻ˵ÊÇ´´½¨£¬µ«Êµ¼ÊÊÇÔÚÒ»¸öÈ«¾ÖµÄ StreamContext
Ò»¸öΨһµÄ StreamID ºÍ¶ÔÓ¦»Øµ÷µÄʵ¼Ê´¦ÀíÂß¼¡£ÔÚ·¢ËÍÇëÇóʱ£¬Õâ¸ö StreamID »á±»·¢Ë͵½·þÎñ¶Ë¡£·þÎñ¶ËÔÚ·¢Æð»Øµ÷µÄʱºòÒ²»á´øÉÏÕâ¸ö
StreamID ¡£ÕâÑù¿Í»§¶Ë¾Í¿ÉÒÔÖªµÀÕâ´Î»Øµ÷¶ÔÓ¦µÄÊÇÄĸö StreamContext ÁË¡£
4 ÐòÁл¯À©Õ¹
Я³ÌµÄһЩҵÎñ²¿ÃÅ£¬ÔÚ֮ǰ¿ª·¢ SOA ·þÎñµÄʱºò£¬Ê¹ÓõÄÊÇ Google Protocol Buffer
µÄÆõÔ¼±àдµÄÇëÇóÊý¾ÝÄ£ÐÍ¡£Google PB µÄÒªÇó¾ÍÊÇͨ¹ýÆõÔ¼Éú³ÉµÄÊý¾ÝÄ£ÐͱØÐëʹÓÃPBµÄÐòÁл¯Æ÷½øÐÐÐòÁл¯¡£ÎªÁ˱ãÓÚËûÃǽ«
SOA ·þÎñÇ¨ÒÆµ½Dubbo £¬ÎÒÃÇÒ²ÔÚ Dubbo ÖÐÔö¼ÓÁË GooglePB ÐòÁл¯·½Ê½µÄÖ§³Ö¡£ºóÐøÎªÁ˱ãÓÚÓû§×ÔÐÐÀ©Õ¹£¬ÎÒÃÇÔÚPBÐòÁл¯Æ÷µÄʵÏÖÉÏÔö¼ÓÁËÀ©Õ¹½Ó¿Ú£¬ÔÊÐíÓû§ÔÚÍâΧ¼ÌÐøÔö¼ÓÊý¾ÝѹËõµÄ¹¦ÄÜ¡£ÕûÌåÐòÁл¯Æ÷µÄʵÏÖ²¢²»ÊǺÜÄÑ£¬µ¹ÊÇÓÐÒ»µãÐèҪעÒâµÄÊÇ£¬ÓÉÓÚ
Dubbo ·þÎñ¶ÔÍâÖ»Äܱ©Â¶Ò»ÖÖÐòÁл¯·½Ê½£¬ÕâÖÖÐòÁл¯·½Ê½Ó¦¸Ã¼æÈÝËùÓÐµÄ Java Êý¾ÝÀàÐÍ¡£¶ø PB
ÅöÇɾÍÊÇÄÇÖÖÖ»ÄÜÐòÁл¯×Ô¼ºÆõÔ¼Éú³ÉµÄÊý¾ÝÀàÐ͵ÄÐòÁл¯Æ÷¡£ËùÒÔÔÚÓöµ½²»Ö§³ÖµÄÊý¾ÝÀàÐ͵Äʱºò£¬ÎÒÃÇ»¹ÊÇ»á
fallback µ½Ê¹ÓÃĬÈ쵀 hessian À´½øÐÐÐòÁл¯²Ù×÷µÄ¡£
5 ÇëÇóÈÛ¶Ï
ÏàÐÅ´ó¼Ò¶ÔÈÛ¶ÏÓ¦¸Ã²»Ä°Éú°É¡£µ±¿Í»§¶Ë»ò·þÎñ¶Ë³öÏÖ´ó·¶Î§µÄÇëÇó³ö´í»ò³¬Ê±µÄʱºò£¬ÏµÍ³»á×Ô¶¯Ö´ÐÐ fail-fast
Âß¼£¬²»ÔÙ¼ÌÐø·¢ËͺͽÓÊÜÇëÇ󣬶øÊÇÖ±½Ó·µ»Ø´íÎóÐÅÏ¢¡£ÕâÀïÎÒÃÇʹÓõÄÊÇÒµ½ç±È½Ï³ÉÊìµÄ½â¾ö·½°¸£ºNetflix
¿ªÔ´µÄ Hystrix ¡£Ëü²»½ö°üº¬È۶ϵŦÄÜ£¬»¹Ö§³Ö²¢·¢Á¿¿ØÖÆ¡¢²»Í¬µÄµ÷Óüä¸ôÀëµÈ¹¦ÄÜ¡£µ¥¸öµ÷Óõijö´í²»»á¶ÔÆäËûµÄµ÷ÓÃÔì³ÉÓ°Ïì¡£¸÷ÏÄܶ¼Ö§³Ö°´Ðè½øÐÐ×Ô¶¨ÒåÅäÖá£CDubboµÄ·þÎñ¶ËºÍ¿Í»§¶Ëͨ¹ý¼¯³É
Hystrix À´×öÇëÇóµÄÒì³£Çé¿ö½øÐд¦Àí£¬±ÜÃâ·¢ÉúÑ©±ÀЧӦ¡£
6 ·þÎñ²âÊÔ¹¤¾ß
Dubbo ×÷Ϊһ¸öʹÓöþ½øÖÆÊý¾ÝÁ÷½øÐд«ÊäµÄ RPC ÐÒ飬·þÎñµÄ²âÊÔ¾ÍÊÇÒ»¸ö±È½ÏÄѲÙ×÷µÄÎÊÌâ¡£ÒªÏëÈòâÊÔÈËÔ±ÔÚÎÞÐè±àд´úÂëµÄǰÌáϲâÊÔÒ»¸ö
Dubbo ·þÎñ£¬ÎÒÃÇÒª½â¾öµÄÓÐÕâÑùÈý¸öÎÊÌ⣺ÈçºÎ±àд²âÊÔÇëÇó¡¢ÈçºÎ·¢ËͲâÊÔÇëÇóºÍÈçºÎ²é¿´ÏìÓ¦Êý¾Ý¡£
Ê×ÏȾÍÊÇÔõô¹¹ÔìÇëÇó¡£Õâ¸öÎÊÌâʵ¼Ê·ÖΪÁ½¸ö²¿·Ö¡£Ò»¸öÊÇÓû§ÔÚ²»Ð´´úÂëµÄǰÌáÏÂÓÃʲô¸ñʽȥ¹¹ÔìÕâ¸öÇëÇ󡣿¼Âǵ½ºÜ¶à²âÊÔÈËÔ±¶Ô
Restful Service µÄ²âÊԱȽÏÊìϤ£¬ËùÒÔÎÒÃÇ×îÖÕ¾ö¶¨Ê¹Óà JSON ¸ñʽ±íʾÇëÇóÊý¾Ý¡£ÄÇôÈÃÒ»¸ö²âÊÔÈËÔ±´ÓÒ»¸ö¿Õ°×µÄ
JSON ¿ªÊ¼¹¹ÔìÒ»¸öÇëÇóÊDz»ÊÇÓеãÀ§ÄÑÄØ£¿ËùÒÔÎÒÃÇ»¹ÊÇÏ£ÍûÄܹ»ÈÃÓû§Á˽⵽ÇëÇóµÄÊý¾ÝÄ£ÐÍ¡£ËäÈ»ÎÒÃÇʹÓõÄÊÇ
Dubbo 2.5.10 £¬µ«Õⲿ·Ö¹¦ÄÜÔÚ Dubbo 2.7.3 ÖÐÒѾÓÐÁË¡£ËùÒÔÎÒÃǽ«Õⲿ·Ö´úÂë¸´ÖÆÁ˹ýÀ´£¬È»ºó¶ÔËü½øÐÐÁËÀ©Õ¹£¬°Ñ·þÎñµÄÔªÊý¾ÝÐÅÏ¢±£´æÔÚÒ»¸öÈ«¾ÖÉÏÏÂÎÄÖС£²¢ÇÒÎÒÃÇÔÚ
CDubbo ÖÐͨ¹ý Filter Ôö¼ÓÁËÒ»¸öÄÚ²¿µÄ²Ù×÷£¬$serviceMeta£¬°Ñ·þÎñµÄÔªÊý¾ÝÐÅÏ¢±©Â¶³öÀ´¡£Õⲿ·ÖÔªÊý¾ÝÐÅÏ¢°üÀ¨·½·¨ÁÐ±í¡¢¸÷¸ö·½·¨µÄ²ÎÊýÁбíºÍ²ÎÊýµÄÊý¾ÝÄ£Ð͵ȵȡ£ÕâÑùÓû§Í¨¹ýµ÷ÓÃÄÚ²¿²Ù×÷Äõ½Õâ¸öÊý¾ÝÄ£ÐÍÖ®ºó£¬¿ÉÒÔÉú³É³öÒ»¸ö»ù±¾µÄJSON½á¹¹¡£Ö®ºóÓû§Ö»ÐèÒªÔÚÕâ¸ö½á¹¹ÖÐÌî³äʵ¼ÊµÄ²âÊÔÊý¾Ý¾Í¿ÉÒÔºÜÈÝÒ׵Ĺ¹Ôì³öÒ»¸ö²âÊÔÇëÇóÀ´¡£
È»ºó£¬Ôõô°Ñ±à¼ºÃµÄÇëÇó·¢Ë͸ø·þÎñ¶ËÄØ£¿ÒòΪûÓÐÄ£ÐÍ´úÂ룬ÎÞ·¨Ö±½Ó·¢Æðµ÷Ó᣶ø Dubbo ÌṩÁËÒ»¸öºÜºÃµÄ¹¤¾ß£¬¾ÍÊÇ·º»¯µ÷Óã¬
GenericService ¡£ÎÒÃǰÑÇëÇóÌåͨ¹ý·º»¯µ÷Ó÷¢Ë͸ø·þÎñ¶Ë£¬ÔÙ°Ñ·þÎñ¶Ë·µ»ØµÄMapÐòÁл¯³ÉJSONÏÔʾ¸ø²âÊÔÈËÔ±¡£Õû¸ö²âÊÔÁ÷³Ì¾ÍÍê³ÉÁË¡£Ë³±ã»¹½â¾öÁËÈçºÎ²é¿´ÏìÓ¦Êý¾ÝµÄÎÊÌâ¡£
ΪÁË·½±ãÓû§Ê¹Óã¬ÎÒÃÇ¿ª·¢ÁËÒ»¸ö·þÎñ²âÊÔÆ½Ì¨¡£Óû§¿ÉÒÔÔÚÉÏÃæÖ±½ÓÑ¡Ôñ·þÎñºÍʵÀý£¬±àдºÍ·¢ËͲâÊÔÇëÇó¡£ÁíÍâΪÁË·½±ãÓû§½øÐÐ×Ô¶¯»¯²âÊÔ£¬ÎÒÃÇÒ²°ÑÕⲿ·Ö¹¦ÄÜ·â×°³ÉÁË
jar °ü·¢²¼Á˳öÈ¥¡£
ÆäʵÔÚ×ö²âÊÔ¹¤¾ßµÄ¹ý³ÌÖУ¬»¹Óöµ½ÁËÒ»µãСÎÊÌ⡣ͨ¹ý´Ó JSON ת»¯ Map ÔÙת»¯Îª POJO ÕâÌõ·ÊÇÄÜ×ßͨµÄ¡£µ«Ç°ÃæÌáµ½ÁË£¬ÓÐһЩ¶ÔÏóÊÇͨ¹ýÀàËÆ
Google Protobuf µÄÆõÔ¼Éú³ÉµÄ¡£ËüÃDz»Êǵ¥´¿µÄ POJO £¬ÎÞ·¨Ö±½Óת»»¡£ËùÒÔ£¬ÎÒÃǶԷº»¯µ÷ÓýøÐÐÁËÀ©Õ¹¡£Ê×ÏȶÔÓÚÕâÖÖ×Ô¶¨ÒåµÄÐòÁл¯Æ÷£¬ÎÒÃÇÔÊÐíÓû§×ÔÐж¨Òå´ÓÊý¾Ý¶ÔÏóµ½
JSON µÄ¸ñʽת»»ÊµÏÖ¡£Æä´Î£¬ÔÚ·þÎñ¶Ë´¦Àí·º»¯µ÷ÓÃʱ£¬ÎÒÃǸø Dubbo Ôö¼ÓÁ˽øÐÐ JSON ºÍ
Google PB ¶ÔÏóÖ®¼äµÄ»¥Ïàת»»µÄ¹¦ÄÜ¡£ÏÖÔÚÕâÁ½¸öÀ©Õ¹¹¦ÄÜÓÐÒѾºÏ²¢ÈëÁË Dubbo µÄ´úÂë¿â£¬²¢Ëæ×Å
2.7.3 °æ±¾·¢²¼ÁË¡£
7 ±¤ÀݲâÊÔÍø¹Ø
˵ÍêÁ˵¥´¿Õë¶Ô·þÎñµÄ²âÊÔ£¬ÓÐЩʱºòÎÒÃÇ»¹Ï£ÍûÔÚÉú²úµÄʵ¼ÊʹÓû·¾³Ï¶ԷþÎñ½øÐвâÊÔ£¬ÓÈÆäÊÇÔÚÓ¦Ó÷¢²¼µÄʱºò¡£ÔÚЯ³Ì£¬ÓÐÒ»¸ö½Ð±¤ÀݲâÊԵIJâÊÔ·½·¨£¬Ö¸µÄÊÇÔÚÓ¦Ó÷¢²¼¹ý³ÌÖУ¬·¢²¼ÏµÍ³»áÏÈÌô³öһ̨·þÎñÆ÷×÷Ϊ±¤ÀÝ»ú£¬²¢½«Ð°汾µÄÓ¦Ó÷¢²¼µ½±¤ÀÝ»úÉÏ¡£È»ºóÓû§Í¨¹ýÌØ¶¨µÄ²âÊÔ·½·¨½«ÇëÇó·¢Ë͵½±¤ÀÝ»úÉÏÀ´Ñé֤а汾ӦÓõŦÄÜÊÇ·ñ¿ÉÒÔÕý³£¹¤×÷¡£ÓÉÓÚ½øÐб¤ÀݲâÊÔʱ£¬±¤ÀÝ»úÉÐδÀÈ뼯Ⱥ£¬ÕâÀï¾ÍÐèÒªÈÿͻ§¶Ë¿ÉÒÔʶ±ð³öÒ»¸ö±¤ÀݲâÊÔÇëÇó²¢°ÑÇëÇóת·¢¸øÖ¸¶¨µÄ±¤ÀÝ·þÎñʵÀý¡£ËäÈ»ÎÒÃÇ¿ÉÒÔͨ¹ý·ÓÉÀ´ÊµÏÖÕâÒ»µã£¬µ«Õâ¾ÍÐèÒª¿Í»§¶ËÁ˽âºÜ¶àת·¢µÄϸ½ÚÐÅÏ¢£¬¶øÇÒÕûºÏÈë
SDK µÄ¹¦ÄܶÔÓÚºóÐøµÄÉý¼¶Î¬»¤»áÔì³ÉÒ»¶¨µÄÂé·³¡£ËùÒÔÎÒÃÇ¿ª·¢ÁËÒ»¸öרÃÅÓÃÓÚ±¤ÀݲâÊԵķþÎñÍø¹Ø¡£µ±Ò»¸ö¿Í»§¶Ëʶ±ðµ½µ±Ç°ÇëÇóµÄÉÏÏÂÎÄÖаüº¬±¤ÀÝÇëÇó±êʶʱ£¬Ëü¾Í»á°Ñ
Dubbo ÇëÇóת·¢¸øÔ¤ÏÈÅäÖúõIJâÊÔÍø¹Ø¡£Íø¹Ø»áÏȽâÎöÕâ¸ö·þÎñÇëÇó£¬ÅжÏËü¶ÔÓ¦µÄÊÇÄĸö·þÎñÈ»ºóÔÙÕÒ³öÕâ¸ö·þÎñµÄ±¤ÀÝ»ú²¢½«ÇëÇóת·¢¹ýÈ¥¡£ÔÚ·þÎñÍê³ÉÇëÇó´¦Àíºó£¬Íø¹ØÒ²»á°ÑÏìÓ¦Êý¾Ýת·¢»Øµ÷Ó÷½¡£
ÓëÒ»°ãµÄ HTTP Íø¹Ø²»Í¬£¬ Dubbo µÄ·þÎñÍø¹ØÐèÒª¿¼ÂÇÒ»¸ö¶îÍâµÄÇëÇó·½Ê½£¬¾ÍÊÇÇ°ÃæËùÌáµ½µÄ
callback ¡£ÓÉÓÚ callback ÊÇ´Ó·þÎñ¶Ë·¢ÆðµÄÇëÇó£¬Õû¸ö´¦ÀíÁ÷³Ì¶¼Óë¿Í»§¶ËµÄÕý³£ÇëÇó²»Í¬¡£Íø¹ØÉϻὫ¿Í»§¶Ë·¢ÆðµÄÁ¬½ÓºÍÍø¹ØÓë·þÎñ¶ËÖ®¼äµÄÁ¬½Ó½øÐа󶨣¬²¢¼Ç¼×î½ü´ý·µ»ØµÄÇëÇó
ID ¡£ÕâÑùÔÚ½ÓÊÕµ½ callback µÄÇëÇóºÍÏìӦʱ¾Í¿ÉÒÔ׼ȷµÄ·ÓÉÁË¡£
8 ºóÐø¹¦Äܹ滮
½ØÖ¹µ½½ñÌ죬 CDubbo Ò»¹²·¢²¼ÁË27¸ö°æ±¾¡£Ð¯³ÌµÄºÜ¶àÒµÎñ²¿ÃŶ¼ÒѾ½ÓÈëÁË Dubbo ¡£ÔÚδÀ´£¬
CDubbo »¹»áÀ©Õ¹¸ü¶àµÄ¹¦ÄÜ£¬±ÈÈçÇëÇóÏÞÁ÷ºÍÈÏÖ¤ÊÚȨµÈµÈ¡£ÎÒÃÇÏ£ÍûÒÔºó¿ÉÒÔ¹±Ï׸ü¶àµÄй¦ÄܳöÀ´£¬»ØÀ¡¿ªÔ´ÉçÇø¡£
|