1.Daprɨä
1.1ʲôÊÇRPC
RPC(RemoteProcedureCall)ÊÇÔ¶³Ì¹ý³Ìµ÷Ó㬱ÈÈç˵ÏÖÔÚÓÐÁ½Ì¨·þÎñÆ÷A,B£¬Ò»¸öÔÚA·þÎñÆ÷ÉϵÄÓ¦ÓÃÏëÒªµ÷ÓÃB·þÎñÆ÷ÉϵÄÓ¦ÓÃÌṩµÄij¸ö£¬ÓÉÓÚ²»ÔÚÁ½¸ö·½·¨²»ÔÚÒ»¸öÄÚ´æ¿Õ¼ä£¬²»ÄÜÖ±½Óµ÷Óã¬ÐèҪͨ¹ýÍøÂç±í´ïµ÷ÓõÄÓïÒåºÍ´«´ïµ÷ÓõÄÊý¾Ý¡£³£´æÔÚÓÚ·Ö²¼Ê½ÏµÍ³ÖС£
1.2ΪʲôÓÐÁËHttp»¹ÒªRPC£¿
RPC¸úHTTP²»ÊǶÔÁ¢Ã棬RPCÖпÉÒÔʹÓÃHTTP×÷ΪͨѶÐÒé¡£RPCÊÇÒ»ÖÖÉè¼Æ¡¢ÊµÏÖ¿ò¼Ü£¬Í¨Ñ¶ÐÒéÖ»ÊÇÆäÖÐÒ»²¿·Ö¡£HTTP½Ó¿ÚÊÇÔÚ½Ó¿Ú²»¶à¡¢ÏµÍ³Óëϵͳ½»»¥½ÏÉÙµÄÇé¿öÏ£¬½â¾öÐÅÏ¢¹Âµº³õÆÚ³£Ê¹ÓõÄÒ»ÖÖͨÐÅÊֶΣ»Óŵã¾ÍÊǼòµ¥¡¢Ö±½Ó¡¢¿ª·¢·½±ã¡£
HTTPÐÒéÊÇÎÞ״̬µÄ£¬Ã¿´ÎͨÐŶ¼ÒªÏñHTTPÒ»ÑùÈ¥3´ÎÎÕÊÖ
RPCÊdz¤Á¬½Ó
RPC¿ò¼ÜÒ»°ã¶¼ÓÐ×¢²áÖÐÐÄ£¬ÓзḻµÄ¼à¿Ø¹ÜÀí£»·¢²¼¡¢ÏÂÏß½Ó¿Ú¡¢¶¯Ì¬À©Õ¹µÈ£¬¶Ôµ÷Ó÷½À´ËµÊÇÎÞ¸ÐÖª¡¢Í³Ò»»¯µÄ²Ù×÷
×îºó¾ÍÊÇ×î½üÁ÷ÐеķþÎñ»¯¼Ü¹¹¡¢·þÎñ»¯ÖÎÀí£¬RPC¿ò¼ÜÊÇÒ»¸öÇ¿Á¦µÄÖ§³Å¡£
1.3RPCÖÐÒª½â¾öµÄÎÊÌ⣺
½¨Á¢Í¨ÐÅ£ºÔÚ¿Í»§¶ËÓë·þÎñ¶Ë½¨Á¢ÆðÊý¾Ý´«ÊäͨµÀ£¬´ó¶¼ÊÇTCPÁ¬½Ó£¨gRPCʹÓÃÁËHTTP2£©¡£
Ñ°Ö·£ºA·þÎñÆ÷ÉϵÄÓ¦ÓÃÐèÒª¸æËßRPC¿ò¼Ü£ºB·þÎñÆ÷µØÖ·¡¢¶Ë¿Ú£¬µ÷Óú¯ÊýÃû³Æ¡£ËùÒÔ±ØÐëʵÏÖ´ýµ÷Ó÷½·¨µ½callIDµÄÓ³Éä¡£
ÐòÁл¯Óë·´ÐòÁл¯£ºÓÉÓÚÍøÂçÐÒ鶼ÊǶþ½øÖƵģ¬ËùÒÔµ÷Ó÷½·¨µÄ²ÎÊýÔÚ½øÐд«µÝʱÊ×ÏÈÒªÐòÁл¯³É¶þ½øÖÆ£¬B·þÎñÆ÷ÊÕµ½ÇëÇóºóÒªÔÙ¶Ô²ÎÊý½øÐз´ÐòÁл¯¡£»Ö¸´ÎªÄÚ´æÖеıí´ï·½Ê½£¬ÕÒµ½¶ÔÓ¦µÄ·½·¨½øÐб¾µØµ÷Ó㬵õ½·µ»ØÖµ¡£·µ»ØÖµ´ÓBµ½AµÄ´«ÊäÈÔÒª¾¹ýÐòÁл¯Óë·´ÐòÁл¯µÄ¹ý³Ì¡£
1.4HTTP¸÷°æ±¾¼ò½é
HTTP1.0:¹æ¶¨ä¯ÀÀÆ÷Óë·þÎñÆ÷Ö»±£³Ö¶ÌÔݵÄÁ¬½Ó£¬ä¯ÀÀÆ÷µÄÿ´ÎÇëÇó¶¼ÐèÒªÓë·þÎñÆ÷½¨Á¢Ò»¸öTCPÁ¬½Ó£¬·þÎñÆ÷Íê³ÉÇëÇó´¦ÀíºóÁ¢¼´¶Ï¿ªTCPÁ¬½Ó£¬·þÎñÆ÷²»¸ú×Ùÿ¸ö¿Í»§Ò²²»¼Ç¼¹ýÈ¥µÄÇëÇó¡£Á¬½ÓÎÞ·¨¸´ÓÃ
HTTP1.1:
¸´ÓÃÁ¬½Ó£¨keep-alive£©
»º´æ´¦Àí
Éí·ÝÈÏÖ¤£¬×´Ì¬¹ÜÀí
HTTP1.1״̬´úÂë¼°Æ京Òå
״̬´úÂëÓÐÈýλÊý×Ö×é³É£¬µÚÒ»¸öÊý×Ö¶¨ÒåÁËÏìÓ¦µÄÀà±ð£¬ÇÒÓÐÎåÖÖ¿ÉÄÜÈ¡Öµ£º
1xx£ºÖ¸Ê¾ÐÅÏ¢--±íʾÇëÇóÒѽÓÊÕ£¬¼ÌÐø´¦Àí
2xx£º³É¹¦--±íʾÇëÇóÒѱ»³É¹¦½ÓÊÕ¡¢Àí½â¡¢½ÓÊÜ
3xx£ºÖض¨Ïò--ÒªÍê³ÉÇëÇó±ØÐë½øÐиü½øÒ»²½µÄ²Ù×÷
4xx£º¿Í»§¶Ë´íÎó--ÇëÇóÓÐÓï·¨´íÎó»òÇëÇóÎÞ·¨ÊµÏÖ
5xx£º·þÎñÆ÷¶Ë´íÎó--·þÎñÆ÷δÄÜʵÏֺϷ¨µÄÇëÇó
HTTP2.0:
¶à·¸´ÓÃ(Multiplexing)
¶à¸öRequest¹²ÓÃÒ»¸öÁ¬½Ó
¶þ½øÖÆ·ÖÖ¡
HTTP1.X¶¼ÊÇ»ùÓÚÎı¾½âÎö£¬¶øÒòΪÎı¾±íÏÖÐÎʽµÄ¶àÑùÐÔ£¬»ùÓÚÎı¾ÐÒéµÄ¸ñʽ½âÎöÌìÈ»´æÔÚ½¡×³ÐÔÎÊÌâ¡£¶ø²ÉÓöþ½øÖƸñʽºóʵÏÖ·½±ãÇÒ½¡×³¡£
Êײ¿Ñ¹Ëõ£¨HeaderCompression£©
HTTP/1.1²¢²»Ö§³ÖHTTPÊײ¿Ñ¹Ëõ£¬Îª´ËSPDYºÍHTTP/2Ó¦Ô˶øÉú£¬SPDYʹÓõÄÊÇͨÓõÄDEFLATEËã·¨£¬¶øHTTP/2ÔòʹÓÃÁËרÃÅΪÊײ¿Ñ¹Ëõ¶øÉè¼ÆµÄHPACKËã·¨¡£
·þÎñ¶ËÍÆËÍ£¨ServerPush£©
·þÎñ¶ËÍÆËÍÊÇÒ»ÖÖÔÚ¿Í»§¶ËÇëÇó֮ǰ·¢ËÍÊý¾ÝµÄ»úÖÆ¡£ÔÚHTTP/2ÖУ¬·þÎñÆ÷¿ÉÒÔ¶Ô¿Í»§¶ËµÄÒ»¸öÇëÇó·¢ËͶà¸öÏìÓ¦¡£ServerPushÈÃHTTP1.xʱ´úʹÓÃÄÚǶ×ÊÔ´µÄÓÅ»¯ÊֶαäµÃûÓÐÒâÒ壻Èç¹ûÒ»¸öÇëÇóÊÇÓÉÄãµÄÖ÷Ò³·¢ÆðµÄ£¬·þÎñÆ÷ºÜ¿ÉÄÜ»áÏìÓ¦Ö÷Ò³ÄÚÈÝ¡¢logoÒÔ¼°Ñùʽ±í£¬ÒòΪËüÖªµÀ¿Í»§¶Ë»áÓõ½ÕâЩ¶«Î÷¡£ÕâÏ൱ÓÚÔÚÒ»¸öHTMLÎĵµÄÚ¼¯ºÏÁËËùÓеÄ×ÊÔ´£¬²»¹ýÓëÖ®Ïà±È£¬·þÎñÆ÷ÍÆËÍ»¹ÓÐÒ»¸öºÜ´óµÄÓÅÊÆ£º¿ÉÒÔ»º´æ£¡Ò²ÈÃÔÚ×ñÑͬԴµÄÇé¿öÏ£¬²»Í¬Ò³ÃæÖ®¼ä¿ÉÒÔ¹²Ïí»º´æ×ÊÔ´³ÉΪ¿ÉÄÜ¡£
1.5ʲôÊÇHTTPS
HTTPÐÒé´«ÊäµÄÊý¾Ý¶¼ÊÇδ¼ÓÃܵÄ.ΪÁ˱£Ö¤ÕâЩÒþ˽Êý¾ÝÄܼÓÃÜ´«Ê䣬ÓÚÊÇÍø¾°¹«Ë¾Éè¼ÆÁËSSL£¨SecureSocketsLayer£©ÐÒéÓÃÓÚ¶ÔHTTPÐÒé´«ÊäµÄÊý¾Ý½øÐмÓÃÜ£¬´Ó¶ø¾Íµ®ÉúÁËHTTPS¡£ÏÖÔÚµÄHTTPS¶¼ÊÇÓõÄTLSÐÒ飬µ«ÊÇÓÉÓÚSSL³öÏÖµÄʱ¼ä±È½ÏÔ磬²¢ÇÒÒÀ¾É±»ÏÖÔÚä¯ÀÀÆ÷ËùÖ§³Ö£¬Òò´ËSSLÒÀÈ»ÊÇHTTPSµÄ´úÃû´Ê¡£
HTTPSĬÈ϶˿ںÅÊÇ.
1.6ʲôÊÇgRPC
gRPCÊǹȸ迪ԴµÄÒ»¸öRPC¿ò¼Ü£¬ÃæÏòÒƶ¯ºÍHTTP/2Éè¼Æ¡£
ÄÚÈݽ»»»¸ñʽ²ÉÓÃProtoBuf(GoogleProtocolBuffers)£¬¿ªÔ´ÒѾã¬ÌṩÁËÒ»ÖÖÁé»î¡¢¸ßЧ¡¢×Ô¶¯ÐòÁл¯½á¹¹Êý¾ÝµÄ»úÖÆ£¬×÷ÓÃÓëXML£¬JsonÀàËÆ£¬µ«Ê¹Óöþ½øÖÆ£¬£¨·´£©ÐòÁл¯Ëٶȿ죬ѹËõЧÂʸߡ£
´«ÊäÐÒé²ÉÓÃ
תÔØÇë×¢Ã÷£ºhttp://www.aierlanlan.com/rzdk/1652.html