详解 Apache SkyWalking OAP 的分布式计算

简介: SkyWalking的OAP(Observability Analysis Platform,观测分析平台)是一个用于链路数据的分布式计算系统。因为它巧妙的设计,使得在链路数据计算和聚合过程中,不需要考虑数据的一致性,也没有事务、分布式锁等概念。在极端情况下,可能出现链路数据的丢失,但会最大限度保障OAP集群的可用性。咱们来看一下,它是如何设计的,为以后的系统设计和架构提供一些思路。

SkyWalking的OAP(Observability Analysis Platform,观测分析平台)是一个用于链路数据的分布式计算系统。

因为它巧妙的设计,使得在链路数据计算和聚合过程中,不需要考虑数据的一致性,也没有事务、分布式锁等概念。

在极端情况下,可能出现链路数据的丢失,但会最大限度保障OAP集群的可用性。咱们来看一下,它是如何设计的,为以后的系统设计和架构提供一些思路。

数据类型

在介绍分布式计算之前,咱们先了解一下需要计算的数据都有哪些类型:

  • Record数据,即明细数据,如Trace、访问日志等数据,由RecordStreamProcessor进行处理。
  • Metrisc数据,即指标数据,绝大部分的OAL指标都会生成这种数据,由MetricsStreamProcessor进行处理。
  • TopN数据,即周期性采样数据,如慢SQL的周期性采集,由TopNStreamProcessor进行处理。

分布式计算

像Trace、访问日志等这样的明细数据,数据量比较大,但是不需要归并处理,所以在OAP节点内部处理即可完成。明细数据采用缓存、异步批量处理和流式写入的方式写入到存储中。

绝大部分由OAL(Observability Analysis Language,观测分析语言)定义的指标数据是需要分布式聚合计算的,所以在OAP集群计算流中分成了两种步骤。

步骤一:接收和解析探针发送的数据,并进行当前OAP节点内的数据聚合,使用OAL或者其他聚合模式。如果是不需要分布式聚合的数据,直接写入到存储中;如果是需要分布式聚合的数据,根据一定的路由规则发送给指定的OAP节点。

步骤二:接收和解析经步骤一处理过的数据,然后进行二次聚合计算,并写入到存储中。

因为上面两个步骤极有可能不在同一个OAP节点上,所以OAP节点被分为Receiver(步骤一)和Aggregator(步骤二)两种角色。

为了减少部署难度,所有OAP节点在默认情况下都会使用Mixed角色(既可以进行步骤一的操作,也可以进行步骤二的操作)。在大规模部署的时候,可以根据网络流量进行角色分离的两级部署。

指标数据是计算资源消耗最大的分布式计算,也是整套分布式计算要支持的核心计算类型。在此计算过程中,使用哈希路由策略,根据计算的实体,如服务ID、端点ID等的哈希值来选择对应的OAP节点。

OAP节点之间的通信采用的是 gRPC stream 模式,传输过程中不包含业务字段名称,按照数据类型和字段定义顺序进行序列化,减少非数据字段的传输。

注:本文以SkyWalking的8.2.0版本为例进行介绍,如果版本不同会略有差异。
相关文章
|
5月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
770 5
|
5月前
|
存储 数据采集 监控
SkyWalking全景解析:从原理到实现的分布式追踪之旅
SkyWalking全景解析:从原理到实现的分布式追踪之旅
1174 1
|
4月前
|
监控 NoSQL 数据建模
使用Apache Cassandra进行分布式数据库管理的技术实践
【6月更文挑战第5天】本文探讨了使用Apache Cassandra进行分布式数据库管理的技术实践。Cassandra是一款高性能、可扩展的NoSQL数据库,适合大规模、高并发场景。文章介绍了其高可扩展性、高性能、高可用性和灵活数据模型等核心特性,并详细阐述了环境准备、安装配置、数据建模与查询以及性能优化与监控的步骤。通过本文,读者可掌握Cassandra的运用,适应不断增长的数据需求。
|
4月前
|
存储 分布式计算 Hadoop
使用Apache Hadoop进行分布式计算的技术详解
【6月更文挑战第4天】Apache Hadoop是一个分布式系统框架,应对大数据处理需求。它包括HDFS(分布式文件系统)和MapReduce编程模型。Hadoop架构由HDFS、YARN(资源管理器)、MapReduce及通用库组成。通过环境搭建、编写MapReduce程序,可实现分布式计算。例如,WordCount程序用于统计单词频率。优化HDFS和MapReduce性能,结合Hadoop生态系统工具,能提升整体效率。随着技术发展,Hadoop在大数据领域将持续发挥关键作用。
|
3月前
|
消息中间件 存储 Java
Apache Kafka是分布式消息系统,用于高吞吐量的发布订阅
【7月更文挑战第1天】Apache Kafka是分布式消息系统,用于高吞吐量的发布订阅。在Java中,开发者使用Kafka的客户端库创建生产者和消费者。生产者发送消息到主题,消费者订阅并消费。Kafka提供消息持久化、容灾机制,支持分区和复制以确保高可用性。通过优化如分区、批处理和消费者策略,可适应高并发场景。简单的Java示例展示了如何创建和交互消息。
55 0
|
5月前
|
缓存 监控 Java
Java一分钟之-Apache Geode:分布式内存数据平台
【5月更文挑战第21天】Apache Geode是低延迟的分布式内存数据平台,用于构建实时应用,提供缓存、数据库和消息传递功能。本文聚焦于Geode的常见问题,如数据一致性(数据同步延迟和分区冲突)和性能瓶颈(网络延迟和资源管理不当),并提出解决方案。确保数据一致性可通过选择合适的数据策略和利用`InterestPolicy`、`CacheListener`;提升性能则需优化网络和合理配置资源。通过示例代码展示了如何创建和操作Geode的Region。正确配置和调优Geode对于实现高可用、高性能应用至关重要。
112 1
|
5月前
|
数据采集 存储 运维
如何使用SkyWalking收集分析分布式系统的追踪数据
通过以上步骤,你可以使用 SkyWalking 工具实现对分布式系统的数据采集和可视化。SkyWalking 提供了强大的追踪和度量功能,帮助开发者和运维人员更好地理解系统的性能状况。欢迎关注威哥爱编程,一起学习成长。
143 0
|
5月前
|
存储 缓存 监控
Java一分钟之-Apache Ignite:分布式内存计算平台
【5月更文挑战第21天】Apache Ignite是一款开源的分布式内存计算平台,涉及内存数据网格、流处理和计算服务。本文关注其常见问题,如数据丢失、分区不均、内存管理和网络延迟。为保证数据一致性,建议使用适当的數據模式和备份策略,实现数据持久化。优化内存配置和监控网络可提升性能与稳定性。提供的Java代码示例展示了如何创建分区缓存并设置备份。正确配置和管理Ignite是构建高可用、高性能应用的关键,持续监控集群状态至关重要。
142 0
|
5月前
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
872 0
|
5月前
|
监控 安全 Apache
Apache ZooKeeper - 使用ZK实现分布式锁(非公平锁/公平锁/共享锁 )
Apache ZooKeeper - 使用ZK实现分布式锁(非公平锁/公平锁/共享锁 )
268 1

热门文章

最新文章

推荐镜像

更多