1.为什么要做风控?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 目前我们业务有使用到非常多的AI能力,如ocr识别、语音测评等,这些能力往往都比较费钱或者费资源,所以在产品层面也希望我们对用户的能力使用次数做一定的限制,因此风控是必须的!

1.为什么要做风控?
这不得拜产品大佬所赐

目前我们业务有使用到非常多的AI能力,如ocr识别、语音测评等,这些能力往往都比较费钱或者费资源,所以在产品层面也希望我们对用户的能力使用次数做一定的限制,因此风控是必须的!
2.为什么要自己写风控?
那么多开源的风控组件,为什么还要写呢?是不是想重复发明轮子呀.
00.png

要想回答这个问题,需要先解释下我们业务需要用到的风控(简称业务风控),与开源常见的风控(简称普通风控)有何区别:

01.png

风控类型目的对象规则业务风控实现产品定义的一些限制,达到限制时,有具体的业务流程,如充值vip等比较复杂多变的,例如针对用户进行风控,也能针对用户+年级进行风控自然日、自然小时等普通风控保护服务或数据,拦截异常请求等接口、部分可以加上简单参数一般用得更多的是滑动窗口
因此,直接使用开源的普通风控,一般情况下是无法满足需求的
3.其它要求

支持实时调整限制
很多限制值在首次设置的时候,基本上都是拍定的一个值,后续需要调整的可能性是比较大的,因此可调整并实时生效是必须的

二、思路
要实现一个简单的业务风控组件,要做什么工作呢?
1.风控规则的实现
a.需要实现的规则:

自然日计数
自然小时计数
自然日+自然小时计数

自然日+自然小时计数 这里并不能单纯地串联两个判断,因为如果自然日的判定通过,而自然小时的判定不通过的时候,需要回退,自然日跟自然小时都不能计入本次调用!

b.计数方式的选择:
目前能想到的会有:

mysql+db事务
持久化、记录可溯源、实现起来比较麻烦,稍微“重”了一点
redis+lua
实现简单,redis的可执行lua脚本的特性也能满足对“事务”的要求
mysql/redis+分布式事务
需要上锁,实现复杂,能做到比较精确的计数,也就是真正等到代码块执行成功之后,再去操作计数

目前没有很精确技术的要求,代价太大,也没有持久化的需求,因此选用 redis+lua 即可

2.调用方式的实现
a.常见的做法
先定义一个通用的入口
//简化版代码

@Component
class DetectManager {

fun matchExceptionally(eventId: String, content: String){
    //调用规则匹配
    val rt = ruleService.match(eventId,content)
    if (!rt) {
        throw BaseException(ErrorCode.OPERATION_TOO_FREQUENT)
    }
}

}
复制代码
在service中调用该方法
//简化版代码

@Service
class OcrServiceImpl : OcrService {

@Autowired
private lateinit var detectManager: DetectManager

/**
 * 提交ocr任务
 * 需要根据用户id来做次数限制
 */
override fun submitOcrTask(userId: String, imageUrl: String): String {
   detectManager.matchExceptionally("ocr", userId)
   //do ocr
}

}
复制代码
有没有更优雅一点的方法呢? 用注解可能会更好一点(也比较有争议其实,这边先支持实现)

由于传入的 content 是跟业务关联的,所以需要通过Spel来将参数构成对应的content

相关文章
|
SQL 运维 安全
闲鱼交易实时资损防控体系
聊一聊资损防控体系和闲鱼实践
6459 0
闲鱼交易实时资损防控体系
|
Linux 网络安全
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
|
存储 缓存 算法
内存系列学习(四):Cache和Write Buffer一般性介绍
内存系列学习(四):Cache和Write Buffer一般性介绍
891 0
|
10月前
|
物联网 开发工具 Android开发
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS产生的背景
HarmonyOS是华为自主研发的分布式操作系统,旨在应对美国“实体清单”带来的技术封锁。2019年首次亮相,它不仅支持手机、平板等多终端设备,还通过统一的软件系统解决了不同设备间的体验割裂问题。HarmonyOS强调全场景智能互联,提升设备间的安全性和协同能力。其商用版本基于OpenHarmony开源项目开发,而HarmonyOS NEXT则是去除了AOSP代码的纯自研版本,代表了未来发展方向。
478 12
|
安全 Linux 数据安全/隐私保护
忘记CentOS 7.7 root密码?别慌,一招教你轻松解决!
对于系统管理员来说,密码是保护系统安全的第一道防线。但在实际操作中,忘记密码的情况难以避免。如果忘记了CentOS 7.7的root密码,可能会无法执行一些需要root权限的重要操作,因此学会如何在忘记密码后重置变得尤为重要。
忘记CentOS 7.7 root密码?别慌,一招教你轻松解决!
|
Java
java 文件上传 :MultipartFile 类型转换为file类型
java 文件上传 :MultipartFile 类型转换为file类型
373 9
|
机器学习/深度学习 人工智能 安全
云上智能风控:重塑金融安全的智能屏障
灵活性:系统具备良好的灵活性和可扩展性,能够根据业务需求进行功能扩展和升级。 成本节约:通过自动化和智能化的方式降低人工成本,提高风控效率的同时减少不必要的开支。 4.2 未来展望 随着技术的不断进步和市场的不断发展,云上智能风控将迎来更加广阔的发展前景。未来,云上智能风控系统将进一步优化算法模型和技术架构,提高风险识别的准确性和效率;
564 7
钉钉回传中文信息乱码怎么处理?
钉钉回传中文信息乱码怎么处理?
913 0
|
存储 关系型数据库 MySQL
【MySQL】MySQL表设计的经验(建议收藏)
【MySQL】MySQL表设计的经验(建议收藏)
3683 3
【MySQL】MySQL表设计的经验(建议收藏)
|
存储 设计模式 SQL
实体类(VO,DO,DTO,PO)的划分
实体类(VO,DO,DTO,PO)的划分
1229 0