博客
关于我
[开源地址] 放弃Flink,.NET5.0开发CSharpFlink,简要设计、部署及二次开发说明。
阅读量:435 次
发布时间:2019-03-06

本文共 1951 字,大约阅读时间需要 6 分钟。

1 概述及背景

我们开发了一款基于NET 5.0的实时计算组件,用于处理工业领域的大规模数据。通过专线或4G网络传输数据,支持每天处理百万级数据量,为用户提供实时服务和离线分析。我们已稳定运行3年,并提供私有云服务。

本组件旨在替代Flink,实现数据聚合、逻辑计算等功能。经过近一年研发,现已实现聚合和逻辑计算,但Flink的性能和运维复杂度较高。因此,我们自主开发CSharpFlink,支持自定义数据源、计算和存储需求。

2 应用场景

主要应用于物联网和工业互联网的数据处理,包括:

  • 数据点实时聚合计算(如最大值、最小值、平均值等),可自定义扩展。
  • 历史数据窗口计算,支持数据补充和更新。
  • 数据表达式计算,支持自定义C#脚本,满足实时预警或深度处理需求。
  • 分布式部署,主节点负责任务分发,工作节点执行计算并存储结果。
  • 3 框架特点

    基于NET 5.0开发,具有以下优势:

  • 跨平台支持,开发效率高。
  • 支持数据窗口外的数据补充和更新,确保计算准确。
  • 定时或周期性表达式计算,满足实时需求。
  • 可通过C#扩展,对接多种数据源和存储方式。
  • 支持单节点或分布式部署,灵活性高。
  • 4 框架结构

    框架组件包括:

    • Cache:管理本地缓存。
    • Calculate:处理计算任务。
    • Channel:实现分布式通信。
    • Common:公共功能库。
    • Config:配置文件管理。
    • Execution:执行环境入口。
    • Expression:表达式计算。
    • Log:日志操作。
    • Model:数据元信息管理。
    • Node:节点管理。
    • Protocol:分布式协议。
    • Sink:结果存储接口。
    • Source:多数据源接口。
    • Task:任务操作。
    • Window:窗口计算。
    • Worker:工作节点接口。

    5 代码目录说明

    使用VS2019开发,解决方案文件为CSharpFlink.sln,目录结构如下:

  • Cache:管理计算任务本地缓存。
  • Calculate:处理输入、执行和输出操作。
  • Channel:实现分布式通信机制。
  • Common:公共功能库。
  • Config:读取和管理配置文件。
  • Execution:执行环境入口。
  • Expression:实现表达式计算。
  • Log:日志操作及管理。
  • Model:处理数据元信息。
  • Node:管理主节点和工作节点。
  • Protocol:定义分布式协议。
  • Sink:实现结果存储接口。
  • Source:对接多种数据源。
  • Task:定义窗口或表达式任务。
  • Window:实现窗口计算功能。
  • Worker:定义工作节点接口。
  • 6 配置文件说明

    默认配置文件路径为cfg(global.cfg),支持自定义路径。配置项包括:

  • MaxDegreeOfParallelism:任务并行度。
  • MasterListenPort:主节点侦听端口。
  • MasterIp:主节点IP。
  • NodeType:节点运行模式(Master、Slave、Both)。
  • RemoteInvokeInterval:远程调用间隔时间。
  • RepeatRemoteInvokeInterval:重复调用间隔时间。
  • SlaveExcuteCalculateInterval:工作节点执行间隔时间。
  • MaxFrameLength:数据传输最大帧长。
  • WorkerPower:工作节点能力系数。
  • MaxFrameLength:数据传输最大长度。
  • 7 任务部署说明

    二次开发完成的任务程序集(.dll)需部署至“tasks”目录。主程序自动加载并调用任务程序。开发完成后,测试通过的程序集可直接部署,并在命令行运行。

    8 命令行操作说明

    运行“CSharpFlink”程序,支持自定义配置文件或任务程序集:

    • -h:显示帮助信息。
    • -c:指定配置文件路径。
    • -t:加载任务程序集路径。

    示例命令:

    dotnet CSharpFlink.dll -c c:/master.cfg -t c:/mytask.dll

    9 部署说明

    将“release”目录下的程序复制至不同路径下,分别配置节点类型和任务数。修改配置文件中的“NodeType”为Master或Slave,运行相应的程序。

    10 二次开发说明

    二次开发主要包括数据源、计算过程和结果存储的实现:

  • 数据源对接:继承SourceFunction接口,可对接mqtt、kafka、rabbitmq、数据库等。
  • 数据计算:继承Calculate接口,可实现聚合和表达式计算。
  • 结果存储:继承SinkFunction接口,可实现多种存储方式。
  • 11 应用事例展示

    在同一台设备上,运行1个主节点和5个工作节点,生成1000个数据点任务。任务包括随机时间窗口和自定义算子。运行效果表现稳定,资源使用率可控。

    转载地址:http://ayoyz.baihongyu.com/

    你可能感兴趣的文章
    Net与Flex入门
    查看>>
    net包之IPConn
    查看>>
    Net操作配置文件(Web.config|App.config)通用类
    查看>>
    Neutron系列 : Neutron OVS OpenFlow 流表 和 L2 Population(7)
    查看>>
    New Relic——手机应用app开发达人的福利立即就到啦!
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS
    查看>>
    NFS Server及Client配置与挂载详解
    查看>>
    NFS共享文件系统搭建
    查看>>
    nfs复习
    查看>>
    NFS安装配置
    查看>>
    NFS的安装以及windows/linux挂载linux网络文件系统NFS
    查看>>
    NFS的常用挂载参数
    查看>>
    NFS网络文件系统
    查看>>
    nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
    查看>>
    NFV商用可行新华三vBRAS方案实践验证
    查看>>
    ng build --aot --prod生成文件报错
    查看>>
    ng 指令的自定义、使用
    查看>>
    nghttp3使用指南
    查看>>
    Nginx
    查看>>