跳至主要内容
版本: 5.0

RocketMQ Streams 核心概念

领域模型

StreamBuilder

img_2.png

  • 一个 StreamBuilder 实例拥有 1 到 N 个管道,其中管道代表数据处理路径。
  • 一个管道可以包含 1 到 N 个处理节点,称为 GroupNodes。
  • 一个 StreamBuilder 实例还拥有一个 TopologyBuilder,它可以构建数据处理器。
  • 每个 JobId 对应一个 StreamBuilder 实例。

RocketMQStream

img_2.png

  • 一个 RocketMQStream 实例拥有一个 TopologyBuilder 用于构建拓扑。
  • 一个 RocketMQStream 实例可以实例化 1 到 N 个工作线程。
  • 每个线程由一个 WorkerThread 实例表示,包含一个引擎。
  • 一个引擎包含执行数据处理的所有逻辑,包括一个消费者实例、一个生产者实例和一个 StateStore 实例。

流处理实例

一个流处理实例代表一个运行 RocketMQ Streams 的进程;

  • 一个流处理实例包含一个 StreamBuilder、一个 RocketMQStream、一个拓扑和一个或多个管道。

StreamBuilder

  • StreamBuilder(jobId) 构建实例;
  • <OUT> RStream<OUT> source(topicName, deserializer) 定义源主题和反序列化方法;

RStream

  • <K> GroupedStream<K, T> keyBy(selectAction) 按特定字段对数据进行分组;
  • <O> RStream<O> map(mapperAction) 一对一地转换数据;
  • RStream<T> filter(predictor) 过滤数据
  • <VR> RStream<T> flatMap(mapper) 一对多地转换数据;
  • <T2> JoinedStream<T, T2> join(rightStream) 执行双流连接;
  • sink(topicName, serializer) 将结果输出到特定主题;

GroupedStream

对具有相同键的数据进行操作

  • <OUT> GroupedStream<K, Integer> count(selectAction) 统计包含特定字段的数据条目数量。
  • GroupedStream<K, V> min(selectAction) 计算特定字段的最小值。
  • GroupedStream<K, V> max(selectAction) 计算特定字段的最大值。
  • GroupedStream<K, ? extends Number> sum(selectAction) 计算特定字段的总和。
  • GroupedStream<K, V> filter(predictor) 过滤特定字段。
  • <OUT> GroupedStream<K, OUT> map(valueMapperAction) 执行一对一的数据转换。
  • <OUT> GroupedStream<K, OUT> aggregate(accumulator) 对数据执行聚合操作,并支持二阶聚合,例如在窗口触发之前添加数据,并在窗口触发时计算结果。
  • WindowStream<K, V> window(windowInfo) 为流定义一个窗口。
  • GroupedStream<K, V> addGraphNode(name, supplier) 在低级接口中将自定义操作符添加到流处理拓扑。
  • RStream<V> toRStream() 转换为 RStream,仅在接口方面进行转换,不影响数据。
  • sink(topicName, serializer) 以自定义序列化格式将结果写入主题。

WindowStream

对已划分为窗口的数据进行操作

  • WindowStream<K, Integer> count() 统计窗口中数据条目的数量。
  • WindowStream<K, V> filter(predictor) 过滤窗口中的数据。
  • <OUT> WindowStream<K, OUT> map(mapperAction) 对窗口中的数据执行一对一的数据转换。
  • <OUT> WindowStream<K, OUT> aggregate(aggregateAction) 对窗口中的数据执行多对一的数据转换。
  • <OUT> WindowStream<K, OUT> aggregate(accumulator) 对窗口中的数据执行聚合操作,并支持二阶聚合,例如在窗口触发之前添加数据,并在窗口触发时计算结果。
  • void sink(topicName, serializer) 以自定义序列化格式将结果写入主题。