实时数仓
分层:ODS:Kafka topic_db topic_log采集模块:第一层Flume:日志数据Maxwell:业务数据DIM:HBase(Phoenix)使用场景:事实表会根据主键获取一行维表数据(1.永久存储、2.根据主键查询)HBase:海量数据永久存储,根据主键快速查询 √Redis:用户表数据量大,内存数据库 ×ClickHouse:并发不行,列存 ×ES:默认给所有字段创建索引 ×Hive(HDFS):效率低下 ×Mysql本身:压力太大,实在要用就使用从库 √
动态配置:决定需要哪些维表
FlinkCDC读取MySQL配置表并转换为广播流处理主流与广播流关联以后的数据流处理广播流获取并解析数据、建表、写入状态处理主流读取状态、过滤字段、加入SinkTable字段写出自定义Sink将数据写出到PhoenixDWD:Kafka日志数据:DataStream未经加工的 5 状态编程新老用户检验、侧输出流分流日活 状态编程,按天去重数据,TTL跳出 CEP业务数据:FlinkSQL事实表 订单 支付 加购 点赞 评论 收藏 领券 注册JOIN:WindowJoin、IntervalJoinjoin、left join、right join、full joinLookUp join:维度退化upsert-kafka sinkDWS:ClickHouse关键词需求:FlinkSQL、提取事件时间开窗、自定义UDTF函数、IK分词器的使用用户商品粒度下单:关联维表操作JDBCUtil -> DimUtil -> 测试发现延迟过高优化1:旁路缓存缓存的选择:堆缓存、独立缓存服务读缓存、写缓存、数据更新时删除缓存数据更新时:将更新的数据写入Phoenix、删除Redis中的数据先将更新的数据写入Phoenix、再删除Redis中的数据先删除Redis中的数据、再将更新的数据写入Phoenix先删除Redis中的数据、再将更新的数据写入Phoenix、再删除Redis中的数据数据更新时:先将数据写入Redis、再将数据写入Phoenix优化2:异步IO10s聚合ADS:数据接口
