风控系统敏感词校验架构设计

2023-12-22 07:01

本文主要是介绍风控系统敏感词校验架构设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、写作背景

最近遇到一个需求是支持识别直播集合落地页用于广告投放,其实就是加一个规则配置。这里想到了自己经常联调的风控同学违禁词识别场景。和某明星塌房需要拦截关键词一毛一样。在联调之余有幸请教了风控的几位同学,再此学习了一下风控系统中敏感词校验的设计方案。

本文只讨论方案,不讨论技术细节。
本文只讨论方案,不讨论技术细节。
本文只讨论方案,不讨论技术细节。

方案要解决的关键点是

  • 实时生效。场景:张三塌房,需要对增量的文案流量过滤张三关键词。
  • 大量的关键词内存存储方案。场景:业务需求增多,关键词自然增多,很常见。
  • 快速匹配违禁词。场景:用户多,词多,自然需求

2、实现思路

2.1 HelloWord级别的敏感词校验

我们以下面的DEMO为例,从0开始**,一步一步的质疑这个方案,从而实现局部最优**。

DEMO逻辑为读取数据库全量违禁词存储到内存中,流量来了以后for循环处理,校验是否命中违禁词。

package cbeann;
public class App {public static List<String> forbiddenWordCache = cacheInit();public static void main(String[] args) {// controller 流量入口String input = "关注绿豆的《云服务小管家》公众号";for (String wordItem : forbiddenWordCache) {if (match(input, wordItem)) {// 命中某个规则System.out.println(wordItem);}}}public static List<String> cacheInit() {// 从数据库中查询违禁词集合List<String> forbiddenWordList = Arrays.asList("绿豆", "红豆");return forbiddenWordList;}// 匹配规则public static boolean match(String input, String rule) {// AIGC and 算法return true;}
}
2.2 实时生效解决方案
  • 重启方案不适合大系统
    对于上面的DEMO,实际上数据init一次以后就不会再加载了,如果数据中新增一个违规词,则只能通过重启服务,这个操作太重(大项目启动一次20几分钟)。

  • 定时任务方案无效查询多,时效性差
    实际上这种新增的场景并不是很多,所以我们可以搞一个定时任务,每几小时重新拉一下DB。这种方案也有一个弊端,如果周期小频繁查询全量数据,DB压力大,无效查询居多(基本不变);如果周期大我联调或者真生产环境要瞬间加违禁词,时效性差。

终极方案:新增或者删除以后【自动或者人工】感知到这种变更,然后变更通知到系统中的Listener,重新读取全量的数据。整体链路如下:

  1. 项目启动加载全量违禁词
  2. 运营添加删除违禁词
  3. Canal中间件捕捉变更
  4. 通知变更。发送MQ广播消息是让所有机器都能消费;自动修改配置中心让其触发Listener;或者发短信让开发人员触发Listener
  5. Listener更新缓存。这里要注意,因为是集群,此时会同时发送大量的慢SQL,要在Listener加随机数防止打挂DB。

在这里插入图片描述

2.2 大量关键词存储方案

首先明确一点,这些违禁词一定会存储到内存里,因为你需要for循环呀。

但是随着业务的增长,必然会存在大量的违禁词,此时都存内存必然放不下。所以切片
当一个流量来了以后,此时会把这个流量分配给多个POD节点,最后在主节点进行聚合,从而实现大量关键词存储内存中的解决方案。

那么切片的规则是什么?看下面的快速匹配违禁词
在这里插入图片描述

2.3 快速匹配违禁词

Trie 树(前缀树)可以用于高效的解决关键词匹配问题。上面的切片规则可以根据开始的第一个字进行切分
详情可参考Trie 树原理及其敏感词过滤的实现

3、总结

  • 整个链路可以不实现,但是方案要完整;系统可以不用,但是要做。两句都对
  • 数据结构还是有用的,此处使用了Trie 树(前缀树)
  • 真实的设计方案,场景可遇不可求

这篇关于风控系统敏感词校验架构设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/523002

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

校验码:奇偶校验,CRC循环冗余校验,海明校验码

文章目录 奇偶校验码CRC循环冗余校验码海明校验码 奇偶校验码 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数就称为数据检验码的码距。 奇偶校验码的编码方法是:由若干位有效信息(如一个字节),再加上一个二进制位(校验位)组成校验码。 奇校验:整个校验码中1的个数为奇数 偶校验:整个校验码中1的个数为偶数 奇偶校验,可检测1位(奇数位)的错误,不可纠错。

[Linux Kernel Block Layer第一篇] block layer架构设计

目录 1. single queue架构 2. multi-queue架构(blk-mq)  3. 问题 随着SSD快速存储设备的发展,内核社区越发发现,存储的性能瓶颈从硬件存储设备转移到了内核block layer,主要因为当时的内核block layer是single hw queue的架构,导致cpu锁竞争问题严重,本文先提纲挈领的介绍内核block layer的架构演进,然

风控系统之指标回溯,历史数据重跑

个人博客:无奈何杨(wnhyang) 个人语雀:wnhyang 共享语雀:在线知识共享 Github:wnhyang - Overview 回顾 默认你已经看过之前那篇风控系统指标计算/特征提取分析与实现01,Redis、Zset、模版方法。 其中已经介绍了如何利用redis的zset结构完成指标计算,为了方便这篇文章的介绍,还是在正式开始本篇之前回顾一下。 时间窗口 zset

web登录校验

基础登录功能 LoginController @PostMapping("/login")Result login(@RequestBody Emp emp) {log.info("前端,发送了一个登录请求");Emp e = empService.login(emp);return e!=null?Result.success():Result.error("用户" +"名或密码错误");

系统架构师考试学习笔记第三篇——架构设计高级知识(19)嵌入式系统架构设计理论与实践

本章考点:         第19课时主要学习嵌入式系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分)。在历年考试中,案例题对该部分内容都有固定考查,综合知识选择题目中有固定分值的考查。本课时内容侧重于对知识点的记忆、理解和应用,按照以往的出题规律,嵌入式系统架构设计基础知识点基本来源于教材内。本课时知识架构如图19.1所示。 一、嵌入式系统发展历程

spring数据校验Validation

文章目录 需要的依赖创建校验对象Validator 需要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency> 创建校验对象Validator 测试的实体类 //创建实体

spring项目使用邮箱验证码校验

本项目采用免费QQ邮箱验证码方式进行登录安全的校验。 前期工作 申请邮箱安全授权码 打开QQ邮箱官网点击设置 进入设置页面后点击账户按钮  进入账户后一直往下拉页面找到POP3服务栏,然后点击管理服务(如果没有开启服务需要先开启服务,按照邮箱提示操作即可) 进入管理服务页面后如果没有授权码,点击生成授权码,如果有即可进入授权码管理页面查看。 授权码过一段时间会自动过期,需要重

系统架构师考试学习笔记第三篇——架构设计高级知识(18)面向服务架构设计理论与实践

本章考点:         第18课时主要学习面向服务架构设计理论与实践。根据考试大纲,本课时知识点会涉及单选题型(约占2~5分)和案例题(25分),本课时内容偏重于方法的掌握和应用,根据以往全国计算机技术与软件专业技术资格(水平)考试的出题规律,概念知识的考查内容多数来源于实际应用,还需要灵活运用相关知识点。         本课时知识架构如图18.1所示。 一、SOA的相关概念 (