皮皮网

【antddesign源码解析】【ddx趋势图源码】【黄色会员app源码】jaeger源码

2024-11-20 01:28:18 来源:源码网站模板

1.OpenTelemetry、Spring Cloud Sleuth、Kafka、Jager实现分布式跟踪
2.初探 OpenTelemetry
3.Istio入门:什么是源码Istio?Istio的4个主要功能和实现原理

jaeger源码

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之后的璀璨明星,是源码一个开放源代码、无缝融入分布式应用的源码全能服务网格解决方案。它的源码核心目标是提供统一的微服务治理,包括流量管理、源码访问策略和实时数据洞察,源码antddesign源码解析同时保持对业务代码的源码零侵入性。Istio架构巧妙地划分为数据平面和控制平面,源码确保高效和灵活的源码部署。

       数据平面:Envoy的源码超级力量

       Envoy,作为Istio的源码7层代理,是源码数据平面的中坚力量,它在Kubernetes环境中掌管着容器间的源码通信和实时监控。Pilot,源码作为流量管理的源码ddx趋势图源码核心组件,负责配置Envoy并构建一个强大的服务发现机制,确保服务的透明度和可扩展性。

       控制平面:策略执行者

       Pilot负责服务发现的策略和配置转换,它通过Rules API为运维人员提供一个灵活的规则配置平台,同时通过Envoy API将策略精准地传递给每个代理。Mixer则扮演着策略控制和遥测数据收集的角色,通过插件模型扩展其功能,黄色会员app源码确保系统的精细化管理。

       安全守护者:Citadel和Galley

       Citadel负责密钥和证书的管理,为服务间通信提供身份验证和流量加密。Galley作为1.1版本后独立的配置管理组件,通过MCP协议确保配置的高效分发和处理。

       四大功能,一网打尽

流量治理大师: 通过Pilot和Envoy的上海到泰州源码协同工作,实现灵活的路由策略和故障测试,确保服务的稳定性和可恢复性。

智能路由大师: 服务版本标签的巧妙应用,支持如金丝雀发布等高级场景,实现流量的精准控制。

       其他组件各自发挥其独特作用,共同构建出强大的邢台里承德源码微服务治理体系。

       在实际部署中,Istio通过Envoy代理精确地控制流量,网关入口和出口由它来确保流量的精确引导和故障处理。通过故障注入测试,Istio确保系统的稳健性,模拟延迟和中断以提升系统的弹性。

       策略控制和遥测监控是Mixer的拿手好戏,它通过Kubernetes的RBAC进行权限管理和请求验证。而可视化工具,如Prometheus、Jaeger和Kibana,让监控和追踪变得触手可及。

       Istio的安全架构由Citadel、Pilot、Envoy和Mixer紧密协作,共同构建一个无缝且安全的网络环境,支持服务到服务的传输认证和终端用户认证。

       总的来说,Istio的架构设计巧妙地整合了流量管理、安全和监控,为微服务的稳定运行提供了强大的保障。在《Istio实战指南》中,你将深入了解其安装、配置和实战应用,无论你是Kubernetes的老手还是新手,都能在此找到适合你的学习路径。现在,就让我们一起踏上Istio的探索之旅吧!