clickhouse在风控-风险洞察领域的探索与实践
一、风险洞察平台介绍
以Clickhouse+Flink实时计算+智能算法为核心架构搭建的风险洞察平台, 建立了全面的、多层次的、立体的风险业务监控体系,已支撑欺诈风险、信用风险、企业风险、小微风险、洗钱风险、贷后催收等十余个风控核心场景的实时风险监测与风险预警,异常检测算法及时发现指标异常波动,基于根因策略快速做到风险归因分析并生成风险报告,接入MQ主题500+、数据模型6000+、实时预警4000+、 风险监控看板1000+、 异常检测模型10000+, 大促时期分钟级消息处理量达3400w/min,日均消息处理量达百亿
二、风险洞察-遇到的技术挑战与解决方案
技术难点与挑战
风险洞察平台早期架构采用ElasticSearch作为数据存储, 通过消费MQ消息进行批量写入, 基于ElasticSearch明细数据进行指标计算来满足风险预警与风险监控的需求实现. 这种架构早期可以满足业务需求,但随着平台业务的发展与数据的膨胀, 面临了以下痛点:
技术解决方案
基于以上面临的技术痛点再结合当下风控业务现状的背景下, 我们以效率、成本、质量等方面对市面上主流OLAP引擎进行调研对比,如presto, impala, druid, kylin等, 最终确定clickhouse能够更好的涵盖风险洞察所需的技术特点.并结合Flink实时计算能力实现整体风险洞察的计算+存储架构,具体方案如下:
三、风险洞察-整体架构图
风险洞察-架构介绍
风险洞察-clickhouse实时数据模型设计
风险洞察架构的核心在于风险实时数据模型+实时计算架构, 风险实时数据模型的核心在于clickhouse, 接下来我们深入介绍下clickhouse在风险实时数据模型中的设计与使用.
层级缩短: 首先, 风险数据模型采用短链路架构设计,从RODS层可直接通过Flink构建RDWM层与RDWS层,重视层级缩短, 降低数据延迟; clickhouse作为分层数据载体, 可根据业务需求提供不同层级的数据查询服务, 当然基于性能的考虑推荐业务尽量使用第二层或第三层数据.
维度退化: 传统数仓中查询会涉及事实表与维度表之间的关联, 该操作会带来复杂的性能调优问题. 为了发挥clickhouse单表计算优势, 尽量多的将常用维度字段退化到事实表中,形成宽表供业务方来使用. 减少联查带来的性能效率问题.
Flink预聚合: 结合Flink实时计算引擎实现海量数据风险指标秒级或分钟级周期预聚合计算, 降低下游计算成本, 尤其在大促环境时期, 通过预聚合手段能够显著提高clickhouse计算能力
四、风险洞察-clickhouse的实践应用
介绍完clickhouse参与的架构设计理念, 接下来结合具体实践场景来介绍下clickhouse在使用中遇到的问题与优化方案.
营销反欺诈场景大促实践
背景: 营销反欺诈作为风控体系中的重要场景, 其原始数据流具备两大特点: 1. 消息体庞大且复杂, 包含多种数据结构, 但MQ消息体大小达17kb; 2. 消息流量大, 营销数据日常流量在1w/s左右, 在2021双11大促时期峰值更是达到60w/s, 为日常流量的60倍. 因数据需要支撑实时看板监控与预警, 所以如何保证数据写入的吞吐量与数据查询的及时性是极具挑战的问题.
初始设计: 通过消费原始消息流, 通过事件总线写入clickhouse.
问题发现:
架构改造:
改造点1: 分而治之, 集群拆分解耦
改造点2: 因势利导, 动态的写入策略
改造点3: 化繁为简, 预聚合
用户行为路径查询实践
背景: 行为路径分析能够帮助分析师洞察出某一类用户在各个主题事件间的路径分布特性。可依次通过人群筛选与路径筛选来得到目标人群与目标路径,再将筛选结果及相应的数据通过桑基图或排行榜的方式来呈现. 所以用户行为路径面临着海量数据如何高效查询、指标计算等问题
设计:
clickhouse生产运维实践
背景: 在clickhouse的日常使用中, 也遇到了一些优化实践, 最后简单介绍一下相关问题与优化
Q: 生产过程中发现zk机器磁盘多次报警, zk日志与快照占用存储较多
A: 设置日志与快照份数以及自动清理的频率, 合理利用磁盘使用率
Q: 分布式表写入时会进行分片计算与数据分发,导致cpu与内存飙升,报错:Merges are processing significantly slower than inserts,merges速度跟不上写入速度
A: 写local表,同时使用vip写入,尽量保持数据写入磁盘均匀分布;
Q: zk session经常断掉,或者处理不过来事务,导致ck所有表结构出现readonly;
A: 高版本clickhouse集群支持raftKeeper, 在一定程度上解决zookeeper性能问题, 目前正在持续调研跟进中
五、未来展望
总结起来, clickhouse在大批量数据读写场景下对比同类型引擎有着巨大的性能优势, 在风险洞察实时分析、实时预警领域承担着重要职责; 同时我们也在对clickhouse不断地深挖优化, 针对高并发, zookeeper集群不稳定等ck劣势方面进行采取集群拆分、优化SQL来提高查询并发能力, 后续也将推进升级版本支持RaftKeeper等措施来完善clickhouse的不足之处.
clickhouse在风控-风险洞察领域的探索与实践的更多相关文章
- 国产开源数据库:腾讯云TBase在分布式HTAP领域的探索与实践
导语 | TBase 是腾讯TEG数据平台团队在开源 PostgreSQL 的基础上研发的企业级分布式 HTAP 数据库系统,可在同一数据库集群中同时为客户提供强一致高并发的分布式在线事务能力以及高 ...
- FPGA加速:面向数据中心和云服务的探索和实践
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由columneditor 发表于云+社区专栏 作者介绍:章恒--腾讯云FPGA专家,目前在腾讯架构平台部负责FPGA云的研发工作,探索 ...
- 从C10K到C10M高性能网络的探索与实践
在高性能网络的场景下,C10K是一个具有里程碑意义的场景,15年前它给互联网领域带来了非常大的挑战.发展至今,我们已经进入C10M的场景进行网络性能优化. 这期间有怎样的发展和趋势?环绕着各类指标分别 ...
- zz深度学习在美团配送 ETA 预估中的探索与实践
深度学习在美团配送 ETA 预估中的探索与实践 比前一版本有改进: 基泽 周越 显杰 阅读数:32952019 年 4 月 20 日 1. 背景 ETA(Estimated Time of A ...
- 网络Devops探索与实践 流程管理分析师
https://mp.weixin.qq.com/s/OKLiDi78uB8ZkPG2kUVxvA 网络Devops探索与实践 王镇 鹅厂网事 2020-09-23 9月16日举办的2020 ODC ...
- 涂鸦基于OAuth2在开发者平台上的探索与实践
前言 开发授权(OAuth2)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资料(如照片.视频.联系人列表),而无需将用户名和密码提供给第三方应用. OAuth2允许用户提供一 ...
- 公有云上构建云原生 AI 平台的探索与实践 - GOTC 技术论坛分享回顾
7 月 9 日,GOTC 2021 全球开源技术峰会上海站与 WAIC 世界人工智能大会共同举办,峰会聚焦 AI 与云原生两大以开源驱动的前沿技术领域,邀请国家级研究机构与顶级互联网公司的一线技术专家 ...
- NSIS:应用软件自动升级功能的探索与实践
原文 NSIS:应用软件自动升级功能的探索与实践 记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能 (详细http://www.flighty.cn/html/soft/20110106_1 ...
- FFM及DeepFFM模型在推荐系统的探索及实践
12月20日至23日,全球人工智能与机器学习技术大会 AiCon 2018 在北京国际会议中心盛大举行,新浪微博AI Lab 的资深算法专家 张俊林@张俊林say 主持了大会的 搜索推荐与算法专题,并 ...
随机推荐
- 报错:①Tog goal specified requires a project to execute but there is no POM in this directory......②说类HelloWorld是公共的, 应在名为 HelloWorld.java 的文件中声明 public class HelloWorld......
在运行Maven的命令时,在DOS窗口里面必须把目录切换到项目的根部,要不然命令是找不到目的地. 下图是错误示范,项目在Demo02这个目录里,就必须将目录切换到Demo02下,否则DOS窗口只有飘红 ...
- C语言:多功能计算器程序说明书
好家伙,3000字终于写完了 一.题目:多功能科学计算器 二.内容: (1)概述或引言 开发环境为Visual C++ 目前已实现的功能: (1)解二元一次方程.一元二次方程 (2)进行矩阵相加.相减 ...
- Golang 动态脚本调研
一.技术背景 1.1 程序的动态链接技术 在实际开发过程中,我们经常需要动态地更新程序的功能,或者在不变更程序主体文件的情况下添加或者更新程序模块. 1.1.1 动态链接库 首先最常见的是window ...
- Python图像处理丨认识图像锐化和边缘提取的4个算子
摘要:图像锐化和边缘提取技术可以消除图像中的噪声,提取图像信息中用来表征图像的一些变量,为图像识别提供基础. 本文分享自华为云社区<[Python图像处理] 十七.图像锐化与边缘检测之Rober ...
- 阿里云Centos7部署私人CSGO服务器
大四毕业生,论文和答辩分别以1.8%的重复率和只答不辨的态度双双过关.现在就是在家等着学校发毕业证了.顺带学学驾驶...可是我这么一个喜欢折腾的人,怎么能够让自己接受这么无聊的咸鱼时光呢?因为这个寒假 ...
- DFS算法-求集合的所有子集
目录 1. 题目来源 2. 普通方法 1. 思路 2. 代码 3. 运行结果 3. DFS算法 1. 概念 2. 解题思路 3. 代码 4. 运行结果 4. 对比 1. 题目来源 牛客网,集合的所有子 ...
- kali2020.1修改root密码,以最高权限登录系统
普通用户权限登录系统 sodu su切换为root权限 passwd root 按提示输入密码 再次输入密码 更新密码 右上角点切换用户 root/xxxx 更改成功,下面公布操图片
- 通过vNode实现给列表字段打标签
问题 如何给列表数据打标签?类似下面这种样子 思路 数模转化(对接口请求回来的数据进行过滤标记,返回新的数据) 渲染新的数据模型 实现 1.过滤数据,需要打标签的采用jsx写法 业务数据的处理我封装在 ...
- Kubernetes 控制器
在实际使用的时候并不会直接使用 Pod,而是会使用各种控制器来满足我们的需求,Kubernetes 中运行了一系列控制器来确保集群的当前状态与期望状态保持一致,它们就是 Kubernetes 的大脑. ...
- kube-scheduler 调度调优
文章转载自:https://www.kuboard.cn/learning/k8s-advanced/schedule/tuning.html kube-scheduler 是 Kubernetes ...