• [讨论] 平台建设,我们从架构中去掉kafka?


    目       录

    1.      概述... 2

    2.      原有结构(带kafka)... 2

    3.      改造后的结构(去掉kafka)... 3

    4.      对比... 4


    1.   概述

              我们主要面向钢铁行业工业互联网公有云和私有去建设,偏向PAAS层和SAAS层应用,框架是支撑这个体系建设。现在我们的公有云的IAAS资源层使用的是第三方云平台,现在有50个左右的站点,1个站点就是一个生产单位,1个站点每天传输到公有云平台的数据大概为300-500MB,1个站点的数据包括:一级PLC及传感器的数据、原燃料的化验数据、模型计算结果数据、产量数据及人工填报的数据,我们大致把这些数据分为两大类:设备数据和业务数据,暂时不包括:经营数据、物流数据、资产数据等。数据的实时性,基本上是现场产生了数据,会秒级检测,立即上传。数据的完整性,设备数据一般用于监测,可以有丢失的情况,业务数据一般用于报表、统计和分析,要求完整性和一致性,不能多数据也不能少数据

            上述就是我们的公有云平台的大致情况,下面把我们的原来的结构和改造完成的结构和大家分享一下,大家可以充分讨论。

    2.   原有结构(带kafka)

         接收到全国站点的数据后:

        (1)    把本次传输的数据写入到redis缓存中。

        (2)    把本次传输的数据编号存储到mysql数据库,形成待处理的任务。

        (3)    把本次传输的数据编号发送给kafka消息列队,负载平衡通知处理端处理本次传输的数据。

        (4)    处理端接收到kafka的本次传输的数据编号,从redis取出来数据,进行入库操作,关系数据、文件数据、视频数据、图片数据等。

        (5)    本次传输的数据处理完成。

         以上描述是接收数据后的整体流程,结构示意,如下图:

    3.   改造后的结构(去掉kafka)

          接收到全国站点的数据后:

        (1)把本次传输的数据写入到redis缓存中。

        (2)把本次传输的数据编号存储到mysql数据库,同时指定哪个处理端负责处理数据,形成待处理的任务。

        (3)处理端定周期从mysql取得自己负责处理的任务,再从redis取出来数据,进行入库操作,关系数据、文件数据、视频数据、图片数据等。

        (4)如果处理端服务异常挂掉,那么接收数据端会重新分配该处理端无法处理的数据处理任务。

        (5)本次传输的数据处理完成

          以上描述是改造后,接收数据后的整体流程,结构示意,如下图:

    4.   对比

    (1)    原有结构,实时的效率更高,kafka直接负载分配给处理端。

                 改造后结构,处理端需要定周期从mysql取得自己的处理任务,有周期耗时时间。

    (2)    原有结构,如果一个处理端处理数据事务超时,kafka重新分配分区,会影响所有处理端,造成待处理任务堆积。

                 改造后结构,如果一个处理端挂掉了,重新分配的时间比较快,并且不影响其他处理端。

    (3)    原有结构,处理环节比较多。

                 改造后结构,少了kafka的环节。

    (4)其他网友补充……。


     文章:

      .NET Core开发的iNeuOS工业互联网平台,发布 iNeuDA 数据分析展示组件,快捷开发图形报表和数据大屏

      [视频演示].NET Core开发的iNeuOS物联网平台,实现从设备&PLC、云平台、移动APP数据链路闭环

      .NET Core开发的iNeuOS物联网平台部署树霉派(raspbian),从网关到云端整体解决方案

      .NET Core开发的iNeuOS物联网平台部署在Ubuntu操作系统,无缝跨平台

      iNeuOS 物联网云操作系统2.0发布,集成设备容器、视图建模、机器学习三大模块

      iNeuOS云操作系统,.NET Core全系打造


      物联网&大数据技术 QQ群:54256083 

      物联网&大数据合作 QQ群:727664080

      网站:http://www.ineuos.net

      联系QQ:504547114

      合作微信:wxzz0151

  • 相关阅读:
    共享内存
    文件IO函数和标准IO库的区别
    链表程序
    flash_header.S ( freescale imx6 board)
    深入理解二维数组
    putchar和puts
    指针目标
    C语言:break和continue
    C语言:输入输出
    python lambda
  • 原文地址:https://www.cnblogs.com/lsjwq/p/12419411.html
Copyright © 2020-2023  润新知