#事件溯源 #去中心化 #分布式 #SQL 数据库 #事件流

actyxos_data_flow

用于将 ActyxOS 中的实时数据导出到外部系统的工具

1 个不稳定版本

0.1.0 2020 年 6 月 24 日

#28#事件流

Apache-2.0

140KB
2.5K SLoC

ActyxOS 的实时数据导出工具

ActyxOS 是一个针对工厂车间去中心化事件溯源系统。在工厂部署应用程序的目的之一是通过报告和可视化车间的情况来获得业务洞察。

使用此库,可以轻松地将事件数据导出到 SQL 数据库,如下面的代码所示

pub fn dashboard_logic<'a>(
    scope: &mut Scope<'a>,
) -> (
    Input<Event<MachineEvent>>,
    Flow<'a, DashboardEntry, Stateful>,
) {
    let (injector, events) = Flow::<Event<MachineEvent>, _>::new(scope);

    let out = events
        .filter(|ev| ev.stream.name.as_str().starts_with("Drill"))
        .map(|ev| match ev.payload {
            MachineEvent::Started { order } => {
                DashboardEntry::working(ev.stream.name.to_string(), order, ev.timestamp)
            }
            MachineEvent::Stopped { .. } => {
                DashboardEntry::idle(ev.stream.name.to_string(), ev.timestamp)
            }
        })
        .group_by(|entry| entry.machine.clone())
        .max_by(|entry| entry.since)
        .ungroup();

    (injector, out)
}

整个项目位于 example 文件夹中,生成底层事件的示例 web 应用程序位于 webapp 文件夹中。两者都可以部署到 ActyxOS 节点或以开发者模式运行,请参阅 快速入门指南

有关更多背景信息,请参阅 博客文章

构建 Docker 应用

使用以下命令在 Linux 上构建二进制文件和 Docker 镜像

cd machine-dashboard-app
./build.sh

然后将它打包成一个 ActyxOS 应用程序并部署它

ax apps package
ax apps deploy --local com.actyx.data_flow.machine-dashboard-1.0.0-x86_64.tar.gz localhost
ax apps start --local com.actyx.data_flow.machine-dashboard localhost
ax logs tail --local -f localhost

后续步骤

从示例中,您可以探索库提供的更多数据流转换,以及连接到 PostgreSQL 或 Microsoft SQL Server 数据库以存储转换结果。

DB 驱动代码也进行了注释,并允许扩展其他数据库。

如果您想在其他操作系统或架构上构建,可以查看 Rust Docker 镜像

依赖项

~59MB
~1M SLoC