实时数据中心建设思路与企业实践 | 青训营笔记

59 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第16天

1. 企业数据架构

开发工具套件:做数据开发操作、大数据生产、数据资产管理等

数据治理:关注数据生产结果是否符合预期、数据权限管理、数据生命周期管理

image.png

1.1 数据集成

业务数据收集-CDC

  • 要保证数据不丢失
  • 要保证数据有顺序

image.png

业务数据收集-Log

数据流向:client/server log --> 数据系统

image.png

系统间同步传输

存储系统间数据传输

image.png

1.2 数据生产-离线 & 实时

实时处理链路:Flink + Kafka

离线处理链路:Hive + Spark

image.png

1.3 数据服务

image.png

2 数据中心案例

以房产数据平台为例:

供需关系:

  • 房源
    • 房增(新增房子的录入量)
  • 客源
    • 客增(新增客户的录入量)

过程:

  • 通话次数
  • 带看次数

结果:

  • 成交量(成交合同数量)

数据查询要求:

数据中心看板查询条件:

  • 时间范围:今天前的任意日期范围
  • 业务类型:租赁/买卖/全部

数据展示:

  • 查询条件下的每个经纪人的汇总数据
  • 支持下钻明细数据

技术要求:

  • 300ms内返回结果
  • 数据是实时秒级

image.png

3,实时数据生产

3.1 数据分析

根据日期、业务类型(买卖、租赁)查询经纪人汇总数据

目标数据产出粒度:经纪人+业务日期+业务类型

image.png

计算目标:

  • 开发效率:较快满足用户的需求
  • 资源成本:计算效率高
  • 数据质量:准确无误、数据实时

3.2 计算分析

Lambd架构

Lambda计算架构,分为离线数据流和实时数据流两部分处理,最后通过merge进行合并。

image.png

问题:如果遇到历史数据变通,会造成统计错误

全量计算架构

用实时引擎来计算所有的数据

image.png

问题:如果遇到历史数据变通,会造成统计错误

解决:

1.取最新“快照”

create view dk as select * from (select * , row_number() over (partition by id order by utime desc) as rownum from dk) where rownum = 1;

2.计算

select date,staff_id,house_type,count(id) as dk_cnt from dk where audit_status=1 group by date, staff_id, house_type

3.2 对比

目标Lambda架构全量计算架构
开发运行效率效率低:存在实时离线开发任务和merge逻辑效率高:只存在一套实时任务
资源效率计算资源占用高:离线全量+实时增强状态存储成本相对高:全量+增量
数据质量实时、准确符合要求符合要求

4. 数据服务

4.1 查询快(引擎选择)

指定Key,查询value,类似HashMap --> redis

分析,join,Agg --> ClickHouse、Doris

4.1 查询快(怎么做)

简化查询逻辑模型

select
field1, field2, ... (目标信息)
from
(
select count, sum, max, avg (计算处理)
from
table1 (left/right/inner join table2...) (原始信息关联)
where field1 > xxx and field2 > xxx (原始信息筛选)
group by group_fields
)

查询优化分析:

  • 关注目标:不需要的信息不关注
  • 计算处理:count/sum/avg等聚合函数
  • 原始信息:单表筛选够不够快、信息关联够不够快

4.1 查询快(关注目标信息)

行存:大量io,每行查找需要的列

列存:直接取出对应的列文件

筛选分区:

将数据存储的格式按照 天 进行分区存储,之后可以根据日期快速筛选

筛选PK:

将经常查询的内容,组织成PK,可以利用索引快速定位。

传统优化:RBO CBO

应用优化:

原始信息关联

  • Local join
  • 预关联:直接生产“大宽表”

计算复杂度

  • 预计算
  • 提升信息密度

4.2 如何保证稳定

熔断触发策略:

  • 比如错误率每秒超过10%
  • 响应时间大于5s

动作:直接返回失败

限流、降级

  • 限流:根据查询客户端、接口等配置查询限额
  • 降级:主备存储/服务集群,降级预案