- 00:00 - 好,那接下来我们来看一下这个点。内部原理啊,内部原理这个讲的是什么事呢?因为我们就目前所知道的内容来说,数据呢,是source接收传给China传sign,同时刚才因为讲的事物,所以你要知道这两个中间有个什么事物,对吧?但是这还不是我们更细节的数据流的一个图像。因为它里面还有我们之前所提到什么拦截器,还有China选择器,还有C组等等这些东西,对吧,那真正细节的东西我们来通过这个PPT来看一下啊,来看一下真正数据的一个图像。第一部分,Source接收数据没得了。对吧,你用T-F还是说什么其他的一个内容来接收这个数据,那它就正常的接收就行了,甚至你可以自定义的时候,你写一个IO流读本地文件,这个都OK。能听懂对吧,只要你能干什么事呢,只要你能写一段代码,将某一个地方的数据读到你的代码里边,这个都可以冲到我的什么。 
- 01:03 - 都可以装到S,然后关键的是你这个代码呢,要继承人家的S抽象类。啊,你这个时候才可以应用到跟China进行对接,同时呢,还可以用人家的那个什么事物,如果说你光秃秃的一个代码,你说能跟人家服一个框架里个China打交道,不行吧,哎,继成一个代码啊,但是这个代码里边逻辑是你自己写的,你可以写一个IO流去读出去,这个没有问题,随便你可以写一个GDBC去读数据也可以,那就监控MYSO数据呗。对吧,啊,之前那个应该是二期的,就是整个北京啊,整个大数据就是硅谷大数据的二期有一个学生就是之前拿那个。他要监控MYSQL数据要实时的啊,要实时的监控,他就想用这个写的啊,当时我给他写了,当然这个你们在那个资料里面能找到扩展资料。啊,视频和那个代码都给你了啊,当时就给他用的,当然那个由于时间紧,写的相对来说比较low一点,还有可改进空间,当然他觉得那个基本的功能能实现了,最后他也没必要说去改进了,他一直放在那了,他一直放在那了,讲过几次,然后就放在那个整个的扩展资料里,因为我们发现有这个需求之后,有这个自定义需求之后,呃,但是呢,我们就想着可能有其他公司要,所以说之前基本上我讲收的时候都会去讲,但是发现除了他之外好像没有太多人用到,所以又把它砍掉了。 
- 02:28 - 啊砍掉了,如果说需要的话,你看一下那个视频,如果说觉得还不够,可重新找我聊啊,因为当时那个是我给他写的啊,我给他写的OK,那这个就是so无论无无所谓,因为它提供的一个S来源呢。也是有限的,对吧,就像我们之前所说的,你公司当中这个数据源放的位置比较特殊,那你这个时候就要用什么自定义啊,叫自定义这个内容啊好,这个是S,然后呢,这里边呢,他会去。封装事件之后呢,它调用一个China process。 
- 03:00 - 在so里边要去调这个内容,就去获取什么,拆到了啊拆到了好这个数据呢,交给了拆到这边,当然这中间有那个我们所讲的那个什么。整个的一个事物,那些东西,我们这块没有体现了啊,没有体现了,OK,那到这块来之后,这个叫China的一个process,一个什么进程来处理这个事件,对吧,那他接下来要干什么事呢?来看这第三步。什么意思?拦截器传给了拦截器,将数据写给了拦截器,而且图上画了有什么。三个。说明可以配置多个吧,啊形成了一个什么拦截气源面。啊,拦截尽量,那有同学在想,你非得用三个,我用一个,把这个事情都写在一块不行吗?三个跟一个对比一下有什么好处呢? 
- 04:02 - 有同学说三个,那这样三个效率高,还是一个效率高,一个效率高啊。因为它是一个组件,你启动它,它不管是线程还是进程,它都要启动资源嘛,那么一个肯定效率高,那为什么生产环境当中还会产生多个呢?因为它灵活。啊,它更灵活,因为假如说啊,我这里面加一个A,这里面加一个B,这里面加一个C啊随便啊就举个例子,在时间前面加一个这个内容OK吧,好,那你加归加,如果说我能把这个写一个一个三,然后直接加一个ABC可以吗?可以吧,但是。不灵活吧,你一加ABC加了,那假如说我有的数据呢,我想加个B,或者我单独想加个C,或者单独的想加AC,是不是,如果说你把它拆开了,是不是更灵活啊,更灵活一点,也就是说提供这个拦截器的一个复用啊,复用如果说你这个拦截器跟你的业务相关性非常高。 
- 05:04 - 那你就尽量的写在一个里边,因为跟业务相关性非常高的时候,他提供复用的可能性就什么。越低对吧?啊,你要注意这个点,如果说呢,它本身这个东西呢,跟如果说事件你是简单的给它加一个时间桌啊,可能很多的事件都要做这个事儿,那你就把它单独的拎出来了,形成一个拦截器啊,也就这个意思,后面呢,我们会有这个拦截器啊,去自定义拦截器啊,多个样什么东西啊,它有它的一个顺序,这个顺序呢,就是你在配置文件里边配置拦截器的顺序,它会按照你配置的顺序去调用啊,形成的拦截器列好,经过拦截器列之后,它又把数据给他返回来了。好,接下来这个数据呢,就传给了我们的叫China选择器。因为此时经过拦截机之后,数据处理完之后,是不是应该要经过我们所说的事物,将这个事件要传给谁了。 
- 06:00 - 传给China了,那我们之前所做的事情,所做的案例当中,是不是source跟China都一一对应的?但是我们当时提到这个source是不是可以绑定多个对吧,那这个数据来了,到底给哪一个China呢?由我们什么?掺的选择器来用,因为我们之前只写了一个,所以他没得选,只能到那个里边吧,而且你又绑定关系,但是呢,我们后面的案例当中会有多个。会有多个,那多个的时候,我们就一定要配置一个掺的选择性,而且还要配置一个它的一个选择策略。选择策略,这里面呢,有两大策略。有两个特点来看一下,第一个你看名字叫China。叫副本拆选择题,那这个讲的什么事?这是source,这是三个拆副本的,好,我来了一个数据叫A,我如果说选用的是副本的这种机制,也就是说这个A将会传给三个人能听懂啊。还有一个叫。 
- 07:06 - Multilei。叫多路产能选择性啊多路,那这个什么意思呢?它跟副本有区别了。有区别了,它是要筛选了,也就是说这条数据同样的是A过来了,我这当然这个body p啊,它比这个要多配一点东西,就是接下来你的选择策略,因为它是多路嘛。你副本还需要怎么配吗?大家都一样,不需要怎么配了吧,我只要绑定的这个source跟哪几个channel都绑定了。那么将来上次来的数据给。你绑定了几个,我就发几个,对吧,但是现在如果你用的是maring这个东西。多路的,不好意思,你绑定了五个,这个数据不一定给五个吧,你接下来在底下还要去配置相应的策略,诶这A来了,诶根据里边一些东西,我是要给这个给这个,哎,B来了呢,我可能给他俩。 
- 08:05 - 啊,这个是B。这个是A啊,还有C来了,C来了呢,这个数据比较特殊,三个都干什么都要,哎,这个是多路。能听懂啊,这个配置的时候就比较灵活了,就很灵活了啊,就很灵活是这意思啊,多落就是决定可以决定发往哪些啊,后面呢,我们都有专门的案例啊,专门的案例这个是China选择器,也就是说事件给到他之后。他给事件就相当于打了一个标记,对吧,将来这个事件到哪就根据这个标记来,那接下来他又把事件传回给了。拆到那边啊,就真正写进去了啊,写进了到了拆到里边啊,拆到里边啊整个的诶写回来之后,他就知道这个数据到底是CHINA12CHINA3给哪一个了吧,假如说我们采用的是rap k这种方式。那这里边一选择是不是三个都要发呀,哎,三个一发,就是这个时候数据才到我们的哪啊。 
- 09:06 - China里边啊,那这里边呢,有两个东西,一个是拦截器,一个是China选择器啊,在数据到China之前要完成的一个事情,那想想看,既然是China的选择器,肯定这个数据在China之前吧,要经过China选择器了,如果说这个数据都已经到China了。你还选择选择什么呀,对吧?啊,所以他一定在这个之前,好,那接下来这一块,就我们所说的south跟China这之间的一个什么。数据传输就结束了,当然这里边事物就没在这里面去写出来了啊,整个的传输过程还有一个什么事物对吧,在哪块。叫库的事物在这块吧,啊在这块,因为此时已经知道了写到哪个参道了,是不是接下来从。Do put do呀,对吧,啊,做这个事的啊,做这事OK,那接下来就是我们China跟。 
- 10:01 - Sing仅仅打交道啊,Sing里边呢,有这些内容。我们之前看到了,是不是一个China可以绑定多个C,没问题吧,假如说这两个你先忽略不看,就这个CHINA1绑定了什么C1 C2C3啊,绑定了第三个,好,那这个也涉及到当前这个China里边的一条数据,我到底是给C1,给C2还是给三呢?对吧,啊,这里面呢,就有一个新的组。啊,叫think组这块呢,就不叫什么think选择器了,叫think think组呢,默认的有三种,第一个叫default。Default这种默认的,也就是说我们一直用的就是其实这个这个组呢,不好意思,它只接收一个。所以其实他就默认的这个什么S组,其实他没有组的什么。概念,因为它只接受一个,等我们从官方文档当中能找到这些东西。好,接下来还有一个叫load balance。 
- 11:03 - 负载均衡的,那你猜一下负载均衡的应该怎么发,这个数据对有轮学有随机,那既然是负载均衡。我这个ABC3条数据来了,A给你呗,B给你什么,C给你啊,做这个事儿一人一个啊很公平对吧,因为负载均衡,防止某一个呢压力过大,好这是第二个负载均衡,还有第三个。叫见过这个。学那个的时候,这个是做什么的,故障转移吧,故障转移的好,故障转移的一般都是怎么工作的。除了是不是有一个是其他两个作为假如说你挂掉了。是给你啊啊做这个事的啊,做这个事的这是故障转移的啊,故障转移的也就这个样子啊,其实用的更多的是它。 
- 12:11 - 用的最多的是它和第一个,因为第一个默认的就没有组织概念,因为生产环境当中单一的一个性这种场景还是比较多的,你但凡是单一的一个性,你注意你不用刻意的把它组那个属性给它写出来,因为你是默认的,默认的是不是可以不写啊。能听懂对吧?啊默认的可以不写,也就是说这个地方呢,主要的我们要讲的是一个,诶这个什么东西。拦截器对吧,China选择器和C组啊,C组后面呢,我们会去自定义这个拦截器,那接下来我们通过官方的配置文件来了解一下这个内容啊,以及这个内容OK吧?啊,大家大家看一下,后面呢,我们会有专门的案例去做这个事儿啊,那接下来呢,我们就把这个看一下,因为整体的一个流程涉及到这些新的点是不是啊,因为这里边呢,Source China跟这个大家现在已经不陌生了,但是对这个东西这个东西还是比较陌生的,那我们看一下来搜一下,第一个叫China选择器对吧。 
- 13:10 - China的选择器找一下啊,这里有吗?这的选择器啊,默认的是哪种啊?后面括号了一个什么默认的,默认的,那这个就比较简单了,来看一下他是怎么玩的。South re China c1 C2 C3,然后配一个什么选择器的类型,其实这句话呢,可以不写。因为什么默认的对吧,啊,你写一下就是为了强调一下这个内容,然后你看这。3R直接绑定什么三个,那这一行代码写不写都无所谓,他将来你S读到数据,三个人都干什么,三个人都有啊,三个人都有也就这意思,后面呢,我们会有案例,后面案例好第二个。 
- 14:10 - 多路复用的,哎,这个就比较麻烦一点啊,比较麻烦一点,来看一下啊,我们来说过,因为多路复用这个东西啊,是不是由你决定到底是C1C2C3啊。对吧,来看一下它是怎么配的,配置文件我们稍微理解一下。首先类型这个时候你说不写能行吗?不行了,好,第一个类型要写,第二个你看这。这定义了四个产导对吧,四个产导好,那接下来往下看。他说这个source.ra.c select点等于什么?好,然后接下来还有啊,我们继续往下看,因为到这一块大家都晕了,这是什么玩意对吧,然后还有map.cz。这个你们的屏幕能看清吗? 
- 15:01 - 看不清啊,因为有同学之前提过这个东西啊,但是我这能看清啊,那因为你不平了之后,注意这个地方呢,是一个嗨的,前面这个一样能看出来吗。啊,这个读一下啊,这个是A1点点R1,这个没问题吧,前面定义,然后是select。是谁来点table,这个是类型好从第二行这个这个呢是一个hi的。还Le等于。啊,什么意思,等会我们再聊,我们继续往下面看一个,这个地方呢,是mapping。CZ。然后等于C1,然后这一行是mapping.us等于C2C3,然后最后一个是default。等于C4。好,第一个是hi对吧,等于那这个是什么意思,是这样的。Hi的里边我们之间是不是空的对吧,那你如果说你要用多路复用的时候,你要给hi的添加东西了,这个时候呢,多路复用需要跟拦截器在一块用。 
- 16:11 - 因为之前我们用到了好多S,还得有东西吗?没东西你要跟拦截器在一块用,给这个时间呢加一个头。啊,自己添加头好添加什么头呢,添加它。去哪儿?Hier里边添加,因为你可以获取到这个hier,而且hier的数据结构是一个map结构。是什么KV形式好,你要在头里边呢,加一个C的这个P。然后Y6你猜一下。就是哪个通道哪个。首先告诉你了,你要给它的一个整个的事件,是不是有hi的有包的啊,包力没得了,就是我们的数据对吧,你要给head的head到,而且此时告诉你了它是一个map。 
- 17:08 - 它是KV类型,好K也告诉你了,你要添加的是。K,你要添加那value,你告诉我,你看这个配置文件,你觉得要添加什么东西。对了,他要添加的Y6是CZ。然后它会根据你这个时间图里面C的这个K啊,去找到这个value,你写的是CZ还是U,如果你写的是CZ,那我将这个数据传到C1,如果你写的是us,我将这个数据传到C2和C3,如果说没匹配上。你写的是ABC?或者压根你没添加这个头,那就进到哪啊default c4。啊,他这样用的,后面呢,我们要结合着谁啊。 
- 18:01 - 拦截器来用,因为你要添加同信息,要结合着拦截器来用,这个内容能听懂啊,那接下来还有一个这个卡就不聊了吧。自定义的对吧?啊自定义的好,这个呢,是我们了解的这个China选择器,那还有一个是不是C组啊,哎,在这。这个组吧,来看首先他有一个什么。Default类型,默认的default对吧?好,除了default,我们看到有什么。Over,有load balance,好那一个一看default这个来看一下,他说default这个组是针对于只接收仅仅一个single吧,啊所以呢,这个你可以不写,如果说你只有单个single的时候可以不写,也就是说你当前这个China和这个SINGLE2个是什么?一一对应的关系的时候,你是不是可以不写对吧?啊不用写它这个策略,因为一一对应好,那接下来还有一个。 
- 19:01 - 翻over啊,后面我们都会用提前呢过过一下,后面呢,我们还会再看啊里面细节的东西,那这个当中呢,这个类型你要改成什么。O啊O,然后呢,后面配这个整个那个啥名称啊,整个那个名称这一点啊,这是O做故障转移的啊,故障转移的那家还有一个什么负载均衡的,你看负载均衡的之前问过大家负载均衡的情况下,是不是ABC轮许的方式。那到底是轮询还是什么东西?你得干什么?对吧,这个是选择器,到底是怎么来默认的是什么。没行好。随机还有。这什么意思对吧,来看这儿。这干什么,这用户自定义的能看见吧,啊就是你也可以自定义这个策略。 
- 20:01 - 啊,自定义这个策略,这个也可以啊,这个也可以好,那这里面呢,我们要提一个点是back off。回滚,回滚,回滚之书败。Back off是干什么的?叫它,这个是一个算法,叫退避算法。还有一个来看,这要结合这个来用,这个是秒吧,对吧,OK,他说什么。跟be是不是也有关系啊,退,那这是干什么用的呢?好,那我们之前所提到一个点,允许你有一个China对吧,这是China c1好,然后呢,三个什么。K1 K2K,正常情况下我有123456,假如说六条数据。默认的轮询是不是123好发送过去了没问题,此时不好意思可以挂掉。 
- 21:09 - 对吧,我幺三发完了,是不是准备把四发给他呀?不好意思,你挂掉了,还能发送成功吗?发送不了。发动不了,那就只能找他了吧,把是发给他了,发给他吧。啊,那接下来这个六。给谁呢?给K1还是K2呢?这里面就有一个对比算法,就是说我如果说已知你已经挂掉了。已经挂掉了,首先呢,我在一定范围内,一定的时间范围内,要退给你就不选你了,能听懂就不选你了,就是说假如说它默认的一秒开始。一秒开始啊,这个时候呢,在如果说这个数据在一秒时间内,我就不会访问你了,因为我刚才发现你已经挂掉了,是不是很合理啊。对吧,好,接下来第二次我发五,准备发六的时候,注意他还假如过了一秒了,他还是要去访问一下他。 
- 22:06 - 因为已经过了一秒了,这个时候接下来发现他还是挂了,就不是推进一秒了,他通过指数方式,接下来就两秒,接下来是什么四秒啊,就这种方式来增长的是不是很合理啊,因为我访问你一次挂掉了,我给你的一秒的一个等待时间让你起来了。哎,让你起来,但是你第二次来找你的时候,你还没起来。那我是不是等的时间更长啊,但是有可能永久挂掉,这个时间呢,也不能是什么。一直指数增长,因为一直指数增长下去,接下来你起来了。没机会了,因为随着指数增长,是不是没机会了呀,所以他有一个什么。最大值啊,限制最大的30秒啊,等到30秒啊,如果说你超过30秒,我还会去尝试的,往里里边发一次,如果你还发不了,那还接下来等什么。等30秒是这个意思啊,它里面一个推默认的这个东西是关闭掉的,对吧?啊,默认关闭掉了,正常的环境当中呢,我们就给它开启一下啊,给它开启下,这个是我们所提到的C个组啊这个概念啊,三个组的一个概念啊,这个要注意一下。 
我来说两句