Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
6ÖÖ΢·þÎñRPC¿ò¼Ü£¬ÄãÖªµÀ¼¸¸ö£¿
 
×÷ÕߣºJava¼Ü¹¹Ê¦×··ç
  4453  次浏览      28
 2020-4-30 
   
 
±à¼­ÍƼö:
¿ªÔ´ RPC ¿ò¼ÜÓÐÄÄÐ©ÄØ£¿Ò»ÀàÊǸúijÖÖÌØ¶¨ÓïÑÔÆ½Ì¨°ó¶¨µÄ£¬ÁíÒ»ÀàÊÇÓëÓïÑÔÎ޹ؼ´¿çÓïÑÔÆ½Ì¨µÄ¡£ÄÇô½ÓÏÂÀ´Çë¿´Ïêϸ½éÉÜ
±¾ÎÄÀ´×ÔÓÚ½ñÈÕÍ·Ìõ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

¸úÓïÑÔÆ½Ì¨°ó¶¨µÄ¿ªÔ´ RPC ¿ò¼ÜÖ÷ÒªÓÐÏÂÃæ¼¸ÖÖ¡£

Dubbo£º¹úÄÚ×îÔ翪ԴµÄ RPC ¿ò¼Ü£¬Óɰ¢Àï°Í°Í¹«Ë¾¿ª·¢²¢ÓÚ 2011 ÄêÄ©¶ÔÍ⿪Դ£¬½öÖ§³Ö Java ÓïÑÔ¡£

Motan£ºÎ¢²©ÄÚ²¿Ê¹ÓÃµÄ RPC ¿ò¼Ü£¬ÓÚ 2016 Äê¶ÔÍ⿪Դ£¬½öÖ§³Ö Java ÓïÑÔ¡£

Tars£ºÌÚѶÄÚ²¿Ê¹ÓÃµÄ RPC ¿ò¼Ü£¬ÓÚ 2017 Äê¶ÔÍ⿪Դ£¬½öÖ§³Ö C++ ÓïÑÔ¡£

Spring Cloud£º¹úÍâ Pivotal ¹«Ë¾ 2014 Äê¶ÔÍ⿪ԴµÄ RPC ¿ò¼Ü£¬½öÖ§³Ö Java ÓïÑÔ

¶ø¿çÓïÑÔÆ½Ì¨µÄ¿ªÔ´ RPC ¿ò¼ÜÖ÷ÒªÓÐÒÔϼ¸ÖÖ¡£

gRPC£ºGoogle ÓÚ 2015 Äê¶ÔÍ⿪ԴµÄ¿çÓïÑÔ RPC ¿ò¼Ü£¬Ö§³Ö¶àÖÖÓïÑÔ¡£

Thrift£º×î³õÊÇÓÉ Facebook ¿ª·¢µÄÄÚ²¿ÏµÍ³¿çÓïÑ﵀ RPC ¿ò¼Ü£¬2007 Äê¹±Ï׸øÁË Apache »ù½ð£¬³ÉΪ Apache ¿ªÔ´ÏîĿ֮һ£¬Ö§³Ö¶àÖÖÓïÑÔ¡£

Èç¹ûÄãµÄÒµÎñ³¡¾°½ö½ö¾ÖÏÞÓÚÒ»ÖÖÓïÑԵϰ£¬¿ÉÒÔÑ¡Ôñ¸úÓïÑÔ°ó¶¨µÄ RPC ¿ò¼ÜÖеÄÒ»ÖÖ£»

Èç¹ûÉæ¼°¶à¸öÓïÑÔÆ½Ì¨Ö®¼äµÄÏ໥µ÷Ó㬾ÍÓ¦¸ÃÑ¡Ôñ¿çÓïÑÔÆ½Ì¨µÄ RPC ¿ò¼Ü¡£

RPC ¿ò¼Ü£¬ËüÃǾßÌåÓкÎÇø±ð£¿

1. Dubbo

ÏÈÀ´ÁÄÁÄ Dubbo£¬Dubbo ¿ÉÒÔ˵ÊǹúÄÚ¿ªÔ´×îÔçµÄ RPC ¿ò¼ÜÁË£¬Ä¿Ç°Ö»Ö§³Ö Java ÓïÑÔ£¬ËüµÄ¼Ü¹¹¿ÉÒÔÓÃÏÂÃæÕâÕÅͼչʾ¡£

´ÓͼÖÐÄãÄÜ¿´µ½£¬Dubbo µÄ¼Ü¹¹Ö÷Òª°üº¬Ëĸö½ÇÉ«£¬ÆäÖÐ Consumer ÊÇ·þÎñÏû·ÑÕߣ¬Provider ÊÇ·þÎñÌṩÕߣ¬Registry ÊÇ×¢²áÖÐÐÄ£¬Monitor ÊÇ¼à¿ØÏµÍ³¡£

¾ßÌåµÄ½»»¥Á÷³ÌÊÇ Consumer Ò»¶Ëͨ¹ý×¢²áÖÐÐÄ»ñÈ¡µ½ Provider ½Úµãºó£¬Í¨¹ý Dubbo µÄ¿Í»§¶Ë SDK Óë Provider ½¨Á¢Á¬½Ó£¬²¢·¢Æðµ÷Óá£Provider Ò»¶Ëͨ¹ý Dubbo µÄ·þÎñ¶Ë SDK ½ÓÊÕµ½ Consumer µÄÇëÇ󣬴¦ÀíºóÔٰѽá¹û·µ»Ø¸ø Consumer¡£

2. Motan

Motan ÊǹúÄÚÁíÍâÒ»¸ö±È½ÏÓÐÃûµÄ¿ªÔ´µÄ RPC ¿ò¼Ü£¬Í¬ÑùÒ²Ö»Ö§³Ö Java ÓïÑÔʵÏÖ£¬ËüµÄ¼Ü¹¹¿ÉÒÔÓÃÏÂÃæÕâÕÅͼÃèÊö¡£

Motan Óë Dubbo µÄ¼Ü¹¹ÀàËÆ£¬¶¼ÐèÒªÔÚ Client ¶Ë£¨·þÎñÏû·ÑÕߣ©ºÍ Server ¶Ë£¨·þÎñÌṩÕߣ©ÒýÈë SDK£¬ÆäÖÐ Motan ¿ò¼ÜÖ÷Òª°üº¬ÏÂÃæ¼¸¸ö¹¦ÄÜÄ£¿é¡£

register£ºÓÃÀ´ºÍ×¢²áÖÐÐĽ»»¥£¬°üÀ¨×¢²á·þÎñ¡¢¶©ÔÄ·þÎñ¡¢·þÎñ±ä¸ü֪ͨ¡¢·þÎñÐÄÌø·¢Ë͵ȹ¦ÄÜ¡£

protocol£ºÓÃÀ´½øÐÐ RPC ·þÎñµÄÃèÊöºÍ RPC ·þÎñµÄÅäÖùÜÀí£¬ÕâÒ»²ã»¹¿ÉÒÔÌí¼Ó²»Í¬¹¦ÄÜµÄ filter ÓÃÀ´Íê³Éͳ¼Æ¡¢²¢·¢ÏÞÖÆµÈ¹¦ÄÜ¡£

serialize£º½« RPC ÇëÇóÖеIJÎÊý¡¢½á¹ûµÈ¶ÔÏó½øÐÐÐòÁл¯Óë·´ÐòÁл¯

transport£ºÓÃÀ´½øÐÐÔ¶³ÌͨÐÅ£¬Ä¬ÈÏʹÓà Netty NIO µÄ TCP ³¤Á´½Ó·½Ê½¡£

cluster£ºÇëÇóʱ»á¸ù¾Ý²»Í¬µÄ¸ß¿ÉÓÃÓë¸ºÔØ¾ùºâ²ßÂÔÑ¡ÔñÒ»¸ö¿ÉÓÃµÄ Server ·¢ÆðÔ¶³Ìµ÷Óá£

3. Tars

Tars ÊÇÌÚѶ¸ù¾ÝÄÚ²¿¶àÄêʹÓÃ΢·þÎñ¼Ü¹¹µÄʵ¼ù£¬×Ü½á¶ø³ÉµÄ¿ªÔ´ÏîÄ¿£¬½öÖ§³Ö C++ ÓïÑÔ£¬ËüµÄ¼Ü¹¹Í¼ÈçÏ¡£

Tars µÄ¼Ü¹¹½»»¥Ö÷Òª°üÀ¨ÒÔϼ¸¸öÁ÷³Ì£º

·þÎñ·¢²¼Á÷³Ì£ºÔÚ web ϵͳÉÏ´« server µÄ·¢²¼°üµ½ patch£¬ÉÏ´«³É¹¦ºó£¬ÔÚ web ÉÏÌá½»·¢²¼ server ÇëÇó£¬ÓÉ registry ·þÎñ´«´ïµ½ node£¬È»ºó node À­È¡ server µÄ·¢²¼°üµ½±¾µØ£¬À­Æð server ·þÎñ¡£

¹ÜÀíÃüÁîÁ÷³Ì£ºweb ϵͳÉϵĿÉÒÔÌá½»¹ÜÀí server ·þÎñÃüÁîÇëÇó£¬ÓÉ registry ·þÎñ´«´ïµ½ node ·þÎñ£¬È»ºóÓÉ node Ïò server ·¢Ë͹ÜÀíÃüÁî¡£

ÐÄÌøÉϱ¨Á÷³Ì£ºserver ·þÎñÔËÐк󣬻ᶨÆÚÉϱ¨ÐÄÌøµ½ node£¬node È»ºó°Ñ·þÎñÐÄÌøÐÅÏ¢Éϱ¨µ½ registry ·þÎñ£¬ÓÉ registry ½øÐÐͳһ¹ÜÀí¡£

ÐÅÏ¢Éϱ¨Á÷³Ì£ºserver ·þÎñÔËÐк󣬻ᶨÆÚÉϱ¨Í³¼ÆÐÅÏ¢µ½ stat£¬´òÓ¡Ô¶³ÌÈÕÖ¾µ½ log£¬¶¨ÆÚÉϱ¨ÊôÐÔÐÅÏ¢µ½ prop¡¢Éϱ¨Òì³£ÐÅÏ¢µ½ notify¡¢´Ó config À­È¡·þÎñÅäÖÃÐÅÏ¢¡£

client ·ÃÎÊ server Á÷³Ì£ºclient ¿ÉÒÔͨ¹ý server µÄ¶ÔÏóÃû Obj ¼ä½Ó·ÃÎÊ server£¬client »á´Ó registry ÉÏÀ­È¡ server µÄ·ÓÉÐÅÏ¢£¨Èç IP¡¢Port ÐÅÏ¢£©£¬È»ºó¸ù¾Ý¾ßÌåµÄÒµÎñÌØÐÔ£¨Í¬²½»òÕßÒì²½£¬TCP »òÕß UDP ·½Ê½£©·ÃÎÊ server£¨µ±È» client Ò²¿ÉÒÔͨ¹ý IP/Port Ö±½Ó·ÃÎÊ server£©¡£

4. Spring Cloud

Spring Cloud ÀûÓà Spring Boot ÌØÐÔÕûºÏÁË¿ªÔ´ÐÐÒµÖÐÓÅÐãµÄ×é¼þ£¬ÕûÌå¶ÔÍâÌṩÁËÒ»Ì×ÔÚ΢·þÎñ¼Ü¹¹ÖзþÎñÖÎÀíµÄ½â¾ö·½°¸¡£

Ö»Ö§³Ö Java ÓïÑÔÆ½Ì¨£¬ËüµÄ¼Ü¹¹Í¼¿ÉÒÔÓÃÏÂÃæÕâÕÅͼÀ´ÃèÊö¡£

Óɴ˿ɼû£¬Spring Cloud ΢·þÎñ¼Ü¹¹ÊÇÓɶà¸ö×é¼þÒ»Æð×é³ÉµÄ£¬¸÷¸ö×é¼þµÄ½»»¥Á÷³ÌÈçÏ¡£

ÇëÇóͳһͨ¹ý API Íø¹Ø Zuul À´·ÃÎÊÄÚ²¿·þÎñ£¬ÏȾ­¹ý Token ½øÐа²È«ÈÏÖ¤¡£

ͨ¹ý°²È«ÈÏÖ¤ºó£¬Íø¹Ø Zuul ´Ó×¢²áÖÐÐÄ Eureka »ñÈ¡¿ÉÓ÷þÎñ½ÚµãÁÐ±í¡£

´Ó¿ÉÓ÷þÎñ½ÚµãÖÐѡȡһ¸ö¿ÉÓýڵ㣬Ȼºó°ÑÇëÇó·Ö·¢µ½Õâ¸ö½Úµã¡£

Õû¸öÇëÇó¹ý³ÌÖУ¬Hystrix ×é¼þ¸ºÔð´¦Àí·þÎñ³¬Ê±ÈÛ¶Ï£¬Turbine ×é¼þ¸ºÔð¼à¿Ø·þÎñ¼äµÄµ÷ÓúÍÈÛ¶ÏÏà¹ØÖ¸±ê£¬Sleuth ×é¼þ¸ºÔðµ÷ÓÃÁ´¼à¿Ø£¬ELK ¸ºÔðÈÕÖ¾·ÖÎö¡£

5. gRPC

ÏÈÀ´¿´Ï gRPC£¬ËüµÄÔ­ÀíÊÇͨ¹ý IDL£¨Interface Definition Language£©Îļþ¶¨Òå·þÎñ½Ó¿ÚµÄ²ÎÊýºÍ·µ»ØÖµÀàÐÍ£¬È»ºóͨ¹ý´úÂëÉú³É³ÌÐòÉú³É·þÎñ¶ËºÍ¿Í»§¶ËµÄ¾ßÌåʵÏÖ´úÂ룬ÕâÑùÔÚ gRPC À¿Í»§¶ËÓ¦ÓÿÉÒÔÏñµ÷Óñ¾µØ¶ÔÏóÒ»Ñùµ÷ÓÃÁíһ̨·þÎñÆ÷É϶ÔÓ¦µÄ·½·¨¡£

ËüµÄÖ÷ÒªÌØÐÔ°üÀ¨Èý¸ö·½Ãæ¡£

ͨÐÅЭÒé²ÉÓÃÁË HTTP/2£¬ÒòΪ HTTP/2 ÌṩÁËÁ¬½Ó¸´Óá¢Ë«ÏòÁ÷¡¢·þÎñÆ÷ÍÆËÍ¡¢ÇëÇóÓÅÏȼ¶¡¢Êײ¿Ñ¹ËõµÈ»úÖÆ

IDL ʹÓÃÁËProtoBuf£¬ProtoBuf ÊÇÓÉ Google ¿ª·¢µÄÒ»ÖÖÊý¾ÝÐòÁл¯Ð­Ò飬ËüµÄѹËõºÍ´«ÊäЧÂʼ«¸ß£¬Óï·¨Ò²¼òµ¥

¶àÓïÑÔÖ§³Ö£¬Äܹ»»ùÓÚ¶àÖÖÓïÑÔ×Ô¶¯Éú³É¶ÔÓ¦ÓïÑԵĿͻ§¶ËºÍ·þÎñ¶ËµÄ´úÂë¡£

6. Thrift

ÔÙÀ´¿´Ï Thrift£¬Thrift ÊÇÒ»ÖÖÇáÁ¿¼¶µÄ¿çÓïÑÔ RPC ͨÐÅ·½°¸£¬Ö§³Ö¶à´ï 25 ÖÖ±à³ÌÓïÑÔ¡£ÎªÁËÖ§³Ö¶àÖÖÓïÑÔ£¬¸ú gRPC Ò»Ñù£¬Thrift Ò²ÓÐÒ»Ì××Ô¼ºµÄ½Ó¿Ú¶¨ÒåÓïÑÔ IDL£¬¿ÉÒÔͨ¹ý´úÂëÉú³ÉÆ÷£¬Éú³É¸÷ÖÖ±à³ÌÓïÑ﵀ Client ¶ËºÍ Server ¶ËµÄ SDK ´úÂ룬ÕâÑù¾Í±£Ö¤Á˲»Í¬ÓïÑÔÖ®¼ä¿ÉÒÔÏ໥ͨÐÅ¡£ËüµÄ¼Ü¹¹Í¼¿ÉÒÔÓÃÏÂͼÀ´ÃèÊö¡£

´ÓÕâÕÅͼÉÏ¿ÉÒÔ¿´³ö Thrift RPC ¿ò¼ÜµÄÌØÐÔ¡£

Ö§³Ö¶àÖÖÐòÁл¯¸ñʽ£ºÈç Binary¡¢Compact¡¢JSON¡¢Multiplexed µÈ¡£

Ö§³Ö¶àÖÖͨÐÅ·½Ê½£ºÈç Socket¡¢Framed¡¢File¡¢Memory¡¢zlib µÈ¡£

·þÎñ¶ËÖ§³Ö¶àÖÖ´¦Àí·½Ê½£ºÈç Simple ¡¢Thread Pool¡¢Non-Blocking µÈ¡£

 

 

 
   
4453 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨ϵÄÊý¾ÝÖÎÀí
ÈçºÎÉè¼ÆÊµÊ±Êý¾Ýƽ̨£¨¼¼Êõƪ£©
´óÊý¾Ý×ʲú¹ÜÀí×ÜÌå¿ò¼Ü¸ÅÊö
Kafka¼Ü¹¹ºÍÔ­Àí
ELK¶àÖּܹ¹¼°ÓÅÁÓ
×îпγÌ
´óÊý¾Ýƽ̨´î½¨Óë¸ßÐÔÄܼÆËã
´óÊý¾Ýƽ̨¼Ü¹¹ÓëÓ¦ÓÃʵս
´óÊý¾ÝϵͳÔËά
´óÊý¾Ý·ÖÎöÓë¹ÜÀí
Python¼°Êý¾Ý·ÖÎö
³É¹¦°¸Àý
ijͨÐÅÉ豸ÆóÒµ PythonÊý¾Ý·ÖÎöÓëÍÚ¾ò
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© Python¼°Êý¾Ý·ÖÎö
ÉñÁúÆû³µ ´óÊý¾Ý¼¼Êõƽ̨-Hadoop
ÖйúµçÐÅ ´óÊý¾Ýʱ´úÓëÏÖ´úÆóÒµµÄÊý¾Ý»¯ÔËӪʵ¼ù