00:00
呃,那么接下来呢,我们要对它做一个。测试对吧?呃,测试呢,它的数据来源于这个。三个一个配置log主题,一个UV一个ug对吧,那这个还真不好写了啊,那咱们呢,可以这样玩啊呃,咱们呢,Facelog把这个拿过来。啊,被这个肯定要对吧,这是第一个啊,然后接下来呢,是我们的。呃,流量域,流量域啊,然后呢,流量域在这对吧,邮件啊邮件拿过来。往那放,还有个UV,对UV拿过来。这是三个数据流对吧,这三个数据流啊,咱们接下来呢,从这个位置这里边儿消费配置log,这里边的消费U界消费UUV,对吧,从这三个里边呢,去消费这个数据,那同理程序呢,咱们也一样,对吧,我也拿一下啊。
01:15
嗯,啊,这个已经有了,这个就不要了啊ug。拿过来啊,因为他有三个理由,那没办法对吧,啊,咱也不想这样搞这么复杂啊,呃呃,实在没办法。好。那接下来呢,这个东西我在这儿写一个。对吧。这样写啊,他呢在经过一个link。APP将数据写到哪可以号是吧。House对吧,好,当然呢,这个是我们的DWS,好好,那这边从程序的角度来说呢。
02:03
咱们是结合这三者对吧,这个。是他,然后呢,往克里奥去写,克里奥呢,依赖于这个ZK,咱们这样写可以吧,因为它确实它来自于多个主题啊,没办法。对吧,那这个配置log主题吧,然后呢,呃,UVU界主题啊,那一样的,诶U界UV对吧?然后这个呢,是原始的,我们要开的东西呢,那重复的你不用说,哎,那不是开三次不不用啊封了嘛,开一次就够了,对吧,重复要开一次啊,所以我们要开的东西我们就清楚了,这样的话我们才好做测试,对吧?那首先呢,呃,集群当中的环境我检查一下,我好像把那个有没有关掉,没关F1这个东西都有行为数据,业务行为数据的。这个服务端都是开的对吧,那你看嘛,呃,这里边ZK卡夫卡F1。对吧,啊,那所需要的呢,就是。服务端ZK卡夫卡F1。
03:01
克见表都见了,克号也是开的对吧,没有问题,接下来呢,就是四个程序贝U界UV加自己没毛病吧,啊这种呢,你一定要去写一写,你要不写你容易搞乱了。对吧,你要不先梳理这个东西,你就很容易搞乱了,能能明白吧,对吧,所以呢,我们先开。Baseball。啊,那他呢,肯定是老大对吧,所有的东西都依赖于他,你看无论哪个都依赖于他对吧,然后呢,是UJUV这两个无所谓,他俩平级的对吧?好UV我打开啊。这个可能会有一点数据啊。他可能会有一点数据,因为我们早上造了一点数据嘛,我想想看会不会有,无所谓了吧,有就有吧。有的话我们大家停掉啊,给它停掉对吧,停掉之后呢,我们重新去造这个数据啊,你看果果不其然嘛,因为这里边呢,因为之前有残留数据,我们消费者组没换嘛。
04:01
对吧,因为咱们的消费者组没换啊,所以呢,他会有这个残留数据,那就无所谓了,对吧,我我把它停掉重新开一下啊。我就把这个残留的数据呢,全部消费掉,把它停掉开一下。啊,这个无所谓,这个项目我们刚开的对吧。UVUGOK啊呃,那么接下来呢,是他自己啊,他自己对吧,这个程序无所谓,因为它里边这个东西呢,是我们下午才写的,这个消费者组没用过,他肯定从最新的开始消费,对吧,从最新的开始消费啊,那就无所谓了,那这人呢运行啊。好。呃,那么接下来呢,我们就要等着,这边都起来等它不报错啊,这个东西我们第一测还搞不好可能会报错对吧?好,那我们就稍微多等。一会啊呃,现在应该差不多了,那么咱们呢,去造数据啊呃,这里边注意啊,这个邮界数据是不是难出来啊。
05:04
注意邮件数据是比较难出来的啊,那咱们呢,就可能得多造几次对吧。Lg.S。走,你。好,那么baselog呢,它肯定就直接来数据了,这个也没有什么开窗乱七八糟的,对吧?UVUV呢,呃,M mid呢一直在变,但是这个数据量比较大,就不太好看了啊,所以我们当时是单独测的,但是我们呢,这边只要你造够多,它呢会打印很多,因为我那个mid设置的数据量比较大。然后接下来就是邮件啊,邮件呢比较难出,这个确实当时我们测的时候,它确实就是比较难出对吧?啊,这个没毛病啊好,那这边呢就有数据了,那当然这里边儿,呃,这个UV有的是零啊,这个很正常吧,对吧,关键在于此时U界应该都是零对吧,因为咱们U界呢没有数据栏啊,所以呢,你看啊,我们这样看CTRLC。
06:00
这个总共有192条数据,对吧,那我在搜ug等于零的数据,CTRLCCTRLF,它也是192条,说明确实都是零,没问题吧,因为你这边没有数据嘛。对吧,没有数据,所以呢,大家都是零啊,这个倒没有问题吧,好192条是吧,呃,看还有没有啊。好像没了,这次造的数据好像就结束了,对吧,那我们接下来看这边啊。192条有点多,那咱们呢,就来的抗心就得了,对吧。而且12个字段也不利于看啊,From。这张表啊啊,192条对吧,看啊走192条数据呢,也没丢,那没问题对吧,目前来说呢,一切都在掌握之中,我们接下来只需要去干一个什么事,把这个优界数据造出来,然后呢,看这个优界数据有没有就行了,对吧?好,那这个呢,我们也多造一次,为什么。因为ug数据呢,那个CT咱们是不是要超时啊,对吧,也得要这个十秒钟啊,也得要十秒钟对吧。
07:10
哎,这边呢,有一个啊,这边有一个,但是你光一条它不够啊,因为有可能这一条呢,嗯,这个窗口还没来得及关,对吧,你说过来了,他窗口没来得及关啊,那我们呢,等这个批次造完,造完之后呢,我再造一个批次,我来看这里边有没有这个。邮件数据啊。现在452条。U界数据还是一条,这个确实就比较少啊,那毋庸置疑对吧,它比较少,这个时候呢,你看啊,452条,我们再来看优界等于零,这个时候呢,肯定还是452,对吧?就像我说的,那你这个U界数据虽然产生了,但你要往下游传,下游呢是开窗聚合,那很有可能你这条数据啊,刚来的对吧?嗯,你所在的窗口没有关闭,是不是有可能啊,对吧?所以呢,我们说化之际让他过个十秒钟。
08:04
啊,让他稍微过个十秒钟,接下来呢,咱们再来。造一个批次数据来看一下这个邮件到底它能不能。被看到,我们的目标是什么呢?就是说我必须至少要看一个U界等于一,对吧,因为你这边已经有数据了,那我至少得看一个U界等于一,我才肯罢休。啊,其他数据你看啊,呃,PV有的吧,然后呢,嗯,SVUV是零你看啊UV,呃,我来看啊UV有没有。UV越往后啊,等于零的越多。等于一。UV等于一的118条,等于二呢有25个,看见没?等于三呢也有三个对吧?等于四可能就比较少了啊,只有两个等于五呢啊,等于五就没有了啊,一次里边UV,那UV有数据对吧?啊那呃,PV能看到during some有啊然后呢,SVSV找一个SV有了。
09:03
对吧,等于一的,那目前来说呢,只有邮界没看到啊,那虽然它是正常现象吧,因为它数据量比较少,但是呢,有没有可能你邮界永远都是零的,有这种可能性吧,对吧,这万一你写的有问题呢?所以呢,这个时候为了确保啊,至少我们再看一下它等于一才可以啊,我再造一次。看看这边有没有数据,好像没有对吧。诶,又来了一条。啊,又来了一条,而且它俩之间差值可大了啊,这是七九,你看这是这是多少九二。对吧,这可不止差了十秒,那按道理来说,这条数据都能输出的话,对吧,那这个窗口所在窗口是一定关了,对吧,所以按道理来说,那就算这条数据。他呢,发出去它所在的窗口没有关闭,那不管怎么说这一条数据,它所在的窗口也一定关闭了。
10:03
有没有问题?能理解我在说什么吗?就是你这条数据都来了,那这条数据发送到下游,被这个消费到它所属的窗口是不是一定就关闭了,因为他俩之间怎么样,这是七九,这是九二。对吧。好,那我们去下游看啊,首先。So ctrl c ctrl f总共呢,679条数据啊,我让他不变啊,应该就没有数据打印了,看见没。这边呢,应该是没有数据了,679条啊,首先看一下这边。679没有问题对吧,数据呢也没丢啊,挺好的啊,那我们总共679条数据,接下来我们找ug等于零的,看有多少条,那如果是678条是不是就对了。
11:02
如果是679怎么办啊?有没有想过这个问题?看完了,毁了。注意看这个数字啊,Ug等于零六百七十九条,我总共呢。也是条,说明什么问题?说明这个数据丢了。说明这个数据他到下游丢了啊,不知道什么时候丢的,反正消费反正我能写出去对吧,这边打印了。写出去了。但是呢,你下游窗口里边肯定没有这个数据,如果有了,那你邮界肯定是一对吧,好,那有的人说是不是你这个代码这块写的有问题,我给你看啊呃,我们消费优借数据,你看邮借给了一。对吧,好,那给点时间,大家可以思考一下,这个是由什么原因导致的呢?
12:00
那我只有一条邮件数据的时候,我可以说这条数据输下去以后,它所在的窗口没有关闭,但是。我呢,又重新造了一堆数据。对吧,我又造了一堆数据,我确保第一条数据它所在的窗口已经关闭了,我再去看它还是零,它还都是零。我们应该怎么解释呢?这个问题。该怎么解释呢?嗯。我之前的数据到齐了是什么意思?什么叫word数据到之前的数据到齐了。
13:05
能不能说的明确一点。那我输就输下去了,为什么你这个窗口不带我玩啊。对吧,为什么你这个窗口不带我玩啊。对吧,为什么我这个窗口里边没有包含这条数据呢。那正常来说,我至少得有一个优界等于一的数据啊,对吧,你得有一个呀,至少对吧,我这边优界我都产生了两条数据了,我这条就像我们所说的,他可能呢,是他所在的窗口没有关闭,因为它是最后一条嘛,对吧,刚来那你呢,你看这里边是不是还有一个窗口没有出来呀。是吧,还有一个窗口数据啊。对吧,没有出来,那这条我就忍了,但这一条不管怎么说,他说下去,他窗口肯定已经肯定。
14:03
关闭了呀,因为你这个是79对吧。这个是92,你肯定都关闭了呀。那我该怎么理解呢,这个东西。你应该怎么解释呢,这玩意儿。有没有同学能想明白这个问题?有没有同学能想明白这个问题?想不通是吧?啊,那我们来说一下,我们来说一下这个不太好想啊,如果说你们自己想的不太好,想好,那我们梳理一下整个数据流好吧,首先呢,咱们是Mo数据。
15:02
Mo到这个log当中啊,我们就不聊这个了,我们直接呃,然后呢,用f fe from采集数据到哪到topic DB对吧。啊,他这个log啊,不是DB啊,什么什么DB的对吧,接下来呢,我们用一个base log ABB消费这个数据,分成五个主题对吧,但实际上呢,我们当前需求只用到一个主题,哪个呢,就是配置logo主题对吧。我们是不是只用到了配置logo主题啊?好。那比如说我现在呢,有一条数据啊来了对吧,好,那我把数据流再画完啊,然后接下来呢,下游啊,由谁的由谁去消费。有很多人消费对吧。首先。是我们刚才的这个程序,这个DWS程序。
16:02
他会消费三个主题,还有呢。UV消费吧。好,还有优界也要消费,对不对。你看一下数据流啊,然后呢,他不光消费这个。配置logo,他还消费他们俩。这个数据流能明白吗。这个数据流这样画能知道什么意思吧,我只画了这一个主题啊,但实际上这应该有五个主题,但其他的四个主题跟我没关系。OK吧,我就简单的这样画一下,这个是不是当前我们这个程序啊,它的流数据流是不是应该这样走的,没毛病吧,对吧,一方面呢,他直接从DWD原始这些数据拿数据啊,还有一个呢,是从DWD加工后,UV跟ug这两个位置呢开始拿数据,有没有毛病?没毛病,扣一啊,跟上跟上啊。这块让你们自己想肯定很难想到,好吧。
17:07
好,那。比如说。我有一条数据。有一数据是什么呢?是这个。零九。啊,就是酒吧。就是九这个数据,它呢,是正常的一个页面数据啊,是一个页面数据,且是一个跳出。啊,同时满足跳出可以吧。它是一个页面同时满足跳出好,那么九这个数据呢,会被输到这儿,是不是被这消费到,在九这一时刻就被消费到好,那另外一方面,他是不是走这个逻辑到这儿,也走这个逻辑到这儿。因为这三个人都会消费到九,有没有毛病,到这一步能不能看得懂,能看懂扣一我们一步一步聊啊。到这一步看得懂。扣一。
18:05
对吧,你九数据来了,那肯定要经过这去看看你是不是新的UV对吧?啊,那要走这。要走,这假如说他确实是一个跳出啊,实打实是一个跳出。好吧。呃。那接下来假如说呢,嗯,它不是UV,我们一检查发现已经来过了,UV来过了,这个数据呢,过滤掉了啊,你不过滤掉你就放过来了,这无所谓对吧啊。那接下来呢,这个九到这儿来了,开了一个窗口吧,假如第一条数据啊,开了什么窗口呢?零到十的窗口对不对。左臂右开。这个九是不是零到十的一个窗口啊。对吧,好,那我问大家这个东西它什么时候关闭啊,是不是word bug大于十啊,我bug大于十,我这边设置的延迟是两秒吧,因为如果我来一个13啊,假如说我第二条数据是13。
19:03
我第二条数据13K呢,无所谓,M mid可能都不一样啊,这些东西都不一样,无所谓对吧,我只要我的板,因为跟这些东西没关系嘛,好13这个数据是不是进账。进这之后,从这个位置是不是被他消费到对吧?好,那这个数据呢,同样的进这也进这儿啊也进这。眼睛这好,那你想。13、这个数据来了,这个窗口怎么样,是不是就关闭了。是不是就关闭了。到这一步能看懂吗?就是第二条数据,假如设我为13 13来了以后,刚才零到十的这个窗口是不是关闭了,因为我两秒,此时word b11这个窗口是不是关闭了,有没有问题,没有问题扣一好吧。咱们一步一步来,这个问题就会比较清晰啊。我一步多问好吧。咱们跟上的啊,赶紧就扣一,我们就继续往下聊。
20:02
好,那我想问大家啊,这个东西。他什么时候输出啊,假如说他走的是time out。对吧,他们有两种方式吗?他走的是timeout,如果他走的是timeout,那这个数据这个九什么时候会被输出出去啊。他会在什么时候会被输出出去,有没有人告诉我?就是ug这边我们用的CP啊。用的CP啊,对吧,那个程序啊,这个酒它在什么时候才会被输出出去啊。
21:03
啊。它会在什么时候被输出出去啊。前面这个需求问完了吗?啊。这么神奇吗?过期或者接收到第二条last配ID超过超时后,对我的意思就是如果是走超时这条线啊,它需要哪,需要数据时间是多少吗?啊,或者说我问清楚一点,他需要数据时间是多少啊。13。啊。13就能输出啊。19啊。21吧。他要21这条数据来了九才会输出啊。
22:00
他要21这条数据对吧,因为我们微信给了十秒。我他妈延迟还给了两秒呢。对呀,还有两秒乱序,对啊,VZ加了十秒吧,还有两秒乱序,他是不是要21这条数据才会输出啊,你看如果数据21都来了,那其他的时候早都到21了,那你看这个它所在的窗口啊,零到十十三这条数据来的时候就已经关闭了,你呢,到21这条数据来了才会输出,那你输出到这个流里边以后。这个窗口早都不在了。是不是能明白了吗?现在能明白为什么这个地方邮件都是零的吗?能不能清楚?就是因为你这儿会有数据输出没毛病,但是呢,等你输出到这个位置的时候,你所在的窗口。早都关闭了。能不能明白?
23:05
能清楚吗?对吧,他是这样子的,好,那这块咱们应该怎么调啊。咱们怎么样这样一个简单的方式把这个呢改14。我本来呢想延想延个两秒对吧,但是由于你邮界数据本身有可能会迟到12秒对吧,再加上我自己的两秒,我给你个14。对吧,我给你个14好,那我一给14,有同学可能就想问了,他说。你给14你这个东西。延迟太高。对吧,那没办法。那没办法对吧,因为我们这个需求里边加了优借这个数据了。
24:00
Ug这个数据它本身是不是自带延迟这个需求,他要走time out,你要等超时,你等超时必然会延迟,对吧,也就是说他天生自带什么延迟属性。那如果说你不想这个这样做,你把U界单拎出去,对吧,你把UVPV这些个需求放在一起,U界单独求,如果你放到一起,你就应该忍受忍受这个什么。延迟能明白我说的意思吗?就是我一写14啊,大家有可能会想到,那你这个延迟不是很高嘛,对吧,这这延迟14秒,那我还叫实时吗?没办法,因为我们这个需求它自带延迟属性。对吧,本来你就要走超时这个逻辑。啊,或者你有个好的办法就是什么呢?你把这个优界啊,这个需求单拎出去。对吧,我uvpv。SV during some,我这四个需求呢,一起求,邮件呢,单独求是不是也可以?
25:05
对吧,那你要想放在一起,你就要忍受延迟,好,那我把这个呢,重新启动测一下,这个我都重新启动了,因为它呢有状态对吧?啊所以呢。我不想有这个干扰啊,把这个状态给干掉。呃,这个邮件重新启动,然后呢,就是他自己。就当前这个需求,我们也重新启动一下啊。好,那我们稍微等一会儿,因为毕竟三个需求吧,对吧。好,那这个呢就搞定,搞定之后呢,我们再来测一下哈来。好,这边有数据了,那UV呢跟着有数据,这个ug啊,现在呢,没有数据也正常的。啊,这个应该是上一次那个数据。
26:00
啊,那这个还不好,我得重新。呃,上一次的数据啊,这应该是上一次数据,那无所谓吧,这一次肯定进不来啊,我觉得应该进不来。64条。啊,181啊,这一下子涨了很多啊。一百七啊,这个这个不好啊,因为这个应该是上一次残留的这个数据啊,残留数据咱们这样啊,我为了测这个效果,我不要这种残留的数据,对吧,这个呢,是这个数据肯定能进来,因为什么呢?因为。我们的数据怎么样?因为咱们的数据呢,是一下子直接消费过来的,他没有那种情况一条一条来的,对吧?好,那这个呢,我们可以做一个调整,我们怎么做呢,我为了不需要这些。历史数据啊呃哦对,我刚才不知道还在不在造这个数据,我得重新启一下,我看一眼啊。这个地方有有一个办法啊,我们来测这个点,我们呢让他从最新的数据开始消费,对吧?啊,就是老的那个数据呢,不考虑啊,不考虑,因为你要考虑老的,你刚才那个数据一下打印那么多。
27:04
一下子全超时了,对吧?啊,那是因为你上一次造的数据被消费到了啊。好,这边没有数据的,没有数据呢就行了,对吧,没有数据呢,咱们就可以把这个干掉,然后呢,我为了让他消费最新的数据,我有个办法来,很简单啊,我把消费者组啊,我换成1126。我把这个消费者组呢,也换成116,我两个换一个新的消费者组,这样呢,我必保证他是什么,他消费的是最新的数据,对吧,就不会有老的数据去干扰啊,一定要把这些东西给排除掉,我们再来测才可以啊。好,那接下来呢,我们开始造新的数据走。
28:00
这个不用写,这个没有状态,没有什么东西,什么都没有,对吧,他来一条输出一条啊就就无关紧要。呃,UV有了对吧。U近哎,这边呢,有这么三条数据对吧,啊有可能吧,对吧,好那加下来这边那我们看啊。CTRCCTRF啊,他们多等一会儿吧,因为他可能还有数据对吧,一次造数据还没有结束啊,我们都等一会儿,等它停了不造了,我没有数据来了,我们再说你看,因为我们这个脚本呢,我这边啊,每次造的数据量还是蛮大的,我每次造的数据量还是蛮大的啊,所以呢,呃,我得等着这边没有数据来才可以哈。这会儿我感觉应该差不多了,我看这就行了,对吧,看这哎这个地方没有新的数据,那说明就我们造数据的脚本已经停了,对吧,这第一个啊。嗯,第二个这边也没有新的数据了。这个还是刚才三个啊好,那这边呢,有没有新的数据,那我们看啊,这边呢,是139条数据,再看ug等于零的。
29:08
邮界等于零的136条,看见没?U界等于零的136条,那也就是说还有三条U界等于一的。对吧,哪三条。刚好这边三条,那这样的数据就怎么样没有漏了。发现没?对吧,啊,就是刚才我们所说的这个延迟问题啊,你前面数据呢。你用了CP,你加了微,那你这个数据过来的时候就有延迟。对吧,它本来就有延迟,所以你得把这个延迟考虑进去,就就公司当中我们说的,我们那个延迟呢,得设置为最大的乱序程度,那我现在我代码里边自己写的延迟,那你这个U界数据是不是比UV数据或者PV数据。本来是同时产生的,但是呢。
30:00
最后被消费到是不是有延迟啊,对吧,最大量续程度应该就14了,应该就14了,对吧,是这样的一个情况啊好,那这块呢,咱们就测完了就没有问题了啊,到这步就没有问题了啊,这是一个小细节啊。
我来说两句