我们与DAS和GREG一起使用的架构

时间:2016-03-11 06:55:07

标签: wso2 wso2greg wso2-das

首先介绍我们的用例:

实时数据分析平台

每1秒一个外部系统产品时间序列数据。时间序列数据由[id,time,value]字段组成。它支持REST API来搜索这些时间序列数据。

我们有很多(超过100个)待命的CPP程序来分析时间序列数据,这些程序会将KPI产生到数据库中。程序是实时计算,每个CPP程序每秒读取数据,每秒处理一次,并将KPI结果发送到数据库。

我们使用的系统架构非常简单: enter image description here

但系统存在问题:

  1. 每一秒,外部系统都会收到大量的http请求,这会导致外部系统性能下降。

  2. 与DB相同的情况为1

  3. 我们没有合适的工具来管理CPP程序,我们不知道它们何时以及为何会崩溃。我们希望在遇到任何问题时收到警报。

  4. 由于缺乏合适的工具,我们只能逐个部署和启动CPP

  5. 许多程序会请求相同的时间序列数据,例如,程序A请求[ID1,ID2,ID3,ID4],程序B可以请求[ID2,ID4,ID6,ID7],程序C可以请求[ID3,ID5,ID5,ID7],因此大量重复数据将出现在不同的请求中。

  6. 经过一番调查,我们认为WSO2产品是解决我们问题的最佳选择,我们改变了架构:

    enter image description here

    我们使用DAS搜索TS数据,调度数据并收集KPI结果。 GREG用于管理CPP计划的生命周期。

    GREG

    1. 定义新工件类型,类型包含CPP程序(.exe或脚本)。我们希望使用发布者控制台网站发布新的CPP程序, 管理程序生命周期(开始/停止/暂停/重置),但仍处于开发阶段,无法完全确认可以存档

    2. 我们希望将CPP程序文件上传到Enterprise Store,用户可以从GREG发布者订阅

    3. 监控每个CPP计划。

    4. DAS

      1. 创建自定义接收器,它每30秒从GREG获取一个id列表,并从外部系统获取时间序列数据

      2. 创建流,它是持久性事件数据

      3. 创建执行计划,它使用siddhi按每个CPP重新组织时间序列数据

      4. 创建HTTP接收器以接收来自CPP

      5. 的KPI结果
      6. 创建发布商以将KPI发送到外部数据库商店

      7. 我们的架构有什么问题吗?它是使用DAS和GREG的最佳方式吗?

        感谢您的任何建议。

0 个答案:

没有答案