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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÔÆÔ­Éú΢·þÎñ gRPC ÈçºÎʵÏÖ¸ºÔؾùºâ
 
 
  3312  次浏览      28
 2021-9-24
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜ4ÖÖ½â¾ö·½°¸ÊµÏÖ²¿ÊðÔÚKubernetesÖеÄgRPC·þÎñµÄload balancing¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐŹ«Ö¤ºÅGo¿ª·¢´óÈ« £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼­¡¢ÍƼö¡£

¡¾µ¼¶Á¡¿ÔÆÔ­Éú΢·þÎñµÄgRPC·þÎñÈçºÎʵÏÖ¸ºÔؾùºâ£¿±¾ÎĶԳ£¼û4ÖÖ·½°¸×öÁËÏêϸ½éÉÜ¡£

¶ÔÓÚÓ¦ÓóÌÐò¿ª·¢ÈËÔ±À´Ëµ£¬gRPCÊÇÒ»ÖÖÔ½À´Ô½ÆÕ±éµÄÑ¡Ôñ¡£ÓëÖîÈçJSON-over-HTTPÖ®ÀàµÄÌæ´úЭÒéÏà±È£¬gRPC¿ÉÒÔÌṩһЩÏÔ×ŵĺô¦£¬°üÀ¨´ó·ù½µµÍ£¨·´ÐòÁл¯£©³É±¾£¬×Ô¶¯ÀàÐͼì²é£¬¸ñʽ»¯µÄAPIºÍ¸üÉÙµÄTCP¹ÜÀí¿ªÏú¡£

µ«ÊÇgRPC½¨Á¢ÔÚHTTP/2Ö®ÉÏ£¬²¢ÇÒHTTP/2Éè¼ÆÎª¾ßÓе¥¸ö³¤ÆÚTCPÁ¬½Ó£¬ËùÓÐÇëÇó¶¼ÔÚ¸ÃTCPÁ¬½ÓÉϽøÐжà·¸´Ó㨶à¸öÇëÇó¿ÉÒÔÔÚͬһʱ¼äÔÚͬһÁ¬½ÓÉÏ´¦Óڻ״̬£©¡£µ«ÊÇÕâÒ²Òâζ×Å gRPC ÐèÒªÌØÊâµÄ load balancing¡£

±¾ÎÄÖ÷Òª½éÉÜ4ÖÖ½â¾ö·½°¸ÊµÏÖ²¿ÊðÔÚKubernetesÖеÄgRPC·þÎñµÄload balancing¡£

1£©¿Í»§¶Ëlb + Name Resolver + Headless Service

¸Ã½â¾ö·½°¸ÊµÏÖµÄÊǿͻ§¶Ë¸ºÔؾùºâ¡£ÊµÏÖgRPC¿Í»§¶Ë¸ºÔØÆ½ºâÐèÒªÁ½¸öÖ÷Òª×é¼þ: name resolver ºÍ load balancing policy¡£

µ±gRPC¿Í»§¶ËÏëÒªÓëgRPC·þÎñÆ÷½øÐн»»¥Ê±£¬ËüÊ×Ïȳ¢ÊÔͨ¹ýÏò resolver ·¢³öÃû³Æ½âÎöÇëÇóÀ´½âÎö·þÎñÆ÷Ãû³Æ£¬½âÎö³ÌÐò·µ»ØÒѽâÎöIPµØÖ·µÄÁÐ±í¡£

µÚ¶þ²¿·ÖÊǸºÔØÆ½ºâ²ßÂÔ¡£±ÈÈçgRPC-Go¿âÖеÄÁ½¸öÄÚÖòßÂÔÊÇroundrobinºÍgrpclb²ßÂÔ¡£grpclb²ßÂÔͨ³£ÓëÍⲿ¸ºÔؾùºâÆ÷Ò»ÆðʹÓ᣻¹ÓÐÒ»¸öbase²ßÂÔ£¬Í¨³£ÓÃÓÚ¹¹½¨¸ü¸´ÔÓµÄÑ¡ÔñËã·¨¡£¶ÔÓÚ½âÎöÆ÷·µ»ØµÄÿ¸ö·Ç¸ºÔؾùºâÆ÷µØÖ·£¬¸ºÔؾùºâ²ßÂÔ¶¼»á´´½¨Ò»¸öµ½¸ÃµØÖ·µÄÐÂ×ÓÁ¬½Ó¡£È»ºó£¬¸Ã²ßÂÔ·µ»ØÒ»¸öÑ¡ÔñÆ÷£¬¸ÃÑ¡ÔñÆ÷Ϊ¿Í»§¶ËÌṩһ¸ö½Ó¿Ú£¬ÒÔ¼ìË÷ÓÃÓÚ½øÐÐRPCµ÷ÓõÄ×ÓÁ¬½Ó¡£

ĬÈÏgRPC ʹÓà dns ×÷ΪÆä resolver¡£ËùÒÔÎÒÃÇÐèҪΪÎÒÃǵÄÓ¦Óô´½¨Headless Service ¡£¹ØÓÚHeadless Service£¬ÎÒÃÇÕâÀï²»×÷Ïêϸ½éÉÜ£¬´ó¼Ò¿ÉÒÔ²ÎÔĹٷ½Îĵµ¡£´´½¨ Headless Service µÄ·þÎñ£¬Kubernetes½«Ôڸ÷þÎñµÄDNSÌõÄ¿Öд´½¨¶à¸öA¼Ç¼£¬¶øÃ¿¸öA¼Ç¼ÓëÖ®¶ÔÓ¦µÄÊÇÒ»¸öPod IP¡£

2£©¼¯ÖÐʽProxy

ͨ¹ý¼¯ÖÐʽµÄ´úÀíÀ´½â¾ögRPC ¸ºÔؾùºâÒ²ÊÇÒ»ÖÖÁ÷ÐеĽâ¾ö·½°¸¡£±ÈÈçµ±ÎÒÃǵĿͻ§¶Ë´¦ÓÚ¹«Íø£¬ÎÒÃdzöÓÚ°²È«µÄ¿¼Á¿£¬²»¿ÉÄܽ« server ÅäÖÃΪ¹«Íø¿É·ÃÎÊ£¬´Ëʱ¼¯ÖÐʽLB¾Í·Ç³£ÊʺÏÕâÖÖ³¡¾°¡£

¶øÈç¹ûÎÒÃǵķþÎñÊDz¿ÊðÔÚ kubernetes ÖУ¬ÄÇôѡÔñÒ»¸öÖ§³ÖgRPCµÄIngress Controller ¾Í¿ÉÒÔÍêÃÀ½â¾öÎÊÌâ¡£

Ŀǰ»ùÓÚ Envoy ʵÏÖµÄ Ingress Controller ¾ùÖ§³ÖgRPCµÄ¸ºÔؾùºâ¡£±ÈÈç Contour£¬Ambassador£¬ GlooµÈ¡£Envoy ÊÇÒ»¸ö¿ªÔ´Ó¦Óò㣨µÚ 7 ²ã£©´úÀí£¬ÌṩÐí¶à¸ß¼¶ÌØÐÔ¡£¿ÉÒÔ¿ÉÒÔʹÓÃËüÀ´ÖÕÖ¹ SSL/TLS Á¬½Ó²¢½« gRPC Á÷Á¿Â·Óɵ½Êʵ±µÄ Kubernetes ·þÎñ¡£

±ÈÈçÎÒÃÇÔÚÉú²ú»·¾³¾ÍÊÇʹÓÃContourÀ´½â¾ögRPC ·þÎñ¸ºÔؾùºâµÄÎÊÌâ¡£

¶øÈç¹ûÄãÇ¡ºÃÔËÐÐÔÚAwsÉÏ£¬ÄÇôÄã¿ÉÒÔÑ¡ÔñALB ingress Controller¡£

¸Ã·½°¸ÓÅÊÆÊǿͻ§¶ËÎÞÐ踴ÔÓµÄÅäÖ㬶ø ingress ÓÖÊÇ kubernetes ±¾ÉíµÄ¸ÅÄûÓÐÆäËû¸ÅÄîµÄÒýÈë¡£

3£©Service Mesh

ĿǰËùÓеÄService Mesh ½â¾ö·½°¸¶¼Ö§³ÖgRPC·þÎñ¡£°üÀ¨IstioµÈÒÔEnvoy×÷ΪÊý¾ÝÃæµÄ Mesh ½â¾ö·½°¸ºÍ Linkerd µÈ·ÇEnvoy×÷ΪÊý¾ÝÃæµÄMesh¡£

Mesh·½°¸±¾ÖÊÉÏÒÀ¾ÉÊÇProxy¡£ºÍ¼¯ÖÐʽProxy¶Ô±È£¬Ö»Êǽ«ProxyϳÁµ½Ã¿¸öClient£¬ÒÔSidecarµÄÐÎʽ´æÔÚ¡£

¸Ã·½°¸±È½Ï¸´ÔÓ£¬²»¹ýMesh½â¾ö·½°¸ÊÇÒ»¸öÍêÕûµÄ·þÎñÖÎÀí·½°¸£¬¿ÉÒÔʵÏÖ³ýÁ˸ºÔؾùºâÖ®ÍâµÄÆäËû¹¦ÄÜ£¬±ÈÈç¹ÊÕÏ×¢È룬ÏÞÁ÷£¬È۶ϵȣ¬¶øÇҾ߱¸·á¸»µÄ¿É¹Û²ìÐÔºÍÀ©Õ¹ÐÔ£¬ÒÔ¼°Ò»¸öÁãÐÅÈεÄÍøÂç¡£Èç¹ûÄãÇ¡ºÃÔÚÉú²ú»·¾³Â䵨ÁËMesh£¬ÄÇô¸Ã·½°¸ÊÇÄã×î¼ÑµÄÑ¡Ôñ¡£

4£©ÎÞ´úÀí xds ¸ºÔؾùºâ

xDS ±¾ÉíÊÇEnvoyÖеĸÅÄÏÖÔÚÒѾ­·¢Õ¹ÎªÓÃÓÚÅäÖø÷ÖÖÊý¾ÝÆ½ÃæÈí¼þµÄ±ê×¼¡£×îа汾µÄgRPCÒѾ­Ö§³Ö »ùÓÚxDSµÄ¸ºÔØÆ½ºâ£¬Ä¿Ç°ÎªÖ¹£¬gRPCÍŶÓÔö¼ÓÁ˶ÔC-core£¬JavaºÍGoÓïÑÔµÄÖ§³Ö¡£

ÔÚxDS APIÁ÷³ÌÖУ¬¿Í»§¶ËʹÓÃÒÔÏÂÖ÷ÒªAPI£º

Listener Discovery Service (LDS): ·µ»Ø¼àÌýÆ÷×ÊÔ´¡£»ù±¾ÉÏÓÃ×÷gRPC¿Í»§¶ËÅäÖõÄroot¡£Ö¸ÏòRouteConfiguration¡£

Route Discovery Service (RDS): ·µ»ØRouteConfiguration×ÊÔ´¡£ÌṩÓÃÓÚÌî³ägRPC·þÎñÅäÖõÄÊý¾Ý¡£Ö¸Ïò¼¯Èº¡£

Cluster Discovery Service (CDS): ·µ»Ø¼¯Èº×ÊÔ´¡£ÅäÖÃÖîÈç¸ºÔØÆ½ºâ²ßÂԺ͸ºÔر¨¸æÖ®ÀàµÄÄÚÈÝ¡£Ö¸ÏòClusterLoadAssignment¡£

Endpoint Discovery Service (EDS): ·µ»ØClusterLoadAssignment×ÊÔ´¡£ÅäÖÃÒ»×é¶Ëµã£¨ºó¶Ë·þÎñÆ÷£©ÒÔʵÏÖ¸ºÔؾùºâ£¬²¢¿ÉÄܸæË߿ͻ§¶Ë¶ªÆúÇëÇó¡£

ΪÁËÀûÓÃxDS¸ºÔؾùºâ£¬gRPC¿Í»§¶ËÐèÒªÁ¬½Óµ½xDS·þÎñÆ÷¡£¿Í»§¶ËÐèÒªÔÚÓÃÓÚ´´½¨gRPCͨµÀµÄÄ¿±êURIÖÐʹÓÃxds½âÎöÆ÷¡£ÏÂͼÏÔʾÁËAPIµ÷ÓõÄ˳Ðò¡£

xDS·þÎñÆ÷¸ºÔð·¢ÏÖgRPC·þÎñÆ÷µÄ¶Ëµã²¢½«Æä´«´ï¸ø¿Í»§¶Ë¡£È»ºó£¬¿Í»§¶Ë»á¶¨ÆÚÇëÇó¸üС£

ÎÒÃÇʹÓà Envoy go-control-plane¿âÀ´ÊµÏÖxDS server¡£¶ÔÓÚ²¿ÊðÔÚKubernetesÖеÄgRPCµÄ·þÎñ£¬ÎÒÃÇ¿ÉÒÔʹÓÃk8s client-goÀ´·¢ÏÖÄ¿±êEndPoints¡£

Ïà¶ÔÓÚ ¿Í»§¶Ëlb + Name Resolver + Headless Service£¬Ä¿Ç°xds ¸ºÔؾùºâÖ§³ÖµÄÓïÑÔ²»¹»·á¸»£¬ÕâÊÇÎÒÃÇÑ¡Ôñ¸Ã·½°¸Ê±£¬²»µÃ²»¿¼ÂǵÄÎÊÌâ¡£

ÕâÊÇÒ»ÖÖÎÞproxyµÄ¿Í»§¶Ë¸ºÔؾùºâ·½°¸¡£¶Ô±ÈMesh·½°¸£¬ÐÔÄܸüºÃ¡£µ«ÊǸ÷½°¸³õÖÔÊÇ×÷ΪService Mesh ·½°¸µÄÒ»ÖÖ²¹³ä£¬²¢²»ÊÇÓÃÀ´Ìæ»»Mesh¡£

ÔÚÒÔϵij¡¾°ÖУ¬Äã¿ÉÒÔ¿¼ÂÇʹÓÃÎÞProxyµÄ·½°¸£º

¸ßÐÔÄÜ gRPC Ó¦Óã¬Äã²»Ïë³Ðµ£ÒýÈëSidecar´øÀ´µÄÑÓ³Ù¡£

ÎÞ·¨²¿Êð Sidecar ´úÀíµÄ»·¾³

Òì¹¹·þÎñÍø¸ñ

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

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
ÔÆÔ­Éú¼Ü¹¹¸ÅÊö
K8S¸ß¿ÉÓü¯Èº¼Ü¹¹ÊµÏÖ
ÈÝÆ÷ÔÆ¹ÜÀíÖ®K8S¼¯Èº¸ÅÊö
k8s-ÕûÌå¸ÅÊöºÍ¼Ü¹¹
Ê®·ÖÖÓѧ»áÓÃdocker²¿Êð΢·þÎñ
×îпγÌ
ÔÆ¼ÆË㡢΢·þÎñÓë·Ö²¼Ê½¼Ü¹¹
Æóҵ˽ÓÐÔÆÔ­ÀíÓë¹¹½¨
»ùÓÚKubernetesµÄDevOpsʵ¼ù
ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦Ó㨰¢ÀïÔÆ£©
Docker²¿Êð±»²âϵͳÓë×Ô¶¯»¯¿ò¼Üʵ¼ù
³É¹¦°¸Àý
±±¾© ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ùÅàѵ
ij¾ü¹¤Ñо¿µ¥Î» MDA£¨Ä£ÐÍÇý¶¯¼Ü¹¹£©
ÖªÃûÏû·Ñ½ðÈÚ¹«Ë¾ ÁìÓòÇý¶¯Éè¼Æ
ÉîÛÚijÆû³µÆóÒµ Ä£ÐÍÇý¶¯µÄ·ÖÎöÉè¼Æ