1.为什么要做风控?

本文涉及的产品
云数据库 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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
SQL 运维 安全
闲鱼交易实时资损防控体系
聊一聊资损防控体系和闲鱼实践
4499 0
闲鱼交易实时资损防控体系
|
存储 SQL 缓存
京东物流实时风控实践
京东风控数据产品组架构师周文跃,在 FFA 实时风控专场的分享。
京东物流实时风控实践
|
定位技术
一文贯穿信贷反欺诈全流程
一文贯穿信贷反欺诈全流程
|
机器学习/深度学习 数据采集 SQL
关于互联网金融授信产品的风控建模
关于互联网金融授信产品的风控建模
关于互联网金融授信产品的风控建模
|
监控 安全 数据可视化
电商风控业务介绍
电商风控业务介绍
1835 0
电商风控业务介绍
|
算法 搜索推荐 数据处理
基于消费信用评估的风控
信用评估是被当前社会广泛关注的领域,特别是在金融行业,如果可以通过每个用户的历史交易数据以及用户画像数据确定用户的个人信用,将有助于银行设置个人借贷额度,确定潜在风险。本文将介绍在金融风控领域如何进行用户画像,使用什么样的算法可以计算出每个用户的信用指标。
1252 0
基于消费信用评估的风控
|
机器学习/深度学习 自然语言处理 算法
基于外卖评论的舆情风控
目前许多商家都有线上留言或者评论反馈平台,消费者可以在这些平台上通过留言表达自己对于消费商品的反馈。消费者的反馈包括表扬性的正向反馈,也有一些批评性质的负向反馈。商家需要掌握消费者对于产品的整体舆论取向来判断自己的产品质量是否符合消费者需求,同时了解评论内容可以方便商家分析舆论导向,指导下一步产品研发工作。
2392 0
基于外卖评论的舆情风控
|
安全 数据安全/隐私保护 UED
数据风控产品的介绍及应用
原作者:阿里云解决方案架构师,云帅。本文主要介绍阿里云的一款数据风控产品,可以快速实现验证码功能、防止数据被盗刷等。
2224 0