跳到主要内容

SkyWalking 源码分析 Collector Streaming Computing 流式处理(一)

1. 概述

本文主要分享 Collector Streaming 流式处理。主要包含如下部分:

  • apm-collector-core 模块的 graph 包,提供最精简单节点的流式处理的封装。如下图所示:

![ ][nbsp]

  • apm-collector-stream 模块,在 graph 包的基础上,提供异步跨节点等等的流式处理的封装。如下图所示:

![ ][nbsp 1]

> 免打脸大保健:笔者对流式处理非常不了解,本文可能是一本正经的胡说八道。考虑到笔者是靠脸吃饭(颜值我只服我红雷哥),所以读者老爷请爱护下笔者。

Collector Streaming 在 SkyWalking 架构图处于如下位置( 红框 ) :

> FROM [https://github.com/apache/incubating-skywalking][https_github.com_apache_incubating-skywalking] > > ![ ][nbsp 2]

OK,下面来一本正经的代码走起!

2. apm-collector-core/graph

整体类图如下:

![ ][nbsp 3]

看起来略复杂,不要方,我们先来看一个流式大数据处理框架 Apache Storm 的说明:

> FROM [《流式大数据处理的三种框架:Storm,Spark和Samza》][Storm_Spark_Samza]
> 在[Storm][] 中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(master node)分发代码,将任务分配给工作节点(worker node)执行。

  • Graph :定义了一个数据各个 Node 的处理拓扑图。
  • WayToNode :提交数据给 Node 的方式
  • Node :节点,包含一个 NodeProcessor 和 一个 Next 。
  • NodeProcessor :Node 处理器,处理数据
  • Next :包含 WayToNode 数组,即 Node 提交数据给 Next 的 Node 数组方式