00:00
刚才我们给大家把那个数据的准备咱们完成了,那接下来呢,我们准备开始来做需求一了,需求一叫广告黑名单,那这什么意思呢?咱们来看看,实现实时的动态黑名单机制,将每天对某个广告点击超过100次的用户拉黑,这个是什么概念呢?是因为啊在咱们很多的网站当中啊,都会投放一些广告,而这些广告啊,他点击的时候啊,会产生一些利益,所以有些我们的用户啊,他会恶意点击。对吧,刷流量啊,或者说呢,对这个竞争机构的广告呢,做恶意点击,这都是有可能的,所以我们要屏蔽这样的一些用户,那所以呢,我们要判断一下某一天啊,这个用户对这个广告他的点击数量,它超过了一个阈值,这个阈值超过之后,我们就要发出警报,或者把他拉黑,不让他做其他处理,所以这就是我们广告黑名单的概念,那么他说了,将黑名单保存到my circleql当中,首先第一个你之所以保存到MY蛇口,是因为它是一个第三方的存储,那么我们的黑名单不仅仅在咱们当前场合会用,你在别的场合也会用得到这第一点,第二点呢,其实啊,咱们存储到red里面可能会更合适一些,因为它的访问会快一些,对吧,但是我们现在还没有学red,所以我们的这个买circle呢,我们先给它存进去,这是我们的第二个原因啊,所以呢,我们实现这样的一个功能,好吧,同学们,那我们光这么说呀,大家可能不太明白说诶这个到底该怎么做,可能没有什么思路,我们给大家画一个图。
01:34
来明确一下它的一个实现步骤好不好,同学们来。呃,咱们现在假设呀,我们现在数据在源源不断的过来,对吧?来咱们源源不断的过来,所以我们这边就拷贝了,咱们拷贝来复制,复制以后来比方说这就是我们的数据啊,在源源不断的过来,那么你源源不断的过来之后,那么我们应该对它进行统计,对不对,这个没错吧,哎,就是这样,所以呢,我们现在呢,这边诶就有一个采集的周期啊,采集的周期比方说我们三秒啊或者五秒,这都无所谓,咱们写个五秒啊都可以啊,OK,放这边,放这边以后,那这个五秒钟的数据被采集到以后,咱们该干嘛呀,是不是我们应该判断一下你当前里面的数据的聚合结果,你的用户大家看一下,在这里来拿过来以后,现在我们里面应该保存什么样的数据呢?是不是应该保存我们所谓的那个叫做某一天啊,咱们叫做什么呢?比方说2010年啊,10月10号。
02:35
对位同学们,我们应该保存在某一天,那某一天什么东西啊,某一天啊,咱们的某个用户,比方说张三,然后呢,他点击了A广告,他点击的比方说20次,那这个数据我是不是应该拿到,那么你拿到以后你该干什么,我判断一下就这个数据有没有超过他的阈值,对不对,我应该是这样,还有一个问题,你数据来了以后,那如果你这个本来就是黑名单的话,我们是不是就不应该再去做操作了,所以啊,这里还分两种情况,什么两种情况呢?我要看看你的这个张三啊,在不在黑名单当中,如果在黑名单当中,我是不做统计的,所以咱们这个还不能先做这个事情,所以同学们看啊来。
03:18
所以我们先往上放,这个呢,应该是我们的一,它表示是这个概念啊,然后干什么呀,我们在这里给它来,嗯,我看看啊。呃,我们给它加上一些小图标吧,这个小图标当中,我看我确认一下这里面有没有那个DB的这个操作啊,咱们来数据库的概念,嗯,来咱们这诶有一个,所以把这个放过来啊,给它点击它,嗯。好了,把这个呢,我们诶看看啊哦,这个放到这儿了是吧。那我现在呢,去这里面我们找一下吧,DV啊在这儿好翻过来,翻过来以后就意味着我现在咱们的这个我不要了,这个我不要了,嗯。把这个呢,给它去掉啊,给它去掉好,然后呢,我的箭头应该怎么办?我的箭头是不是应该访问咱们这边对不对,所以来啊,我们写上咱们叫做判断啊,来协商咱们叫判断我们的用户他是否在黑名单中,黑名单中那么你判断我们是否在黑名单中,就有两种情况吗?哪两种情况呢?第一种就是我们在,第二种就是不在,那如果你要是在的情况下,那还说啥呢?你这个数据就直接给他filter过滤掉了,对不对,所以啊,我们数据就没了啊,数据就不会往下走了啊,所以呢,我们这里来啊,咱们放过来放这边,然后呢,我这边再来一个图标,我看看有没有那个过滤的这个概念啊,咱们来挨着这field。
04:42
在这里呢,我们就给它加上一个啊,加上一个fer的概念,就意味着我们要判断,所以我觉得咱们是不是在这儿会好一些呢?来啊,把这个箭头我放到这边啊,往这边OK,给它放到这里啊,我们做一个field的一个处理,那这个field呢,我们就判断用户在不在黑名单当中了,那如果要是不在的话,那你就过滤过来了吧,对不对,所以我们的箭头就可以继续往下走了啊记住了,同学们,是我们当咱们在这里也做一个补充吧,在这里面做一个文字上的说明啊,说明来放到这边就是我们的用户啊,来,他不在黑名单中,黑名单中啊,你不在黑名单当中,你才可以继续往下走,对不对,哎,就是这个意思啊,那好了,那你再往下走的话,你当然就可以做聚合了,所以咱们这里用绿色来表示对不对,那好了,那这个时候有一个问题了,你当我们的用户他不在黑名单当中的话,你的这个20的统计结果有没有超过阈值,你是不是也。
05:42
也要做判断呢,所以我们这里又有分支了,诶所以咱们又要做过滤了,对不对,诶又要做过滤了,所以把这个箭头呢,给它放过来啊,放过来那么你要做什么样的操作呢?我们这里说一下来拷贝,咱们叫做判断啊,判断我们的这个用户啊,他的这个点击它是否超过阈值,那么你超过阈值呀,就一种情况啊,比方说你超过了20呀,100之类的,那么这时候你应该直接干嘛呀,把它更新到数据库当中去拉入黑名单啊,我们这里写上啊翻过来,嗯。
06:17
好给它放到这里,哎,放到这里啊。行,我们写上啊来,如果超过啊我们的阈值,那么需要拉入黑名单,黑名单没问题吧,同学们,这是我们现在需要做判断的,那如果呀,对于我们来讲,那如果你没有超过阈值对不对,那该怎么办?你记住你没有超过阈值,那是因为啊,你在当前的这个时间点太少了,比方说五秒,你五秒钟,你除非一些机器人程序以外,你一般是手动点的话,是很难超过对不对,所以这个时候啊,它确实是有可能超过不了的,那么你超过不了的话,可是咱们需求当中,大家看一下是不是每天呢,那么你每天的话,是不是意味着你要去做汇总啊。
07:02
什么意思?你要汇总,你要把咱们这一天当中的每一次点击都给它统计下来,所以说这里应该有个状态的概念,还记得吗?有状态,哎,老师那就简单了,咱们之前不是讲过吗?咱们又有个检查点吗?哎,那个检查点不行。因为检查点呢,有个问题什么呢?它会产生大量的小文件,为什么呢?它是以天为单位的,以某个广告为单位的,所以在这种情况下会产生大量的小文件,就不是很合适了,所以我们这里呢,也把咱们的这个统计放在买SQL当中啊,所以他们看来把这个放过来拷贝,拷贝过来以后什么意思呢?就是我们的数据啊,我们准备要跟我们的买蛇口做交互,来做一个我们的诶更新,把状态更新啊,那么更新啊,我们叫每天啊,我们用户的点击数量好了,那么你更新完成以后,这时候我要判断你更新的买S的数据有没有超过阈值,所以这个时候呢,给他来一个蓝色啊,OK,咱们接着往下,往下以后干嘛呢?咱就得在这儿了。
08:09
因为你更新完成以后,大家想想我是应该取得最新的呀,所以写上啊,咱们叫获取啊,咱们叫获取最新的,我们叫做点击数量,因为你是每五秒嘛,那你每五秒的话,那我要看最新的这个点击数量是多少,对不对,那这时候比方说就不是20万,比方说120,那么一百二的话,那如果超过预支怎么办呢?所以要用红色来表示,表示是有问题的,那么有问题的话,那你不又要拉入到黑名单当中了吗?所以来把这个再拉回到我们黑名单当中去,所以啊,应该是这么一个过程,嗯,好,把它放过来。行了,我们写上啊来,如果我们叫超过阈值,我们的用户拉入到黑名单中,所以大家可以看到,我们现在要做的其实就是这样的一个功能,其实就是一个预警功能和监控功能,那么我们从最开始采集完数据之后,我们要先判断你的用户在不在黑名单当中,如果在黑名单当中,我们没有统计的意义,对不对,那好,那如果你不在黑名单当中,那么你当前的这个聚合的结果有没有超过预值,如果超过预值了,不说别的,直接拉入到黑名单,对吧?
09:24
那好,那如果你没有超过预支的话,那我就把每天的数据啊给它更新一下,更新完了以后,判断你更新后的数据有没有超过预支,如果超过预支也要把它拉入到黑名单当中,对不对,所以啊,这个我们的数据表啊,就是这个表我们就写上它叫黑名单,它叫黑名单咱们用一个我们的字体稍微变大一些,然后颜色标红一下,醒目一些啊。这个呢,我们给它放过来,然后这个呢,我们拷贝,诶拷贝放过来,这个呢,就是我们的统计啊,咱们叫统计表,哎,就统计表好了,这个图大家能不能看懂,能不能知道它的一个大概的思路啊,就是这样的啊,从上往下挨个捋就行了,我们这边有一个箭头嘛,往下走,往下走,往下走,哎,就这么一个过程啊好,这个如果大家先不明白的话,没关系,我们一边写代码呢,我们回一边给大家再梳理这个过程啊。
我来说两句