±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËRPC»úÖÆºÍʵÏÖ¹ý³Ì¡¢µ÷ÓþßÓÐÓë±¾µØµ÷ÓÃÀàËÆµÄÐÎʽ¡¢RPC¿ò¼ÜµÄ×é³É¡¢RPCºÍHTTP¸ÅÄî½âÎöµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐÅ IT¼¼ÊõСÎÝ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
RPC»úÖÆºÍʵÏÖ¹ý³Ì
·þÎñʵÀýÖ®¼äÖ÷Ҫͨ¹ýÇáÁ¿¼¶µÄÔ¶³Ìµ÷Ó÷½Ê½À´ÊµÏÖ£¬±ÈÈçRPC
RPC (Remote Procedure Call£¬Ô¶³Ì¹ý³Ìµ÷ÓÃÐÒé)
ÊÇÒ»ÖÖͨ¹ýÍøÂç´ÓÔ¶³Ì¼ÆËã»ú³ÌÐòÉÏÇëÇó·þÎñ
¶ø²»ÐèÒªÁ˽âµ×²ãÍøÂç¼¼ÊõµÄÐÒé
RPCÊÇÔ¶³Ì¹ý³Ìµ÷Óõķ½Ê½Ö®Ò»
Éæ¼°µ÷Ó÷½ºÍ±»µ÷Ó÷½Á½¸ö½ø³ÌµÄ½»»¥
1984Äê
BirrellºÍNelsonÔÚACM Transactions on Computer SystemsÆÚ¿¯ÉÏ·¢±íÁËÃûΪ¡°Implementing
remote procedure calls¡±µÄÂÛÎÄ
RPCÔ¶³Ì¹ý³Ìµ÷ÓÃÊÇÖ¸¼ÆËã»úAÉϵĽø³Ì£¬µ÷ÓÃÁíÍâһ̨¼ÆËã»úBÉϵĽø³ÌµÄ·½·¨¡£ÆäÖУ¬AÉϵĵ÷Óýø³Ì±»¹ÒÆð£¬¶øBÉϵı»µ÷Óýø³Ì¿ªÊ¼Ö´ÐжÔÓ¦·½·¨£¬²¢½«½á¹û·µ»Ø¸øA;¼ÆËã»úA½ÓÊÕµ½·µ»ØÖµºó£¬µ÷Óýø³Ì¼ÌÐøÖ´ÐС£
RPCÈóÌÐòÖ®¼äµÄÔ¶³Ì¹ý³Ìµ÷ÓþßÓÐÓë±¾µØµ÷ÓÃÀàËÆµÄÐÎʽ
µ±read ʵ¼ÊÊDZ¾µØµ÷ÓÃʱ
readº¯ÊýÓÉÁ´½ÓÆ÷´ÓÒÀÀµ¿âÖÐÌáÈ¡³öÀ´½Ó×ÅÁ´½ÓÆ÷»á½«ËüÁ´½Óµ½¸Ã³ÌÐòÖÐËäÈ»readÖÐÖ´ÐÐÁËÌØÊâµÄϵͳµ÷ÓÃ
µ«µ÷Ó÷½²¢²»ÖªµÀreadº¯ÊýµÄ¾ßÌåʵÏÖºÍÐÐΪ
µ±read ʵ¼ÊÊÇÒ»¸öÔ¶³Ì¹ý³Ìʱ
µ÷Ó÷½³ÌÐòÖÐÐèÒªÒýÈëread µÄ½Ó¿Ú¶¨Òå³ÆÎª¿Í»§¶Ë´æ¸ù(client-stub)
Ô¶³Ì¹ý³Ìµ×²ã½«²ÎÊý´ò°ü³ÉÍøÂçÏûÏ¢²¢·¢Ë͵½Ô¶³Ì·þÎñÆ÷½»ÓÉÔ¶³Ì·þÎñÖ´ÐжÔÓ¦µÄ·½·¨

RPC¿ò¼ÜµÄ×é³É

·Ö²¼Ê½¼Ü¹¹ËùÐèÒªµÄÆóÒµÄÚ²¿Í¨ÐÅÄ£¿é
ÍùÍù²ÉÓÃ˽ÓÐÐÒéÀ´Éè¼ÆºÍÑз¢
˽ÓÐÐÒé¿ÉÒÔ×î´ó³Ì¶ÈµØ½µµÍ³É±¾£¬ÌáÉýÐÔÄÜ£¬Ìá¸ßÁé»îÐÔÓëЧÂÊ
ÐÒé°üÀ¨µÄ±ØÒª×Ö¶ÎÓëÖ÷ÒªÒµÎñ¸ºÔØ×Ö¶Î
ͨÐŹ¦ÄÜÌØÐÔµÄÖ§³Ö
ÐÒéµÄÉý¼¶»úÖÆ
RPCºÍHTTP¸ÅÄî½âÎö
RPCºÍHTTP¶¼ÊÇ΢·þÎñ¼äͨÐŽÏΪ³£Óõķ½°¸Ö®Ò»RPCºÍHTTP²¢²»ÍêÈ«ÊÇͬһ¸ö²ã´ÎµÄ¸ÅÄî
RPCÊÇÔ¶³Ì¹ý³Ìµ÷ÓÃ
Æäµ÷ÓÃÐÒéͨ³£°üÀ¨ÐòÁл¯ÐÒéºÍ´«ÊäÐÒ顤ÐòÁл¯ÐÒéÓлùÓÚ´¿Îı¾µÄXMLºÍJSON
¶þ½øÖƱàÂëµÄProtobufºÍ Hessian
´«ÊäÐÒéÊÇÖ¸Æäµ×²ãÍøÂç´«ÊäËùʹÓõÄÐÒé
±ÈÈçTCP¡¢HTTP
¿ÉÒÔ¿´³öHTTPÊÇRPCµÄ´«ÊäÐÒéµÄÒ»¸ö¿ÉÑ¡·½°¸

Ϊʲô´«Êä²ãÐÒé»áʹÓÃ×Ô¶¨ÒåµÄ TCPÐÒéÄØ?
Ê×ÏÈÏëµ½HTTPÊÇÎÞ״̬¡¢ÎÞÁ¬½ÓµÄ
ËùÒÔÿ´Î½øÐÐͨÐŶ¼Òª½¨Á¢ºÍ¶Ï¿ªÁ¬½ÓÕâ»áÓ°ÏìͨÐÅЧÂÊ
ʵ¼ÊÉÏHTTPÐÒéÊÇÖ§³ÖÁ¬½Ó³Ø¸´ÓõÄ
Äܽ¨Á¢Ò»¶¨ÊýÁ¿µÄÁ¬½Ó²¢ÇÒ±£³ÖÁ¬½Ó²»»á¶Ï¿ª²»ÓÃÆµ·±½¨Á¢ºÍ¶Ï¿ªÁ¬½Ó
Òò´ËÁ¬½ÓÎÊÌâ²¢²»ÊÇÓÅÏÈÑ¡Ôñ×Ô¶¨ÒåTCPÐÒéµÄÕæÕýÔÒò
×Ô¶¨ÒåTCPÐÒé¿ÉÒÔÁé»îµØ¶ÔÐÒé×ֶνøÐж¨ÖƼõÉٷDZØÒª×ֶεĴ«Ê䣬¼õÉÙÍøÂ翪Ïú
¶øHTTPÐÒéÔò°üº¬Á˹ý¶àÎÞÓõÄÐÅÏ¢
HTTP/1.0 200OK
Content-Type: text/plainContent-Length: 137582
Expires: Thu, 05 Dec 202016:00:00 GMT
Last-Modified: Wed, 5 August 2020 15:55:28 GMTServer:
Apache/1.3.3.7(Unix) (Red-Hat/Linux)
html>
<body>
Hello World
</body>
</html> |

³£¼ûµÄPRC¿ò¼Ü
ĿǰÁ÷ÐеĿªÔ´ RPC¿ò¼ÜÓÐ
°¢Àï°Í°ÍµÄ Dubbo
GoogleµÄgRPC
FacebookµÄThrift
TwitterµÄ FinagleµÈ
Go RPC:
ÔÉúÖ§³ÖµÄRPCÔ¶³Ìµ÷ÓûúÖÆ
·Ç³£ÊʺÏÄãÁ˽âºÍѧϰRPCµÄÈëÃÅ¿ò¼Ü
gRPC:
»ùÓÚHTTP2.0ÐÒéµÄÖ§³ÖÖÚ¶à³£¼ûµÄ±à³ÌÓïÑÔÌṩÁËÇ¿´óµÄÁ÷ʽµ÷ÓÃÄÜÁ¦
Thrift:
Ö÷ÒªÊÇÒ»¸ö¿çÓïÑԵķþÎñ¿ª·¢¿ò¼Ü¾ßÓиßÐÔÄܺÍÎȶ¨ÐÔµÄÌØµã
С½á
½éÉÜÁË΢·þÎñÖ®¼äµÄÔ¶³Ì·½·¨µ÷Óùý³Ì
È»ºó½²½âÁËRPC¿ò¼ÜµÄ×é³É
×îºó»¹¼òµ¥½éÉÜÁËĿǰÖ÷Á÷µÄRPC¿ò¼Ü |