转至元数据结尾

转至元数据

快速入门指南

WSO2 流处理器 (SP) 是一个轻量级、精简、基于流 SQL 的流处理平台,允许您收集事件、实时分析它们、识别模式、映射它们的影响并在几毫秒内传达结果。它由Siddhi提供动力,具有极高的性能。

首先,让我们了解本指南中使用的以下概念:

流处理和复杂事件处理概述

让我们通过一个例子来理解什么是事件。如果我们将通过 ATM 进行的交易视为数据流,则可以将其取款视为一个事件。此事件包含有关金额、时间、帐号等的数据。许多此类交易形成一个流。

流处理引擎允许您创建处理图并将事件注入其中。每个操作员处理并将事件发送到下一个处理器。

复杂事件是总结、代表或表示一组其他事件的事件。复杂事件处理是流处理的一个子集,它涉及实时分析多个事件流,识别跨流的特定序列或模式,并从相关事件中推断出业务重要事件。

WSO2 SP 的流处理功能允许您捕获大量数据流并实时处理它们,并以流方式呈现结果,同时其复杂的事件处理功能通过 Siddhi 支持的模式和序列检测决策模式和趋势。

悉地概述

WSO2 SP 使用 Siddhi 查询语言为其 Siddhi 应用程序编写处理逻辑。悉地可以:

  • 接受来自许多不同类型来源的事件输入

  • 处理它们以产生见解

  • 将它们发布到多种类型的接收器。

要使用Siddhi,您需要使用Siddhi Streaming SQL 语言将处理逻辑编写为Siddhi Application。在编写并启动 Siddhi 应用程序后,它:

  • 将数据一一作为事件

  • 处理每个事件中的数据

  • 根据目前完成的处理生成新的高级事件

  • 将新生成的事件作为输出发送到流。

在你开始之前:

  1. 安装Oracle Java SE 开发工具包 (JDK) 1.8 版。
  2. 设置 JAVA_HOME环境变量。
  3. 下载最新的WSO2 流处理器。
  4. 解压缩下载的 zip 并导航到<SP_HOME>/bin目录(<SP_HOME>是解压缩的目录)。
  5. 发出以下命令之一以启动 WSO2 Stream Processor Studio。
    • 对于 Windows: editor.bat
    • 对于 Linux:./editor.sh

成功启动 WSO2 SP 服务器后,将在 CLI 中打印类似于以下内容的日志。

服务器日志在启动日志中打印 Stream Processor Studio URL,如下所示。

设想

在这个场景中,您正在为一个虚构的大型航运公司 Shipping Wave 创建一个应用程序。史密斯先生,货物经理需要在任何给定时间跟踪装载到船上的货物的总重量。测量装载到船上的货箱重量被认为是一个事件。

让我们开始吧!您可以编写一个简单的 Siddhi 应用程序,按照以下步骤计算装载到船上的每个货箱的总重量。

  • 第 1 步:创建 Siddhi 应用程序
  • 第 2 步:模拟事件
  • 第 3 步:编辑 Siddhi 应用程序以执行时间处理
  • 步骤 4:为编辑的 Siddhi 应用程序模拟事件
  • 下一步是什么?

第 1 步:创建 Siddhi 应用程序

Smith 需要计算每增加一个货箱后装载到船上的货物的总重量。为了为他生成这个输出,让我们创建一个 Siddhi 应用程序,如下所示:
  1. 通过http://<HOST_NAME>:<EDITOR_PORT>/editor URL访问 Stream Processor Studio  。

    默认网址是 http://localhost:9390/editor

    Stream Processor Studio 将打开,如下所示。

  2. 单击 新建开始创建新的 Siddhi 应用程序。
  3. 输入您的 Siddhi 应用程序的名称。在这种情况下,让我们为应用程序命名 CargoWeightApp ,如下所示。

    @App:name("CargoWeightApp")
  4. 定义输入流。流需要有一个名称和一个模式来定义每个传入事件应该包含的数据。事件数据属性表示为名称和类型对。在这个例子中:

    • 输入流的名称: CargoStream

    • 引用每个事件中数据的名称: weight

    • 作为权重接收的数据类型: int

    define stream CargoStream (weight int);
  5. 定义输出流。这与之前的定义具有相同的信息,但有一个附加totalWeight属性,其中包含迄今为止计算的总重量。在这里,我们需要添加一个sink配置来记录来自 的事件,OutputStream以便我们可以观察输出值。

    接收器指定通过 Siddhi 将流发布到外部系统的方法。在这种情况下,添加的接收器属于该log类型,它在 CLI 中将输出流发布为日志。

    @sink(type='log', prefix='LOGGER')
    define stream OutputStream(weight int, totalWeight long);

  6. 输入定义以下内容的 Siddhi 查询。
    • 查询的名称(即,  cargoWeightQuery
    • 从中获取要处理的事件的输入流(即,  CargoStream
    • 需要发送到输出流的数据(即, weight 和 totalWeight
    • 需要如何计算输出(即通过计算所有事件的权重之和)
    • 输出需要发送到的流(即,  OutputStream

    此查询如下:

    @info(name='CargoWeightQuery')
    from CargoStream
    select weight, sum(weight) as totalWeight
    insert into OutputStream;

    完成的Siddhi文件如下:

    @App:name("CargoWeightApp")
    define stream CargoStream (weight int);
    @sink(type='log', prefix='LOGGER')
    define stream OutputStream(weight int, totalWeight long);
    @info(name='CargoWeightQuery')
    from CargoStream
    select weight, sum(weight) as totalWeight
    insert into OutputStream;

  7. 要保存 Siddhi 文件,请单击 File  =>  Save。这将打开 保存到工作区 对话框。单击 保存 将此文件保存在 <SP_HOME>/wso2/editor/deployment/workspace 目录中(这是保存 Siddhi 应用程序的默认位置)。

第 2 步:模拟事件

Stream Processor Studio 具有对模拟事件的内置支持。为了测试CargoWeightApp您创建的是否按预期工作,让我们按照下面给出的步骤模拟一些事件。

  1. 要启动 CargoWeight Siddhi 应用程序,请单击播放按钮。

    如果应用程序启动成功,Stream Processor Studio 控制台会记录以下内容。

  2. 在 Stream Processor Studio 中单击以下图标以打开事件模拟面板。

  3. 在面板的 Single Simulation 选项卡中,选择如下值:

    场地
    价值
    悉地应用名称 CargoWeight
    流名称 CargoStream

    结果,流的权属性 CargoStream显示如下:

  4. 在 权重字段中,输入 1000 并单击 开始以启动 Siddhi 应用程序。然后单击 发送以发送事件。该事件记录在 CLI 中,如下所示:

  5. 使用以下值再发送五个事件。

    事件编号
    重量
    1 2000
    2 1500
    3 2000
    4 3000
    5 1000

    事件记录如下。

    每个新权重都添加到新权重中。因此,发送完所有六个事件后,总权重为10500

第 3 步:编辑 Siddhi 应用程序以执行时间处理

本节演示如何使用 Siddhi 进行时间窗口处理。

在前面的场景中,您通过仅在内存中运行总和值来执行处理。在此过程中未存储任何事件。

窗口处理是一种方法,它允许我们在内存中存储给定时间段或特定数量的事件的一些事件,以便我们可以执行诸如计算其中的平均值、最大值等值的操作

让我们考虑一下,货物经理 Smith 有一个额外的要求,即每次装载新货箱时计算最后三个货箱的平均装载量,以平衡整个船的重量。在这里,我们正在考虑一个由三个事件组成的窗口,如下图所示。

为此,请按照以下步骤编辑 Siddhi 应用程序:

  1. 添加一个名为流averageWeight定义的新属性 , OutputStream以便每个输出事件除了显示加载的新框的重量和总重量外,还显示平均重量。

    define stream OutputStream(weight int, totalWeight long, averageWeight double);
  2. 要指定如何计算平均权重,请将 avgSiddhi 函数应用于语句中的 weight属性, select如下所示。这表明平均值是为weight传入事件的 属性计算的。

    select weight, sum(weight) as totalWeight, avg(weight) as averageWeight
  3. 要指定此查询对每个事件执行的计算必须仅应用于接收到的最后三个事件,请将长度窗口应用于输入流,如下所示。

    from CargoStream#window.length(3)

    此窗口适用于为从CargoStream流中获取的事件执行的所有计算。因此,添加此窗口还会导致根据最后三个事件计算总权重。

完成的查询如下。

@info(name='CargoWeightQuery')
from CargoStream#window.length(3)
select weight, sum(weight) as totalWeight, avg(weight) as averageWeight
insert into OutputStream;

完整的CargoWeightSiddhi 应用程序如下。

@App:name("CargoWeight")
define stream CargoStream (weight int);
@sink(type='log', prefix='LOGGER')
define stream OutputStream(weight int, totalWeight long, averageWeight double);
@info(name='CargoWeightQuery')
from CargoStream#window.length(3)
select weight, sum(weight) as totalWeight, avg(weight) as averageWeight
insert into OutputStream;

步骤 4:为编辑的 Siddhi 应用程序模拟事件

在这一步中,让我们启动编辑的 Siddhi 应用程序并模拟您在第 8 步中模拟的相同的六个事件。

事件编号
重量
事件编号
重量
1 1000
2 2000
3 1500
4 2000
5 3000
6 1000

生成的输出记录如下。

下一步是什么?

了解有关 Siddhi 的更多信息以及它如何在您的用户场景中提供帮助: 教程

了解如何开发、部署和监控 Siddhi 应用程序: 用户指南

WSO2流处理器相关学习(1)快速入门指南【转】相关推荐

  1. Spark-Streaming流式处理学习与快速入门指南

    1 Spark Streaming是什么 Spark Streaming 是 Spark 核心 API 的扩展, 用于构建弹性, 高吞吐量, 容错的在线数据流的流式处理程序. 总之一句话: Spark ...

  2. 150页书籍《PyTorch 深度学习快速入门指南》附PDF电子版

    为什么说是极简教程,首先本书只涵盖了150页.内容比较精简,特别适合作为 PyTorch 深度学习的入门书籍.为什么这么说呢?因为很多时候,一份厚重的书籍往往会削弱我们学习的积极性,在学习一门新的语言 ...

  3. 深度学习工程应用快速入门

    课程介绍 伴随人工智能时代的到来,深度学习技术也发挥着越来越重要作用,越来越多的技术人才开始投身入这一行业中,并希望发展成为一名深度学习算法工程师.然而,在实际的工程设计中,深度学习研发者总会面临着各 ...

  4. HTML5+app开发学习之快速入门篇

    HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...

  5. 【Eigen】学习Eigen的一些总结——快速入门指南(一)

    Eigen 快速入门指南 Eigen Quick reference guide 模块和头文件 Eigen库分为一个核心模块和几个附加模块.每个模块都有一个相应的头文件,为了使用模块必须包含该头文件. ...

  6. Spring学习(1)——快速入门

    Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of Co ...

  7. micro-app-vue2 vue3 超详细快速入门指南 学习记录

    micro-app-vue 快速入门指南 简介 micro-app是京东零售推出的一款微前端框架,它基于类WebComponent进行渲染,从组件化的思维实现微前端,旨在降低上手难度.提升工作效率.它 ...

  8. Spark快速入门指南 – Spark安装与基础使用

    本文转载自Spark快速入门指南 – Spark安装与基础使用 Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象.Spark 正如其名,最大的特点就是快(Lightni ...

  9. 【51单片机快速入门指南】4.3.1: MPU6050调用DMP库获取四元数和欧拉角

    目录 相关介绍 DMP库相关 DMP加载步骤: DMP设置数据写入 更新DMP DMP数据包结构 程序实现 DMP.c DMP.h 测试程序 四元数 实验现象 欧拉角的获取 普中51-单核-A2 ST ...

  10. 【51单片机快速入门指南】4.3: I2C读取MPU6050陀螺仪的原始数据

    目录 硬知识 特性参数 MPU6050 简介 模块重要寄存器简介 电源管理寄存器 1 陀螺仪配置寄存器 加速度传感器配置寄存器 FIFO 使能寄存器 陀螺仪采样率分频寄存器 配置寄存器 电源管理寄存器 ...

最新文章

  1. asp从后台调出的公式怎么参与运算_Excel中使用公式老是出错,这几招帮你轻松解决~...
  2. 学python买什么书好-python官方推荐30本面向初学者的书籍!你看过几本?
  3. 【安卓开发】Layout Inflation不能这么用
  4. JSTL中fmt标签详解
  5. tomcat苹果版安装步骤_mac系统安装apache tomcat配置方法图文详解
  6. 最短路计数(spfa)
  7. AI:你们是不是在等一顶红帽子?
  8. 弗拉明戈舞_百度百科
  9. 由MySql漏洞导致电脑被入侵(特征为新增加名为piress的帐户)
  10. Python自动化运维:Django之View视图和Template
  11. 域控dns无法解析域控_域注册商,DNS和托管
  12. python json序列化对象_Python学习之json序列化
  13. Windows坐标系统
  14. 人生实苦,可这就是人生
  15. android单例模式代码,在Android studio 中使用单例模式(示例代码)
  16. 八人抢答器讲解_八人智力竞赛抢答器课程设计报告
  17. 传统ADC主要指标:SFDR、SNR、SNDR、ENOB
  18. 【基于python实现UI自动化】6.selenium实现浏览器相关操作(最大化、自定义宽高、前进、后退)
  19. 【SAP GUI Scripting】 入门系列(1)_基本设置
  20. VS2015 解决 “有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”问题

热门文章

  1. linux脚本对登录密码加密,shell 脚本明文密码加密小工具
  2. 计算机毕业设计Java医院信息管理系统(系统+源码+mysql数据库+Lw文档)
  3. dpdk X710 VF reset
  4. 使用Keras-yolov3来识别滑动验证码
  5. 在sheet1工作表中进行高级筛选,筛选出计算机或英语大于85分的,2017年职称计算机考试EXCEL操作题...
  6. Win11 Windows聚焦不更新了怎么解决?聚焦锁屏图片不更换怎么办
  7. hprose php用户手册,07 Hprose 服务器事件
  8. dtcms配置多参数
  9. 2022年iOS面试题简答题
  10. can总线程序讲解_CANOpen系列教程02_理解CAN总线协议