1.OpenTelemetryãSpring Cloud SleuthãKafkaãJagerå®ç°åå¸å¼è·è¸ª
2.初探 OpenTelemetry
3.Istio入门:什么是源码Istio?Istio的4个主要功能和实现原理
OpenTelemetryãSpring Cloud SleuthãKafkaãJagerå®ç°åå¸å¼è·è¸ª
åå¸å¼è·è¸ªå¯è®©æ¨æ·±å ¥äºè§£ç¹å®æå¡å¨åå¸å¼è½¯ä»¶ç³»ç»ä¸ä½ä¸ºæ´ä½çä¸é¨åæ¯å¦ä½æ§è¡çãå®è·è¸ªåè®°å½ä»èµ·ç¹å°ç®çå°ç请æ±ä»¥åå®ä»¬ç»è¿çç³»ç»ãå¨æ¬æä¸ï¼æ们å°ä½¿ç¨ OpenTelemetryãSpring Cloud SleuthãKafka å Jaeger å¨ä¸ä¸ª Spring Boot å¾®æå¡ ä¸å®ç°åå¸å¼è·è¸ªã
æ们å æ¥ççåå¸å¼è¿½è¸ªä¸çä¸äºåºæ¬æ¯è¯ã
跨度ï¼è¡¨ç¤ºç³»ç»å çå个工ä½åå ã跨度å¯ä»¥ç¸äºåµå¥ä»¥æ¨¡æå·¥ä½çå解ãä¾å¦ï¼ä¸ä¸ªè·¨åº¦å¯è½æ£å¨è°ç¨ä¸ä¸ª REST 端ç¹ï¼ç¶åå¦ä¸ä¸ªå跨度å¯è½æ¯è¯¥ç«¯ç¹è°ç¨å¦ä¸ä¸ªï¼ççå¨ä¸åçæå¡ä¸ã
Traceï¼ææå ±äº«ç¸åæ ¹è·¨åº¦ç跨度éåï¼æè æ´ç®åå°è¯´ï¼å°ææ跨度å建为åå§è¯·æ±çç´æ¥ç»æã跨度çå±æ¬¡ç»æï¼æ¯ä¸ªè·¨åº¦å¨æ ¹è·¨åº¦æè¾¹é½æèªå·±çç¶è·¨åº¦ï¼å¯ç¨äºå½¢ææåæ ç¯å¾ï¼æ¾ç¤ºè¯·æ±å¨éè¿åç§ç»ä»¶æ¶çè·¯å¾ã
OpenTelemetry ï¼ä¹ç®ç§°ä¸º OTelï¼æ¯ä¸ä¸ªä¾åºåä¸ç«çå¼æº Observability æ¡æ¶ï¼ç¨äºæ£æµãçæãæ¶éå导åºé¥æµæ°æ®ï¼ä¾å¦ è·è¸ª ã ææ å æ¥å¿ ãä½ä¸º äºåç 计ç®åºéä¼ (CNCF) çåµå项ç®ï¼OTel æ¨å¨æä¾ä¸ä¾åºåæ å ³çç»ä¸åºå API éââ主è¦ç¨äºæ¶éæ°æ®å¹¶å°å ¶ä¼ è¾å°æå¤ãOTel æ£å¨æ为çæå管çé¥æµæ°æ®çä¸çæ åï¼å¹¶è¢«å¹¿æ³éç¨ã
Sleuth æ¯ä¸ä¸ªç± Spring Cloud å¢é管çåç»´æ¤ç项ç®ï¼æ¨å¨å°åå¸å¼è·è¸ªåè½éæå° Spring Boot åºç¨ç¨åºä¸ãå®ä½ä¸ºä¸ä¸ªå ¸åSpring Starterç . 以ä¸æ¯ä¸äºå¼ç®±å³ç¨ç Sleuth å·¥å ·ï¼
Sleuth æ·»å äºä¸ä¸ªæ¦æªå¨ï¼ä»¥ç¡®ä¿å¨è¯·æ±ä¸ä¼ éææè·è¸ªä¿¡æ¯ãæ¯æ¬¡è°ç¨æ¶ï¼é½ä¼å建ä¸ä¸ªæ°ç Spanãå®å¨æ¶å°ååºåå ³éã
Sleuth è½å¤è·è¸ªæ¨ç请æ±åæ¶æ¯ï¼ä»¥ä¾¿æ¨å¯ä»¥å°è¯¥éä¿¡ä¸ç¸åºçæ¥å¿æ¡ç®ç¸å ³èãæ¨è¿å¯ä»¥å°è·è¸ªä¿¡æ¯å¯¼åºå°å¤é¨ç³»ç»ä»¥å¯è§å延è¿ã
Jaeger æåç± Uber çå¢éæ建ï¼ç¶åäº å¹´å¼æºãå®äº 年被æ¥å为äºåçåµå项ç®ï¼å¹¶äº å¹´æ¯ä¸ãä½ä¸º CNCF çä¸é¨åï¼Jaeger æ¯äºåç æ¶æ ä¸å ¬è®¤ç项ç®ãå®çæºä»£ç 主è¦æ¯ç¨ Go ç¼åçãJaeger çæ¶æå æ¬ï¼
ä¸ Jaeger 类似ï¼Zipkin å¨å ¶æ¶æä¸ä¹æä¾äºç¸åçç»ä»¶éã尽管 Zipkin æ¯ä¸ä¸ªè¾èç项ç®ï¼ä½ Jaeger å ·ææ´ç°ä»£åå¯æ©å±ç设计ã对äºæ¤ç¤ºä¾ï¼æ们éæ© Jaeger ä½ä¸ºå端ã
让æ们设计ä¸ä¸ª Spring Boot å¾®æå¡ï¼
è¿ä¸ä¸ªå¾®æå¡æ¨å¨ï¼
è¿æ¯ä¸ºäºè§å¯ OpenTelemetry å¦ä½ç»å Spring Cloud Sleuth å¤ç代ç çèªå¨æ£æµä»¥åçæåä¼ è¾è·è¸ªæ°æ®ãä¸é¢çè线æè·äºå¾®æå¡å¯¼åºçè·è¸ªæ°æ®çè·¯å¾ï¼éè¿OTLPï¼OpenTelemetry Protocolï¼ä¼ è¾å°OpenTelemetry Collectorï¼æ¶éå¨ä¾æ¬¡å¤ç并å°è·è¸ªæ°æ®å¯¼åºå°å端Jaegerè¿è¡åå¨åæ¥è¯¢ã
ä½¿ç¨ monorepoï¼æ们ç项ç®ç»æå¦ä¸ï¼
第 1 æ¥ï¼æ·»å POM ä¾èµé¡¹
è¿æ¯ä½¿ç¨ OTel å Spring Cloud Sleuth å®ç°åå¸å¼è·è¸ªçå ³é®ãæ们çç®æ æ¯ä¸å¿ æå¨æ£æµæ们ç代ç ï¼å æ¤æ们ä¾é è¿äºä¾èµé¡¹æ¥å®æå®ä»¬è®¾è®¡çå·¥ä½ââèªå¨æ£æµæ们ç代ç ï¼é¤äºè·è¸ªå®ç°ãå°é¥æµæ°æ®å¯¼åºå° OTel æ¶éå¨çã
第 2 æ¥ï¼OpenTelemetry é ç½®
OpenTelemetry æ¶éå¨ç«¯ç¹
对äºæ¯ä¸ªå¾®æå¡ï¼æ们éè¦å¨å ¶ä¸æ·»å 以ä¸é ç½®application.ymlï¼è¯·åé ä¸é¢é¨åä¸ç示ä¾ç段ï¼ãspring.sleuth.otel.exporter.otlp.endpoint主è¦æ¯é ç½®OTel Collector端ç¹ãå®åè¯å¯¼åºå¨ï¼å¨æ们çä¾åä¸æ¯ Sleuthï¼éè¿ OTLP å°è·è¸ªæ°æ®åéå°æå®çæ¶éå¨ç«¯ç¹pose æå¡ã
è·è¸ªæ°æ®æ¦çæ½æ ·
spring.sleuth.otel.config.trace-id-ratio-basedå±æ§å®ä¹äºè·è¸ªæ°æ®çéæ ·æ¦çãå®æ ¹æ®æä¾ç»éæ ·å¨çåæ°å¯¹ä¸é¨å迹线è¿è¡éæ ·ãæ¦çæ½æ ·å 许 OpenTelemetry è·è¸ªç¨æ·éè¿ä½¿ç¨éæºæ½æ ·ææ¯éä½è·¨åº¦æ¶éææ¬ãå¦æ该æ¯çå°äº 1.0ï¼åæäºè¿¹çº¿å°ä¸ä¼è¢«å¯¼åºã对äºæ¤ç¤ºä¾ï¼æ们å°éæ ·é 置为 1.0ã%ã
æå ³å ¶ä» OTel Spring Cloud Sleuth å±æ§ï¼è¯·åé 常è§åºç¨ç¨åºå±æ§ã
OpenTelemetry é ç½®æ件
æ们éè¦é¡¹ç®æ ¹ç®å½ä¸ç OTel é ç½®æ件otel-config.yamlãå 容å¦ä¸ãæ¤é ç½®æ件å®ä¹äº OTel æ¥æ¶å¨ãå¤çå¨å导åºå¨çè¡ä¸ºãæ£å¦æ们æçå°çï¼æ们å®ä¹äºæ们çæ¥æ¶å¨æ¥çå¬ gRPC å HTTPï¼å¤çå¨ä½¿ç¨æ¹å¤çå导åºå¨ä½ä¸º jaeger åæ¥å¿è®°å½ã
第 3 æ¥ï¼docker-compose å°ææå 容串å¨ä¸èµ·
让æ们ççæ们éè¦å¯å¨åªäº docker 容å¨æ¥è¿è¡è¿ä¸ä¸ªå¾®æå¡å¹¶è§å¯å®ä»¬çåå¸å¼è·è¸ªï¼åä¸ä¸ªå¾®æå¡å¨ä¸é¢çé¨åä¸è¿è¡äºè§£éã
è¿è¡docker-compose up -d以è°åºææä¹ä¸ªå®¹å¨ï¼
第 4 æ¥ï¼è¿½è¸ªæ°æ®å¨è¡å¨
å¿«ä¹ä¹è·¯
ç°å¨ï¼è®©æ们å¯å¨customer-service-bffæµç¨çå ¥å£ç¹ï¼ä»¥å建æ°å®¢æ·ã
å¯å¨ Jaeger UIï¼ /?target=es之后的璀璨明星,是源码一个开放源代码、无缝融入分布式应用的源码全能服务网格解决方案。它的源码核心目标是提供统一的微服务治理,包括流量管理、源码访问策略和实时数据洞察,源码ar引擎源码同时保持对业务代码的源码零侵入性。Istio架构巧妙地划分为数据平面和控制平面,源码确保高效和灵活的源码部署。
数据平面:Envoy的源码超级力量 Envoy,作为Istio的源码7层代理,是源码数据平面的中坚力量,它在Kubernetes环境中掌管着容器间的源码通信和实时监控。Pilot,源码作为流量管理的源码moment软件源码核心组件,负责配置Envoy并构建一个强大的服务发现机制,确保服务的透明度和可扩展性。 控制平面:策略执行者 Pilot负责服务发现的策略和配置转换,它通过Rules API为运维人员提供一个灵活的规则配置平台,同时通过Envoy API将策略精准地传递给每个代理。Mixer则扮演着策略控制和遥测数据收集的角色,通过插件模型扩展其功能,javacsv 2.0源码确保系统的精细化管理。 安全守护者:Citadel和Galley Citadel负责密钥和证书的管理,为服务间通信提供身份验证和流量加密。Galley作为1.1版本后独立的配置管理组件,通过MCP协议确保配置的高效分发和处理。 四大功能,一网打尽流量治理大师: 通过Pilot和Envoy的表白源码花瓣协同工作,实现灵活的路由策略和故障测试,确保服务的稳定性和可恢复性。
智能路由大师: 服务版本标签的巧妙应用,支持如金丝雀发布等高级场景,实现流量的精准控制。
其他组件各自发挥其独特作用,共同构建出强大的充值vip源码微服务治理体系。 在实际部署中,Istio通过Envoy代理精确地控制流量,网关入口和出口由它来确保流量的精确引导和故障处理。通过故障注入测试,Istio确保系统的稳健性,模拟延迟和中断以提升系统的弹性。 策略控制和遥测监控是Mixer的拿手好戏,它通过Kubernetes的RBAC进行权限管理和请求验证。而可视化工具,如Prometheus、Jaeger和Kibana,让监控和追踪变得触手可及。 Istio的安全架构由Citadel、Pilot、Envoy和Mixer紧密协作,共同构建一个无缝且安全的网络环境,支持服务到服务的传输认证和终端用户认证。 总的来说,Istio的架构设计巧妙地整合了流量管理、安全和监控,为微服务的稳定运行提供了强大的保障。在《Istio实战指南》中,你将深入了解其安装、配置和实战应用,无论你是Kubernetes的老手还是新手,都能在此找到适合你的学习路径。现在,就让我们一起踏上Istio的探索之旅吧!