±à¼ÍƼö: |
±¾ÎÄÀ´×Ôcsdn£¬±¾ÎĽéÉÜ·ÖΪÁ½¸ö²¿·Ö£¬µÚÒ»²¿·ÖΪ΢·þÎñÏà¹Ø¸ÅÄî½éÉÜ£¬µÚ¶þ²¿·ÖΪIstio¾ßÌåʵ¼ù¡£ |
|
΢·þÎñ¹úÄÚ·¢Õ¹±³¾°£º
2014Ä꣬Martin Fowler׫дµÄ¡¶Microservices¡·Ê¹µÃÐí¶à¹úÄÚµÄÏÈÐÐÕß½Ó´¥µ½Î¢·þÎñÕâ¸ö¸ÅÄî²¢½«ÆäÒýÈë¹úÄÚ£¬2015ÄêÔ½À´Ô½¶àµÄÈËͨ¹ý¸÷ÖÖÇþµÀÁ˽⵽΢·þÎñµÄ¸ÅÄî²¢ÓÐÈË¿ªÊ¼ÔÚÉú²ú»·¾³ÖÐÂ䵨£¬2016-2017Ä꣬΢·þÎñµÄ¸ÅÄî±»Ô½À´Ô½¶àµÄÈËÈϿɣ¬´ø¶¯ÁËÒ»´óÅú¹«Ë¾ÒÔ΢·þÎñºÍÈÝÆ÷ΪºËÐÄ¿ªÊ¼¼¼Êõ¼Ü¹¹µÄÈ«Ãæ¸ïС£
ÖÁ½ñ΢·þÎñÒѾÀúÁËÁ½´ú·¢Õ¹£¬µÚÒ»´úÒÔSpring CloudΪ´ú±íµÄ΢·þÎñ¿ª·¢¿ò¼Ü£¬¸Ã¿ò¼ÜÔÚ΢·þÎñ·¢Õ¹µÄǰ¼¸ÄêÒ»¶È¶ÀÁì·çɧ£¬ÉõÖÁÔÚ²¿·ÖÈËȺÖгÉΪ΢·þÎñµÄ´úÃû´Ê£¬µ«ÊÂʵÉϸÃ΢·þÎñ¿ò¼Ü²¢²»ÊÇΨһʵÏÖ΢·þÎñµÄ·½Ê½£»µÚ¶þ´ú΢·þÎñ¼¼ÊõΪ·þÎñÍø¸ñ£¨Service
Mesh£©£¬ËüµÄ³öÏÖ½â¾öÁ˴󲿷ֿª·¢ÈËÔ±ÔÚʹÓÃSpring CloudÖÐÓöµ½µÄ²»×ãºÍÍ´µã¡£
Service MeshÊÇÈçºÎ½â¾öÕâЩÎÊÌâµÄ£¬ÓÖÊǺÎÒÔÓ®µÃÖڶ࿪·¢ÕßµÄÖ§³ÖÄØ£¿±ÊÕß¾ÍÕâЩÎÊÌâ¸ø´ó¼Ò·ÖÏíһƪÒÔIstioΪ´ú±íµÄµÚ¶þ´ú΢·þÎñʵ¼ù¡£
Ò»¡¢Î¢·þÎñºÍIstio
Service Mesh»ù±¾¸ÅÄî
·þÎñÍø¸ñÊÇÒ»¸ö»ù´¡ÉèÊ©²ã£¬Ö÷ÒªÓÃÓÚ´¦Àí·þÎñ¼äµÄͨÐÅ¡£ÔÆÔÉúÓ¦ÓÃÓÐן´ÔӵķþÎñÍØÆË£¬·þÎñÍø¸ñ¸ºÔðÔÚÕâÐ©ÍØÆËÖÐʵÏÖÇëÇóµÄ¿É¿¿´«µÝ¡£ÔÚʵ¼ùÖУ¬·þÎñÍø¸ñͨ³£ÊµÏÖΪһ×éÇáÁ¿¼¶ÍøÂç´úÀí£¬ËüÃÇÓëÓ¦ÓóÌÐò²¿ÊðÔÚÒ»Æð£¬¶ø¶ÔÓ¦ÓóÌÐò͸Ã÷¡£
ͼ1չʾÁË·þÎñÍø¸ñµÄÍØÆË£¬µ±Î¢·þÎñÊýÁ¿Ôö¶à´ïµ½¼¸Ê®ÉϰÙʱ£¬·þÎñÍø¸ñ¾Í»á³ÊÏÖ·þÎñÍø¸ñ×´£¬ÆäÖÐÂÌɫΪ΢·þÎñ£¬À¶É«Îª·þÎñÍø¸ñ£¬·þÎñÍø¸ñÒÔµäÐ͵Äsidecar·½Ê½²¿ÊðÔÚ΢·þÎñÅÔ¡£
sidecar£ºÒ»ÖÖµ¥½Úµã¡¢¶àÈÝÆ÷µÄÓ¦ÓÃÉè¼ÆÐÎʽ¡£sidecarÖ÷ÕÅÒÔ¶îÍâµÄÈÝÆ÷À´À©Õ¹»òÔöÇ¿Ö÷ÈÝÆ÷£¬¶øÕâ¸ö¶îÍâµÄÈÝÆ÷±»³ÆÎªsidecarÈÝÆ÷¡£
Istio»ù±¾¸ÅÄî
IstioÊÇÓÉGoogle¡¢IBM¡¢LyftÁªºÏ¿ª·¢µÄ¿ªÔ´ÏîÄ¿£¬2017Äê5Ô·¢²¼µÚÒ»¸örelease
0.1.0£¬ ËüÊÇÒ»¸öÍêÈ«¿ªÔ´µÄ·þÎñÍø¸ñ£¬¿ÉÒÔ͸Ã÷µÄ·Ö²ãµ½ÏÖÓеķֲ¼Ê½Ó¦ÓÃÖУ¬ËüÒ²ÊÇÒ»¸öƽ̨£¬°üÀ¨ÔÊÐíËü¼¯³Éµ½ÈκÎÈÕÖ¾¼Ç¼ƽ̨£¬Ò£²â»ò²ßÂÔϵͳµÄAPI¡£Istio
¶àÑù»¯¹¦Äܼ¯Äܹ»¸ßЧµÄÔËÐÐÔÚ·Ö²¼Ê½Î¢·þÎñ¼Ü¹¹ÖУ¬²¢Í¬Ê±Ìṩ±£»¤¡¢Á¬½ÓºÍ¼à¿ØÎ¢·þÎñµÈ·½·¨¡£
Istio»ù±¾¼Ü¹¹
ÓÉͼ2¿ÉÖª£¬Istio¼Ü¹¹ÔÚÍø¸ñÂß¼ÉÏÖ÷Òª·ÖΪ¿ØÖÆÆ½Ã棨Control Plane API£©ºÍÊý¾ÝÆ½Ãæ£¨Data
Plane£©¡£
¿ØÖÆÆ½Ã棺¸ºÔð¹ÜÀíºÍÅäÖôúÀíÀ´Â·ÓÉÁ÷Á¿¡£Ö÷Òª·ÖΪÈý¸ö×é¼þPilot¡¢Mixer¡¢Citadel£¬ÓÉÓÚÆª·ùÓÐÏÞ£¬´Ë´¦¶Ô¸ÅÄî½øÐмòµ¥½éÉÜ£º
Pilot£ºÎªEnvoy sidecarÌṩ·þÎñ·¢ÏÖ¹¦ÄÜ£¬ÎªÖÇÄÜ·Óɺ͵¯ÐÔÌṩ¹ÜÀí¹¦ÄÜ£¬Ëü½«¿ØÖÆÁ÷Á¿ÐÐΪµÄ¸ß¼¶Â·ÓÉת»¯ÎªÌض¨ÓÚEnvoyµÄÅäÖ㬲¢ÔÚÔËÐÐʱ½«ËüÃÇ´«²¥µ½sidecar¡£
Mixer£º¶ÀÁ¢ÓÚÆ½Ì¨£¬¸ºÔðÔÚService MeshÉÏÖ´ÐзÃÎÊ¿ØÖƺÍʹÓòßÂÔ£¬²¢´ÓEnvoy´úÀíºÍÆäËü·þÎñÖÐÊÕ¼¯Ò£²âÊý¾Ý¡£
Citadel£ºÍ¨¹ýÄÚÖÃÉí·ÝºÍƾ֤¹ÜÀíÒÔÌṩ·þÎñÓë·þÎñ¼äµÄÉí·ÝÑéÖ¤²¢ÇÒ¿ÉÒÔÉý¼¶Service
MeshÖÐδ¼ÓÃܵÄÁ÷Á¿¡£
Êý¾ÝÆ½Ãæ£ºÓÉÒ»×éÒÔsidecar·½Ê½²¿ÊðµÄÖÇÄÜ´úÀí×é³É£¬ÕâЩ´úÀí¿ÉÒÔµ÷½ÚºÍ¿ØÖÆÎ¢·þÎñ¼°MixerÖ®¼äËùÓеÄÍøÂçͨÐÅ¡£IstioĬÈÏʹÓÃEnvoy×öÖÇÄÜ´úÀí£¬µ±È»Ò²Ö§³ÖÆäËü´úÀí£¬ÀýÈçLinkerd¡¢NginmeshµÈ¡£
Envoy£ºC++¿ª·¢µÄ¸ßÐÔÄÜ´úÀí£¬ÓÃÓÚµ÷½âService MeshÖÐËùÓеÄÈëÕ¾ºÍ³öÕ¾Á÷Á¿¡£Envoyº¬ÓÐÐí¶àµÄÄÚÖù¦ÄÜ£º¶¯Ì¬·þÎñ·¢ÏÖ¡¢¸ºÔؾùºâ¡¢ÈÛ¶ÏÆ÷¡¢½¡¿µ¼ì²é¡¢HTTP/2ºÍgRPC´úÀíµÈ¡£EnvoyÔÚIstioÖб»²¿ÊðΪsidecar£¬ºÍ¶ÔÓ¦µÄ΢·þÎñÔÚͬһ¸öKubernetes
PodÖУ¬Istio½«Æä¹¦ÄÜÌí¼Óµ½sidecarÖÐÀ´¶Ô΢·þÎñ½øÐйÜÀí¶øÎÞÐè¸ü¸Ä΢·þÎñÓ¦ÓôúÂ룬Æðµ½Ò»¸öÎÞÇÖÈëʽµÄ×÷Óá£
¶þ¡¢ÎªÊ²Ã´ÒªÊ¹ÓÃIstio£¿
Ëæ×Å΢·þÎñ¹æÄ£µÄÔö³¤£¬Æä¸´ÔÓÐÔÒ²Ô½À´Ô½¸ß£¬ÆäÖÐÃæÁÙÐí¶àÐèÇó£¬ÀýÈç·þÎñ·¢ÏÖ¡¢¹ÊÕϻָ´¡¢¼à¿Ø¡¢¸ºÔؾùºâ¡¢ÏÞÁ÷¡¢·ÃÎÊ¿ØÖƵȣ¬IstioÌṩÁËÒ»Ì廯µÄ·½°¸£¬Í¨¹ýΪÕû¸öService
MeshÌṩ¹ÜÀíÀ´Âú×ã΢·þÎñÓ¦ÓÃÖи´Ôӱ任µÄÐèÇ󣬯äÖÐÌṩÁËÐí¶à·Ç³£¹Ø¼üµÄÐèÇó£º
Á÷Á¿¹ÜÀí£º¿ØÖÆ·þÎñÖ®¼äÁ÷Á¿ºÍAPIµ÷Óã¬Ê¹µÃµ÷Óøü¿É¿¿¡£
¿É¹Û²ìÐÔ£ºÁ˽â·þÎñÖ®¼äÒÀÀµ¹ØÏµ£¬ÒÔ¼°ËüÃÇÖ®¼äÁ÷Á¿µÄ±¾ÖʺÍÁ÷Ïò¡£
²ßÂÔÖ´ÐУº²ßÂÔÓ¦ÓÃÓÚ΢·þÎñÖ®¼ä»¥¶¯£¬È·±£·ÃÎʲßÂÔµÃÒÔÖ´ÐУ¨Ö´ÐÐÊÇͨ¹ýÅäÖÃÍø¸ñ¶ø²»ÊÇÐ޸ijÌÐò´úÂ룩¡£
·þÎñÉí·Ý°²È«£ºÎªÍø¸ñÖеķþÎñÌṩ¿É¿¿Éí·ÝÑéÖ¤£¬²¢Ìṩ±£»¤Á÷Á¿µÄÄÜÁ¦¡£
Èý¡¢ÊÔÓÃIstio
Istioʵ¼ùÖ÷Òª·ÖΪÈý²½£¬µÚÒ»²½ÏÂÔØ²¢²¿ÊðIstio£»µÚ¶þ²½²¿ÊðBookinfo΢·þÎñ£»µÚÈý²½Í¨¹ýÖ¸¶¨yamlÎļþ²âÊÔIstioµÄ¹¦ÄÜÌØÐÔ¡£
Ö÷ÒªÅäÖû·¾³ÈçÏ£º
²Ù×÷ϵͳ£ºUbuntu 16.04
Kubernetes¶ÔÓ¦°æ±¾£º

ͼ3
Kubernetes¹¤¾ß°æ±¾
Kubernetes¼¯ÈºÎª£º
ͼ4 Kubernetes½ÚµãÐÅÏ¢
µÚÒ»²½ °²×°Istio
ÔÚÖÕ¶ËÊ×ÏÈ»ñÈ¡×îеÄIstio°²×°°ü£º
curl -L https://git.io/getLatestIstio
| sh - |
½øÈë°²×°°üĿ¼ºó½øÈëinstall/kubernetes/Ŀ¼°²×°KubernetesËùÐèyamlÎļþ£¬Èçͼ5Ëùʾ£º
ͼ5 Istio°²×°°ü
ʹÓÃkubectlÔËÐÐistio-demo.yamlÎļþ£¨ÓÐËÄÖÖ·½Ê½°²×°£¬¶ÔÓ¦Óв»Í¬µÄyamlÎļþ£¬´Ë´¦Ñ¡ÔñĬÈϲ»ÆôÓÃTLSÉí·ÝÑéÖ¤µÄ°²×°·½Ê½£¬ÆôÓÃTLS°²×°·½Ê½µÄyamlÎļþΪistio-demo-auth.yaml£©£¬°²×°¹ý³ÌÈçͼ6Ëùʾ£º
kubectl create
¨Cf istio-demo.yaml |
ͼ6 Istio°²×°¹ý³Ì
ÏÔʾÒѰ²×°³É¹¦£¨ÓÉÓÚ°²×°ÄÚÈݽ϶ֻ࣬½ØÍ¼ÁËÆäÖÐÒ»²¿·Ö£©£¬Ö®ºó²é¿´ÒѲ¿ÊðµÄIstio PodÔËÐÐ×´¿ö£º
kubectl get po
-o wide --all-namespaces |
ͼ7 IstioÖÐÔËÐеÄPod
ÓÉͼ7¿ÉÒÔ¿´³öKubernetesÖÐÃüÃû¿Õ¼äΪistio-systemµÄPod£¬ÆäÖаüº¬Ðí¶à×é¼þ£¬ÈçÓÃÓÚ¼à¿ØµÄGrafana¡¢Prometheus£¬ÓÃÓÚ·þÎñ²é¿´µÄServiceGraph£¬ÒÔ¼°Istio×é¼þcitadel¡¢mixer¡¢pilotµÈ¡£
¿ÉÒÔÔٲ鿴Istio°²×°°üÖа²×°µÄservice£¬ÆäÖÐPORTSÀ¸¿ÉÒԲ鿴·þÎñ¶ÔÍⱩ¶µÄ¶Ë¿ÚºÅ£¬ÒÔ±ãÔÚÍⲿ·ÃÎÊ£¬Èçͼ8Ëùʾ£º
kubectl get svc
-n istio-system |
ͼ8 IstioÖÐÔËÐеÄservice
ΪÁËʹÓÃIstioµÄÃüÁîÐй¤¾ßistioctl£¬ÐèÒªÖ¸¶¨»·¾³±äÁ¿ÒÔ±ãºóÆÚʹÓãº
export PATH=/home/xxxx/istio-1.0.0/bin:$PATH
|
ÏÂÃæ¿ÉÒÔ¼òµ¥¿´¿´istioctlµÄÃüÁîʹÓã¬Èçͼ9Ëùʾ£º
ͼ9 istioctl»ù±¾ÃüÁî
µÚ¶þ²½ ²¿ÊðBookinfo΢·þÎñ
BookinfoÊÇIstioÌṩµÄÒ»¸öÑùÀýÓ¦Óã¬ËüÓÉËĸöµ¥¶ÀµÄ΢·þÎñ¹¹³É£¬ÓÃÀ´ÑÝʾ¶àÖÖ Istio
ÌØÐÔ£º
productpage£ºproductpage΢·þÎñ»áµ÷ÓÃdetailsºÍreviewsÁ½¸ö΢·þÎñ£¬ÓÃÀ´Éú³ÉÒ³Ãæ¡£
details£º´Ë΢·þÎñ°üº¬Êé¼®µÄÐÅÏ¢¡£
reviews£º´Ë΢·þÎñ°üº¬Êé¼®µÄÏà¹ØÆÀÂÛ£¬Ëü»áµ÷ÓÃratings΢·þÎñ¡£
ratings£º´Ë΢·þÎñ°üº¬Êé¼®ÆÀ¼ÛµÄÆÀ¼¶ÐÅÏ¢¡£
ÆäÖÐreviews΢·þÎñ°üº¬Èý¸ö°æ±¾£º
v1°æ±¾²»»áµ÷ÓÃratings΢·þÎñ¡£
v2°æ±¾µ÷ÓÃratings²¢Ê¹ÓÃ5¸öºÚÉ«ÐÇÐÍͼ±êÏÔʾÆÀ·ÖÐÅÏ¢¡£
v3°æ±¾µ÷ÓÃratings²¢Ê¹ÓÃ5¸öºìÉ«ÐÇÐÍͼ±êÏÔʾÆÀ·ÖÐÅÏ¢¡£
ͼ10 Bookinfo¼Ü¹¹Í¼
ÆäÖÐËùÓеÄ΢·þÎñ¶¼ºÍEnvoy sidecar¼¯³ÉÔÚÒ»Æð£¬ËùÓзþÎñµÄ³öÈëÁ÷Á¿¶¼±»Envoy½Ù³Ö£¬ÕâÑùIstioµÄ¿ØÖÆÆ½Ãæ¾Í¿ÉÒÔΪӦÓÃÌṩ·þÎñ·ÓÉ¡¢Ò£²âÊý¾ÝÊÕ¼¯ÒÔ¼°²ßÂÔʵʩµÈÄÚÈÝ¡£
ÓÉÓÚ֮ǰÒѾÏÂÔØÁËbookinfoÏà¹ØyamlÎļþ£¬ËùÒÔÖ±½ÓÖ´ÐоͺÃÁË£¬Èçͼ11¡¢12Ëùʾ£º
kubectl create
¨Cf bookinfo.yaml
kubectl create ¨Cf bookinfo-gateway.yaml |
ͼ11 ÔËÐÐBookinfo
ͼ12 ÔËÐÐbookinfo-gateway
²é¿´KubernetesÖÐBookinfoÓ¦ÓÃÔËÐÐ×´¿ö£¬Èçͼ13Ëùʾ£º
ͼ13 BookinfoÔËÐеÄPod
²é¿´BookinfoÖÐservice²¿ÊðÇé¿ö£¬Èçͼ14Ëùʾ£º
ͼ14 BookinfoÔËÐеÄservice
ÖÁ´ËBookinfoÓ¦ÓÃÒѲ¿ÊðÍê±Ï£¬ÄÇôÈçºÎ·ÃÎÊBookinfoÖеÄ΢·þÎñÄØ£¿Í¨¹ýÇ°ÃæËù½²¿ÉÖªBookinfoÓжÔÓ¦µÄWeb΢·þÎñproductpage£¬¿ÉÒÔͨ¹ýÒÔÏ·½Ê½·ÃÎÊ£º
Ê×ÏÈÈ·¶¨IngressµÄIPºÍ¶Ë¿Ú£º
port£º
export INGRESS_PORT=$(kubectl
-n istio-system get service istio-ingressgateway
-o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
|
secure port£º
export SECURE_INGRESS_PORT=$(kubectl
-n istio-system get service istio-ingressgateway
-o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
|
host£º
export INGRESS_HOST=$(kubectl
get po -l istio=ingressgateway -n istio-system
-o 'jsonpath={.items[0].status.hostIP}') |
GATEWAY_URL£º
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
|
¾ßÌå²Ù×÷Èçͼ15Ëùʾ£¬¿ÉÖªÍø¹ØÈë¿ÚΪ20.0.0.13:31380¡£
ͼ15 ÅäÖÃIngressµØÖ·
²âÊÔBookinfoÓ¦ÓõÄÔËÐÐÇé¿ö£¬·µ»Ø200ΪÕý³££¬Èçͼ16Ëùʾ£º
curl -o /dev/null
-s -w "%{http_code}\n" http://${GATEWAY_URL}/productpage
|
ͼ16 ²âÊÔBookinfoÔËÐÐÇé¿ö
ÔÚChromeä¯ÀÀÆ÷ÖÐÊäÈ룬Èçͼ17Ëùʾ£ºhttp://192.168.19.13:31380/productpage¡£
ͼ17 BookinfoÓ¦ÓÃWeb½çÃæ
ÉÏͼ¿ÉÒÔ¿´³öBookinfoÓ¦ÓÃÓÉ4¸ö΢·þÎñ×é³É£¬¼´web΢·þÎñÒ³Ãæproductpage¡¢Ò³Ãæ×ó±ß²¿·ÖΪBook
Details·þÎñ£¬Óұ߲¿·ÖΪBook Reviews·þÎñ£¬ reviews·þÎñĿǰΪv1״̬¼´ÎÞÐǼ¶ÆÀ·Ö¡£ÓÉÓÚδÉèÖÃÇëÇó·ÓÉ£¬¶àË¢ÐÂÒ³Ãæ¼¸´Î£¬ÇëÇó·ÓÉÁ÷Á¿»áËæ»úµÄÔÚreviews·þÎñv1¡¢v2¡¢v3ÖÐÇл»¡£
µÚÈý²½£ºÑéÖ¤Istio¹¦ÄÜ
ÇëÇó·ÓÉ
´ËÑùÀý»á°ÑBookinfoÓ¦ÓõĽøÈëÁ÷Á¿µ¼Ïòreviews·þÎñµÄv1°æ±¾£¬ÅäÖÃyamlÎļþÈçͼ18Ëùʾ£º
ͼ18 route-rule-all-v1.yamlÎļþ²¿·ÖÄÚÈÝ
ÖÕ¶ËÖ´ÐÐÒÔÏÂÃüÁÈçͼ19Ëùʾ£º
kubectl apply
-f route-rule-all-v1.yaml |
ͼ19 route-rule-all-v1.yamlÎļþÖ´Ðйý³Ì
´Ëʱ¶à´ÎË¢ÐÂÒ³Ãæ¾Í»á·¢ÏÖÿ´ÎË¢ÐÂreviews·þÎñʼÖÕΪv1°æ±¾¡£
Èç¹ûÏë¿´¾ßÌåµÄvirtualservicesºÍdestinationrules¿ÉÒÔͨ¹ýÃüÁî²é¿´£º
kubectl get virtualservices
-o yaml
kubectl get destinationrules -o yaml |
ÇëÇóÒ²¿ÉÒÔ»ùÓÚÓû§Éí·Ýȥ·ÓÉ£¬±ÈÈç¡°xx¡±µÇ¼¾ÍÊÇreviews·þÎñµÄv1°æ±¾£¬ÆäËüÓû§µÇ¼ÔòΪv2°æ±¾¡£
¹ÊÕÏ×¢Èë
´ËÑùÀý»áʹÓÃIstio²âÊÔBookinfoÓ¦Óõĵ¯ÐÔ£¬¾ßÌ巽ʽΪµ±Óû§jasonµÇ¼ʱÔÚreviews:v2ºÍratingsÖ®¼ä½øÐÐÑÓ³Ù×¢Èë¡£´ËÑùÀý¶ÔÓ¦yamlÎļþÈçͼ20Ëùʾ£º
ͼ20 route-rule-ratings-test-delay.yamlÎļþÄÚÈÝ
ÖÕ¶ËÖ´ÐÐÒÔÏÂÃüÁÈçͼ21Ëùʾ£º
kubectl replace
-f route-rule-ratings-test-delay.yaml |
ͼ21 route-rule-ratings-test-delay.yamlÎļþÖ´Ðйý³Ì
´ËʱÓÃjasonÕ˺ŵǼ¾Í»á·¢ÏÖÿ´ÎÇëÇó·Óɵ½reviews΢·þÎñ¶¼Òª6Ãë×óÓÒ£¬¿ÉÒÔ´ò¿ªchromeä¯ÀÀÆ÷¿ª·¢Õß¹¤¾ß²é¿´£¬²¢ÇÒreviews²¿·ÖÏÔʾ´íÎóÏûÏ¢£¬Èçͼ22Ëùʾ£º
ͼ22 ¹ÊÕÏ×¢ÈëÒ³ÃæÕ¹Ê¾
Á÷Á¿Ç¨ÒÆ
´ËÑùÀý»áʹÓÃIstio½«ËùÓÐÓû§µÄÁ÷Á¿°´ÕÕÈ¨ÖØ½øÐÐ×ªÒÆ£¬´ËÑùÀý¶ÔÓ¦µÄyamlÎļþÈçͼ23Ëùʾ£º
ͼ23 route-rule-reviews-50-v3.yamlÎļþÄÚÈÝ
ÓÉÉÏͼ¿ÉÖªµ±ÓÐÁ÷Á¿½øÈëʱ£¬°Ù·ÖÖ®ÎåÊ®Á÷Á¿Ç¨ÒƵ½reviews v1£¬ÁíÍâ°Ù·ÖÖ®ÎåÊ®Á÷Á¿Ç¨ÒƵ½reviews
v3£¬ÖÕ¶ËÖ´ÐÐÒÔÏÂÃüÁÈçͼ21Ëùʾ£º
kubectl replace
-f route-rule-reviews-50-v3.yaml |
´ËʱˢÐÂÒ³Ãæ¾Í»á¿´µ½ÓÐÒ»°ëµÄ¸ÅÂÊÊÇreviews v3£¨ºìÉ«ÐÇ£©£¬Ò»°ë¸ÅÂÊÊÇreviews v1£¨ÎÞÆÀÐÇ£©¡£
É趨ÇëÇó³¬Ê±
´ËÑùÀýÊ×ÏȽ«Á÷Á¿È«²¿µ¼Èëreviews v2·þÎñ£¬ÔÙ¸øratings·þÎñÔö¼Ó2ÃëÑÓ³Ù£¬×îºóΪreviews·þÎñµ÷ÓÃÌí¼Ó0.5ÃëÇëÇó³¬Ê±£¬Ë³ÐòÈçͼ24-29Ëùʾ£º
ͼ24 Á÷Á¿µ¼Èëreviews v2
ͼ25 productpageÒ³ÃæÏÔʾreviews v2
ͼ26 ratings·þÎñÌí¼Ó2ÃëÑÓ³Ù
ͼ27 ratings·þÎñÌí¼ÓÑÓ³ÙWebÒ³ÃæÐ§¹û
ͼ28 reviews·þÎñÌí¼Ó0.5ÃëÇëÇó³¬Ê±
ͼ29 reviews·þÎñ¼Ó³¬Ê±WebÒ³ÃæÐ§¹û
×îÖÕË¢ÐÂÒ³ÃæÓÉͼ29ÏÔʾ£¬¿´µ½·µ»ØÊ±¼äΪ1Ãë×óÓÒ²¢ÇÒÆÀÂÛ²»¿ÉÓã¬ÕâÊÇÎªÊ²Ã´ÄØ?´ð°¸ÊÇproductpage·þÎñÓÐÓ²±àÂëÖØÊÔ£¬Òò´ËÔÚÒ³ÃæË¢ÐÂʱ£¬ÇëÇó·µ»ØÖ®Ç°ÐèÒªµ÷Óó¬Ê±reviews·þÎñÁ½´Î£¬Ã¿´ÎΪ0.5Ãë×óÓÒ£¬Á½´Î¾ÍΪ1Ãë×óÓÒÁË¡£
´ó¼ÒÏëÏóÏ£¬µ±Î¢·þÎñµÄÊýÁ¿Ôö¶àʱ£¬ÔËάÈËÔ±¸ù¾ÝÐèÇóÐèÒª¶Ô²¿·Ö΢·þÎñ½øÐÐA/B²âÊÔ£¬½ð˿ȸ·¢²¼»òÊÇÏÞÁ÷¡¢Á÷Á¿·ÖƬµÈ²Ù×÷£¬ÕâÎÞÒÉÔö¼ÓÁËÔËάÈËÔ±µÄ¹ÜÀí¸´ÔÓ¶È£¬Istio¿¼Âǵķdz£ÖÜÈ«£¬ÔÚ°²×°°üÖи½¼ÓÁË¼à¿Ø¡¢¸ú×ÙµÈ×é¼þ£¬ÒÔÏ·ֱðչʾ£º
Trace£º
ͼ30 BookinfoÓ¦Ó÷ֲ¼Ê½×·×ÙÒ³Ãæ
ͼ31 BookinfoÓ¦Ó÷ֲ¼Ê½×·×ÙÏêÏ¸Ò³Ãæ
Prometheus£º
ͼ32 IstioÇëÇó×ÜÊý
Service Graph£º
ͼ33 BookinfoÓ¦ÓÃserviceͼ±í
Grafana£º
ͼ34 Grafana¼à¿ØWebÒ³Ãæ
Istio»¹ÓÐÐí¶à¹¦ÄÜÌØÐÔÀýÈçÈÛ¶Ï»úÖÆ£¬¿ØÖÆIngressÁ÷Á¿µÈ£¬ÔÚ´ËÓÉÓÚÆª·ùÏÞÖÆ²»¶à×öÃèÊö£¬´ó¼Ò¸ÐÐËȤµÄ»°¿ÉÒÔÈ¥¹ÙÍø²é¿´https://istio.io/docs/tasks/¡£
ͼ35 IstioµÄ°²È«¼Ü¹¹
ËÄ¡¢×ܽá
ͨ¹ýÒÔÉ϶ÔIstioµÄʵ¼ù´ó¼Ò²»ÄÑ¿´³öIstioÏà±ÈÓÚSpring CloudµÄ¼¸¸öÓŵ㡣Ê×ÏÈÏà±ÈÓÚSpring
Cloudѧϰ×é¼þÄÚÈݶ࣬Ãż÷¸ßµÄÍ´µã£¬IstioÊǷdz£ÈÝÒ×ÉÏÊֵģ¬Ö»ÐèÔÚKubernetesƽ̨ÉÏÅÜÒ»¸öyamlÎļþ¼´¿ÉÍê³É²¿Êð£»ÔÙÕßÏà±ÈÓÚSpring
CloudÐèÒª°ÑÈÏÖ¤ÊÚȨ¡¢·Ö²¼Ê½×·×Ù¡¢¼à¿ØµÈÕâЩ¸ß¼¶¹¦ÄܼÓÈëµ½Ó¦ÓóÌÐòÄÚ²¿µ¼ÖÂÁËÓ¦Óñ¾Éí¸´ÔӶȵÄÍ´µã£¬·´¹ÛIstioÊǺÜÇáÁ¿¼¶µÄ£¬Ëü½«ÒÔÉÏÄÇЩ¸ß¼¶¹¦ÄÜ×÷Ϊ×é¼þÄÚÖÃÔÚIstioÖУ¬´Ó¶ø´ïµ½Á˶ÔÓ¦ÓóÌÐòµÄÎÞÇÖÈëÐÔ£¬Ö»ÐèÒªÅäÖÃÏàÓ¦µÄyamlÎļþ²¢Ï·¢ÖÁIstio¿ØÖÆÆ½ÃæÖ´ÐкóÐøµÄ²Ù×÷¼´¿É£¬²Ù×÷¹ý³ÌÓû§ÊÇÎÞ¸ÐÖªµÄ£»×îºóÏà±ÈÓÚSpring
Cloud¶ÔJava»·¾³µÄ¹ý¶ÈÒÀÀµÒÔ¼°¿çÓïÑÔÍ´µã£¬IstioÒ²ÍêÃÀµÄ½â¾öÁË£¬ÆäÖ§³Ö¶àÖÖÓïÑÔ£¬°üÀ¨ÐÂÐ˱à³ÌÓïÑÔGolang¡¢Rust¡¢Node.js¡¢RÓïÑԵȡ£
ËäȻĿǰIstioÔÚÉçÇøÓÐÖÚ¶àµÄÖ§³ÖÕߣ¬µ«´ÓµÚÒ»¸ö°æ±¾µ½ÏÖÔÚÖ»Óв»µ½ Ò»Äê°ëµÄʱ¼ä£¬Ä¿Ç°Istio¹úÄÚÉú²úÂ䵨µÄ¹«Ë¾»¹Ïà¶Ô½ÏÉÙ£¬»ªÎªµÄCES
Mesher¡¢ÐÂÀË΢²©µÄMotan¡¢Î¨Æ·»áµÄOSPµÈ¶¼ÒѾÔÚʹÓ㬰¢ÀïÔÆºÍÌÚÑ¶ÔÆµÄ³ÖÐø¸ú½øÏàÐÅÒ²²»Ô¶ÁË£¬
IstioµÄδÀ´Ò»Æ¬¹âÃ÷£¬ÈÃÎÒÃǹ²Í¬ÆÚ´ý¡£ |