数美科技首席架构师陈建:基于云上弹性的高可用实时风控架构实践

简介: 2023年10月31日-11月2日,2023云栖大会在中国杭州·云栖小镇举行,北京数美时代科技有限公司首席架构师陈建在【CloudOps云上运维专场】发表了题为《基于云上弹性的高可用实时风控架构实践》的主题演讲,从在线实时风控架构及高可用解决方案等方向做了分享。


2023年10月31日-11月2日,2023云栖大会在中国杭州·云栖小镇举行,北京数美时代科技有限公司首席架构师陈建在【CloudOps云上运维专场】发表了题为《基于云上弹性的高可用实时风控架构实践》的主题演讲,从在线实时风控架构及高可用解决方案等方向做了分享。


陈建 北京数美时代科技有限公司首席架构师


以下是他的演讲内容整理。


本文大纲:

  1. 风控架构的设计
  2. 高可用技术架构的稳定性建设
  3. 如何借助云上弹性实现风控架构与高可用



数美科技成立于2015年,在过去八年一直专注于为企业客户提供风控服务,使用AI的技术帮客户真正去解决他遇到的业务风险和内容风险的问题,真正让客户专注于自己的业务发展。


一、风控架构的设计


首先,看一下数美科技的业务风控产品——天网,在这个产品之前先介绍一下数美科技是怎么定义我们要解决的业务风险问题,因为业务风险的范围非常大。



数美科技解决的是哪些业务风险?举个例子,以互联网的C端APP为例,整个互联网的C端APP在整个产品生命周期主要专注于用户的获取和运营,那势必会做流量推广、用户注册激励、活动激励等运营工作,这里的成本是很高的。但是这些钱有没有花在刀刃上、有没有带来相应的转化和相应的收益?互联网上有一批人叫黑产,它会提供虚假的流量、虚假的用户、低质的用户去薅取大量运营费用,导致大量的钱都白花了。那数美科技的天网就是解决这个问题,我们去识别虚假流量、虚假用户、低质用户,让客户的运营成本、钱真正地花在实处。


天网产品的使用其实非常简单,提供了一个API接口,客户只需要把注册等行为推送给数美,数美就可以通过用户以及用户的行为综合识别,区分虚假用户、低质用户和正常用户,并把这个结果反馈给企业,企业就可以根据这个结构进行决策,就可以选择把钱分给正常用户,大大提升运营转化效益,这对很多互联网客户是有很大的收益。



再来看内容风险。


比如,内容的爬取也是很多风险的,那内容风险是什么?企业如果在自己平台有内容,内容带来的监管类风险以及内容的平台氛围风险,如果我们不对内容进行风险管控,企业的运营会受到极大的影响,企业的平台氛围或平台的质量,也会有比较大的下降。比如,平台APP上只有几百万用户的时候,你会发现上面全是广告,那用户的体验是很差的,数美的天净产品就是为了解决内容风险的问题而推出的。内容风险有三个特点:


  1. 支持全媒体格式的识别。从最基础的文本、图片到音频文件、视频文件、音频流、视频流都是要支持的。
  2. 支持全行业、全风险内容的覆盖。内容风险本身是一个很难定义的,比如,这幅图是色情图,那色情它分很多档,它的风险定义是非常清晰的,数美通过定义的上千种业务标签去将所有内容的风险做了清晰的定义,这样客户就可以针对不同的风险做非常细粒度的控制。
  3. 不同行业、不同场景管控力度不同。同一个风险在不同的行业、不同场景,管控的力度是不一样的,我们需要客户在不同的场景下可以灵活配置内容管控,这些能力是天净和天网能提供的。


总结来说,天网是做用户和用户行为的识别,天净是做内容的识别,那么如何使用一套统一的架构比较优雅、高效的去支撑所有的产品,这是风控架构设计需要考虑的第一个问题;其次,大部分客户来自于互联网,互联网的特点是有很多热点、同时这些热点流量有很大不确定性,当流量发生突增的时候,我们如何保障系统的稳定性和可用性,这是面临的第二个问题。



对于”如何使用一套统一的架构比较优雅、高效地去支撑所有的产品“,这个架构设计在业界有一些标准的方法。第一看产品架构,第二看业务架构,先不看怎么实现,先看业务架构是什么样子,第三步才是技术架构。


业务架构的核心是能够清晰地定义业务对象是什么,做业务和内容的风险识别,核心对象叫审核对象,识别什么内容,有很多包括用户、内容和不同形式的,再往下深究会发现真正审核的就是四种:第一,是文本片段,给一个片段,它有没有问题;第二,是图像,图像不是图片,图像是视觉的图像,图像也没有问题,他是色情还是某个人物;第三,是音频的片段,有没有特殊的形式;第四,是行为。最后,会发现所有的内容识别对象最终会归类到这四类,只有把这四类做好之后就可以做各种不同的组合和聚合。


第二类叫基础产品对象,以图片为例,图片是可以看到图片是带有文字的,所以会把它拆分出来一部分到文字对象,同时图片一定要有图像,图片是由文字和图像组成的。再看一个音频文件,它是由音频的片段以及音频里面AI的文字来组成的,列了更复杂的叫复合类的产品,它是基础产品对象组合。


PPT里可以看到融媒体里会存在音频文件、视频文件、文本、图片,视频文件里面又有节帧、又有音频片段,节帧里会有图像会有文字,会有音频片段的文字,可以看到是很多、是纷乱复杂,通过这种层层的拆解发现就是三类对象,最复杂的是策略对象,其他都是组合,策略对象本质就是我给你策略对象,你告诉我有没有风险,再进一步抽象出两个对象来一个叫特征一个叫规则。


再举一个例子,当去识别图像是不是色情的时候,先产生模型特征,图像里面它的色情得分是多少,一般得分是零到一之间,这就是特征,叫模型特征。第二个,会产生规则,就是当图像特征中-色情图像特征大于多少的时候,返回或者认为这个图片是色情图片的这叫规则,所有的风险类型到最后全是特征和规则组合,通过这个就可以看到整个业务架构里面它整合对象和策略对象下面的细分,当我们做完这个业务对象的处理之后,就可以可以看到最后的架构是什么样子。



其实,风控架构就被很简单分为三层:


  1. 产品接入层,它做的是比如说限权、限流等通用服务,那下面叫PI image,就是每一个模块代表的是一个基础产品对象或者符合产品对象的实现。比如,以视频文件为例,它做的就是对文件的格式进行解析,把它解析出需要去识别的下面的策略对象然后把它调到下面就可以了,这是第一层。


  1. 策略层,它本质做的就是能够去对每一个策略对象识别出来它有没有风险,因为我们有只有四个策略对象,只有四个大框,每个对象里面主要可以看到叫AE开头叫advance engine高级引擎,它做的就是规则引擎的事情。BE开头的就是basic engine基础引擎,就是特征实现,还有一层做一些特征的编排,特征之间可能是有一种依赖的,策略对象也比较简单,就实现规则和特征就够了。


  1. 基础服务层,不管什么架构它都是通用的,一般是云提供的计算存储的资源以及服务的发现、日志采集等通用服务,因为它是比较通用的,它的稳定性、它的成本控制对整个架构的影响是非常大的,我们和阿里云这边配合得比较紧密,采用了非常多的技术,比如用Tair取代Redis MySQL,使用ESS去管理等,也大大地提高稳定性和降低成本,这就是整个风控架构的设计部分。


二、三大扩容方案应对流量突增,打造高可用架构


怎么去应对流量突增,去实现高可用?高可用的话题非常大,很多因素都会导致可用性的不足,我这里把这个话题限定在“怎么去很好地应对流量突增”。当遇到这个问题的时候,第一步还是做问题的定义, 流量突增可能想起来非常简单,但可以看到对象是分两个,一个叫产品对象、一个叫策略对象。



那到底我们要解决哪一个问题、解决什么的突增?其实产品对象和策略对象里面都会存在突增的问题,但问题是不一样的,产品对象可能是文本图片的QPS瞬间的上涨,音视频文件、音视频流是流速的快速上涨,它是比较薄的一层,他的问题不是很大,真正的问题在于策略对象的突增。


图里面大量的模块是在实现策略对象,策略对象的突增是我真正需要关注的,它决定了系统的稳定性。解决的是策略对象的流量突增的问题,第二个怎么定义已经解决了这个问题,直观上来就是不出问题,但是还是比较粗颗粒,我们把问题的解决目标做了更细的定义:


第一层,不出问题,不管你流量怎么突增,通过很好的集群容量管理,我都可以很好的把它化解。

第二层,如果真的发生了非常大的流量突增,它超过基础容量之后怎么能应对突增的流量,并且影响的时间尽可能短,通过自动扩充的机制能够把流量尽可能地恢复下来。

第三层,对于第二个层,有可能保证不了,可能确实有很多比如流量的限制做得不好或者说整个单机性能的预估不是很准。可能会到第三个情况,是模块确实产生了过载,它的性能遇到瓶颈了,怎么能保证最次兜底的情况下,也是可以保证不挂掉,就是它可以处理流量范围之内的流量,多出来的流量就把它丢弃掉,这里已经不能区分是突增的还是原有的,我们称为三个层次。



接下来分开介绍一下。


第一个,通过集群容量的管理来实现集群不受影响,列了几个对于这个目标非常有价值的模块,第一个非常符合常识,就是要有流量预测模块,它是根据历史的流量以及给客户冗余的承诺来去实时计算,这个容量应该是多少的问题。


第二个,计算出来之后怎么才能让集群容量达到真正的水位,这是第二个模块需要做的叫集群容量管理模块,它维护着系统里面每一个核心模块的能力、数量,它就可以计算出来当前这个集群到底实际上是多少容量。这是第一个数,第二个数同时知道我应该是多少,会触发自动扩容的机制,它会调用一个集群扩容模块来去实现这个模块的扩容来达到预期的集群容量。那这里有三个扩容方案来应对流量突增:


方案一:使用ESS自动扩容


早期模块部署大量的都使用ECS,并且是我们来进行管理的,每次去扩容的时候就需要自动买机器、自动初始化、自动安装模块、自动取服务,这个过程非常复杂并且非常耗时的,对于我们年轻人是非常的大的隐患,后面使用的ESS工具产品能够很好的去解决这个问题,这是第一个层次。



方案二:集群限流

本质上来讲如果是非常有钱的公司,可能不会到第二个阶段,我花了几倍的冗余就不会出问题。但实际上是不一样的,资源是有限的、能力是有限的,很多时候会出现第二种情况就是集群的容量不能够满足集群流量的突增,这个时候引入新的模块叫集群限流模块,它的核心是会实时计算出来每一个用户、每一个客户,他实时的QPS是多少,这是第一点;第二点,他可以推算出来实时的增量是多少,就是当真正出现这种集群流量不足的时候就可以很轻松地知道到底是谁产生了突增,那就会对产生突增的用户进行现金限流,这是第一步。


第二步为了进行后续的恢复还会触发扣除容量的机制,这个和上面是一样能够去快速的把人括起来,扩容的机制相当于我已经知道哪个客户突增了,突增了多少,那我会加一个阈值,加一个比例。可能是突增了三百,也可能会增加九百的QPS,突增出来了三倍,达到一个比较好的方法。


方案三:单模块扩容


这个第二个方法做得比较极致的话,很多问题也已经解决了。但是不幸的是,架构是复杂的,架构是很多时候是意想不到的,会有一个兜底的方法:

1. 当对某个模块的QPS预估不那么准确的时候可能会出现部分模块确实到了能力的极限,这个时候会触发单模块的过载保护,会丢弃超过自身能力的请求;

2. 它会触发单模块的扩容,这里的扩容和前两个场景有很大的差别,前两个场景都属于集群容量的扩容,第三个场景属于单模块的扩容,用的是ESS本身的扩容的机制来做的,也是非常好用的方法;除了本身模块会有过载保护之外会使用上游模块来去作为熔断的处理,确保不会持续地把某个模块压垮。


那经过以上三个方案之后,流量带来的稳定性问题基本就差不多解决了。



为了再走一步,做了更多的事情,因为前面是对单一集群的容量保护或者容量的管理,会增加跨集群的流量调度,当流量过来之后会把它分发到多个集群让多个集群来去同时释放这个流量,可以达到更好的效果,这些就是高可用做的一些解决方案。


以上是分享的内容,谢谢大家。



相关文章
|
7天前
|
存储 缓存 关系型数据库
社交软件红包技术解密(六):微信红包系统的存储层架构演进实践
微信红包本质是小额资金在用户帐户流转,有发、抢、拆三大步骤。在这个过程中对事务有高要求,所以订单最终要基于传统的RDBMS,这方面是它的强项,最终订单的存储使用互联网行业最通用的MySQL数据库。支持事务、成熟稳定,我们的团队在MySQL上有长期技术积累。但是传统数据库的扩展性有局限,需要通过架构解决。
49 18
|
21天前
|
搜索推荐 NoSQL Java
微服务架构设计与实践:用Spring Cloud实现抖音的推荐系统
本文基于Spring Cloud实现了一个简化的抖音推荐系统,涵盖用户行为管理、视频资源管理、个性化推荐和实时数据处理四大核心功能。通过Eureka进行服务注册与发现,使用Feign实现服务间调用,并借助Redis缓存用户画像,Kafka传递用户行为数据。文章详细介绍了项目搭建、服务创建及配置过程,包括用户服务、视频服务、推荐服务和数据处理服务的开发步骤。最后,通过业务测试验证了系统的功能,并引入Resilience4j实现服务降级,确保系统在部分服务故障时仍能正常运行。此示例旨在帮助读者理解微服务架构的设计思路与实践方法。
69 16
|
22天前
|
存储 消息中间件 小程序
转转平台IM系统架构设计与实践(一):整体架构设计
本文描述了转转IM为整个平台提供的支撑能力,给出了系统的整体架构设计,分析了系统架构的特性。
59 10
|
28天前
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
29天前
|
负载均衡 Serverless 持续交付
云端问道9期实践教学-省心省钱的云上Serverless高可用架构
详细介绍了云上Serverless高可用架构的一键部署流程
51 10
|
29天前
|
存储 人工智能 运维
面向AI的服务器计算软硬件架构实践和创新
阿里云在新一代通用计算服务器设计中,针对处理器核心数迅速增长(2024年超100核)、超多核心带来的业务和硬件挑战、网络IO与CPU性能增速不匹配、服务器物理机型复杂等问题,推出了磐久F系列通用计算服务器。该系列服务器采用单路设计减少爆炸半径,优化散热支持600瓦TDP,并实现CIPU节点比例灵活配比及部件模块化可插拔设计,提升运维效率和客户响应速度。此外,还介绍了面向AI的服务器架构挑战与软硬件结合创新,包括内存墙问题、板级工程能力挑战以及AI Infra 2.0服务器的开放架构特点。最后,探讨了大模型高效推理中的显存优化和量化压缩技术,旨在降低部署成本并提高系统效率。
|
17天前
|
监控 Serverless 测试技术
云端问道9期方案教学-省心省钱的云上Serverless高可用架构
本文介绍了省心省钱的云上Serverless高可用架构,主要分为两个部分:1. Serverless的发展历程、特点及高可用架构;2. SAE(Serverless Application Engine)产品介绍。Serverless作为一种云计算模式,让用户无需管理底层基础设施,自动弹性扩展资源,按需付费,极大提高了资源利用率和业务灵活性。SAE作为Serverless计算服务,提供了简便的应用部署、运维自动化、丰富的弹性策略和可观测性等功能,帮助企业降低运营成本、提升研发效率。通过极氪汽车、南瓜电影等客户案例展示了SAE在实际应用中的优势。
|
2月前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
3月前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
72 3
|
3月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####