栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Siddhi cep

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Siddhi cep

1.基本介绍

Siddhi 提供以下功能,

流式数据分析

为分析操作员提供编排数据流、计算分析和检测 来自多个不同实时数据源的事件数据模式的软件,以允许开发人员构建能够实时感知、思考和行动的应用程序。

复杂事件处理 (CEP)

“CEP 是一种计算,其中有关事件的传入数据被提炼成更有用、更高级别的‘复杂’事件数据,从而提供对正在发生的事情的洞察力。”

“ CEP 是事件驱动的,因为计算是由接收事件数据触发的。CEP 用于要求高、持续智能的应用程序,以增强态势感知并支持实时决策。”

流数据集成

流数据集成是一种通过处理、关联和分析内存中的数据来集成多个系统的方法,同时不断地将数据从一个系统实时移动到另一个系统。

警报和通知

该系统根据定义的 KPI 和其他分析持续监控事件流,并发送警报和通知。

自适应决策一种根据预定义规则、连接系统的当前状态和机器学习技术动态做出实时决策的方法。


2.使用流程

当Siddhi 应用程序启动时:

定义输入流,输出流,编写Siddhi查询sql;
接收各种流将事件传递给查询以进行处理。
根据查询完成的处理生成新事件。
最后,通过输出将新生成的事件发送到流。

3.sql样例
define stream TemperatureStream
        (sensorId string, temperature double);
 
@info(name = 'Overall-analysis')
from TemperatureStream#window.timeBatch(1 min)
select avg(temperature) as avgTemperature,
       max(temperature) as maxTemperature,
       count() as numberOfEvents
insert into OverallTemperatureStream;
 
@info(name = 'SensorId-analysis')
from TemperatureStream#window.timeBatch(30 sec, 0)
select sensorId,
       avg(temperature) as avgTemperature,
       min(temperature) as maxTemperature
group by sensorId
having avgTemperature > 20.0
insert into SensorIdTemperatureStream;
define stream InputStream(jsonString string);
 
from InputStream
select json:toObject(jsonString) as jsonObj
insert into PersonalDetails;
 
from PersonalDetails
select jsonObj,
    json:getString(jsonObj,'$.name') as name,
    json:isExists(jsonObj, '$.salary') as isSalaryAvailable,
    json:toString(jsonObj) as jsonString
insert into OutputStream;
 
from OutputStream[isSalaryAvailable == false]
select
    json:setElement(jsonObj, '$', 0f, 'salary') as jsonObj
insert into PreprocessedStream;
TemperatureStream  (
        sensorId  string ,  temperature  double );
 
define table TemperatureLogTable (
        sensorId string, roomNo string, temperature double);
 
@store(type="rdbms",
       jdbc.url="jdbc:mysql://localhost:3306/sid",
       username="root", password="root",
       jdbc.driver.name="com.mysql.jdbc.Driver")
define table SensorIdInfoTable (
        sensorId string, roomNo string);
 
@info(name = 'Join-query')
from TemperatureStream as t join SensorIdInfoTable as s
     on t.sensorId == s.sensorId
select t.sensorId as sensorId, s.roomNo as roomNo
       t.temperature as temperature
insert into TemperatureLogTable;

4.总结:
优点:
1.sql模式,本身支持一些函数运算;

2.量词,组合模式,连续策略较为丰富;

3.支持不发生算子;

4.时间窗口内,数据聚合在函数支持下较为方便;

5.事件流可以支持和外部存储join;

缺点:

1.使用Siddhi Streaming SQL语言将处理逻辑编写为Siddhi 应用程序,开发和维护比java代码高,在sql里数据处理/异常/监控等不够灵活可控;

2.sql模式开发,对于现有的复杂json结构数据源,解析处理不友好;

3.长窗口聚合数据时,数据在内存中累积;

4.海外项目,文档资料少,维护成本高;

5.当前的复杂嵌套回溯类型,sql模式难以实现;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号