在 AloT 场景下我们为什么会选择 Beam 呢?
- 数据源可以适配,因为平安城市,雪亮工程数据源千奇百怪 。
- 能够进行数据多样处理,连接,过滤,合并,拆分 。
- 具有清洗脏数据功能,例如警情去重误报警,合规检测等 。
- 具有大数据集群虚拟化部署功能,可扩展性,伸缩性 。
- 具有实时处理和离线处理能力 。

文章插图
这是案例的总架构图,底层是 Beam SDK,上层是抽象封装的输入输出组件,以及清洗组件,类型管理,第三方 SDK,在往上层是组件配置管理,及版本控制,最上层是 jar 可视化配置,以及 SQL 可视化,最后把 jar 通过运维一体化平台提交给执行引擎集群,当然这里有个解析器,是我们自己开发的 。
2. 示例架构图

文章插图
以下为示例架构图:
① 摄像头以及 AI 智能设备产生的报警以及抓取的信息上报到后端智能设备 。
② 智能设备产生的 AI 分析结果进行通过网关集群进行传输,注意网关集群地方要做流控及雪崩控制 。
③ 消息通过网关集群发送到消息中间件 。注意:这边这个规则下发是针对前段的数据进行 ETL 清洗的清洗规则的下发 。
④ Beam 集群接收下发规则的更新,并且根据规则进行数据清洗 。
⑤ 对于文档性的数据我们实时存储到实时搜索引擎 。
⑥ 需要复杂查询,统计以及报表的数据存储到 ClickHouse 。
⑦ 进行 BI 套件的展示以及前端大屏幕的展示 。
3. 示例代码

文章插图
核心示例代码,首先创建管道工厂,然后显示设置执行引擎,根据 SDKIO 进行读取 kafka 的消息 。

文章插图
序列化消息,写入 es 进行备份,因为 es 数据是 json 的写入的时候首先要考虑转换成 json 类型 。这个地方我设置了一个编码,实体类的编码类型为 AvroCoder,编码类型是每个管道都要设置的 。

文章插图
把 kafka 的数据转换成 row 类型,这里就是运用了管道设计中的流分支处理 。

文章插图
最后一步是写入咱们的 clickhouse,大家可能对 clickhouse 不是很了解,这是俄罗斯的一家高科技公司研发的 。查询速度非常快,比 Hive 快279倍,比 MySQL 快801倍的神器 。
4. 示例效果展示
以下为写入 es 的效果 。这个字段写入时候自动创建 。

文章插图

文章插图
今天的分享就到这里,谢谢大家 。
【Apache Beam 架构原理及应用实践】▌关于持续问题咨询:
- Apache Beam 官方网站
- Apache Beam 开源地址
- Apache Beam Example 地址
user-subscribe@beam.apache.org
dev-subscribe@beam.apache.org

文章插图
嘉宾介绍
张海涛,海康威视金融事业部架构师,国际注册云安全系统认证专家 。目前负责全国金融行业AI大数据的基础架构工作,主导建设过云基础平台的架构设计及核心开发,并自研大数据组件获得过国家发明专利 。专注安防及 AloT 云计算大数据方向,是 Apache Beam 中文社区发起人之一及 ClickHouse 开源社区的核心开发人员 。
推荐阅读
- 微服务架构如何实现网站服务垂直化拆分
- 详细讲解Tomcat系统架构
- Linux下apache安全配置策略
- 支付系统整体架构详解
- Apache ShardingSphere开源的分布式数据库中间件
- 架构师深入剖析JVM体系结构详解
- 微服务架构实践之api-gateway
- 京东架构师分享:微服务分布式一致性模式
- 百度技术架构师总结:微服务架构之访问安全
- 互联网架构演化
