00:00
好,然后我们看一下这个卡普卡,它这个API这块啊,怎么用怎么用,呃,首先呢,我们还是同样的从这个生产开始。生产然后消费啊,先讲生产者,那生产者这边呢,你先要保证什么。你开一个什么控制台,消费者,然后来看看实际一个数据吧,看实间数据,那这个等我们代码写完之后再启动什么卡不卡,启动ZK,然后看消费者都来得及吧,啊都来得及OK,那接下来我们写代码,首先把这个依赖我先介绍吧。Com点的硅谷,然后卡卡,然后0508对吧。嗯,当前窗口,然后我把这个依赖复制一下。自动移动是吧。
01:05
保存一下啊,保存一下就OK了,嗯,泡沫导进来,然后我们是从那个深成照开始,然后呢,文档当中呢,给大家提供了两套啊,一套是过时的啊,一套我们现在要用的,那过时的这块一个东西呢,大家都自己看一看,自己看一看,因为后面呢,那个做做项目的时候,做做项目的时候啊,你们要用的时候,老师那个做项目的老师呢,还会带着你们抄这个东西啊抄这个东西那当前我们是讲的是兴业片,然后是为了公司实际开发,你们出去工作的时候要用到的啊,要用到的OK,那这样我们建一个包。啊,直接建一个类吧,Com点开了硅谷点丢。C点那个custom cot to用户的一个。
02:02
BOC啊,就走OK这样的,那在这你要能运行,你是不是有一个慢方法呀,很高方法,那正常的,我们是不是尝试着去用一个什么。Producer或者类似的去源码里面看一看,你像这种学一个新基础的时候,嗯,你不可能盲目的在这,你肯定会找一些资料,或者说看一下源码之类去学的吧,哎,同样的他这个卡夫卡呢,他提供的这个生产者啊,他在源码里边就给我们提供了一个简单的案例,来我们看一下啊这个地方,它其实其就是那个卡夫卡producer,卡夫卡producer啊是卡夫卡这个客户端包下的,客户端包下下那点进来。进去进去,然后把这个,哎,我原码应该下过了呀。好,从这往下看,这个地方就有一个什么。
03:00
就最上面啊,这最上面对吧,他说这有一个不丢哎。这有个简单的案例吧,啊,用这个producer,像那个什么发送数据,RECORD11条数据吧,Record对吧,发送一条数据,那这是它的一个整个的一个代码,我们把这个拿过来。那我们看一下,首先它里面有什么信号对吧。CTRLRCTRLR对吧,做替换,把这个新的给它替换掉,就替换什么都不要吧。配送,呃,然后还有什么东西啊。没了对吧,没了把这个关掉。找一下包。啊,就是java.u这个包向的Java u这包向。嗯,那这块这个东西我们到时候。先放这吧,这个是我们刚才六的对吧。刚才那个还有这个包往下,然后还有的一个包一个包,OK,来看一下前面这些东西是干什么。
04:10
配置信息对吧?啊配置信息是因为你在创建这个卡夫卡的时候啊,它需要的。这是他需要的一个配置信息。配置信息。好,然后这个配置信息啊,需要给大家说一说的第一个。是吗?或stop.so就我们之前写那个控制台的一个生产者的时候,是不是有个杠杠?Brookli啊对吧,就是卡夫卡集群啊,这个配置信息呢,其实就是卡夫卡集群。好吧,行,那这个地方我改一下吧,应该是哈杜102。好,第二个。看见没这个什么。
05:00
A,对吧,就是我们之前提到的那个应答机制啊,应答级别。应答级别,OK,然后这个地方叫re。这什么重试次数吧,重试次数那零就是说发送失败了就算了,对吧,就不管了,那条数据就不要了啊这个就是说发动失败了会重试吧,啊会重试好,然后这个。Batch size。是一个什么缓存对吧?哎,就是批量的一个大小。批量大小,OK,这个地方呢。反正你能感觉到这是一个什么时间,对吧,毫秒时间,这个呢,也是一个提交延迟。平常延迟,只要你这个数据啊,虽然你经过了它到时候会调用的线的方法,你是从这个生产者这边生产数据,但是不是说立即就发送出去的,不是立即就发送给topic的,而是说等到这个时间或者。
06:07
这两个东西在一块用的,或者说攒的数据呢,到16K了吧,到了16K或者说哎,满足这个时间,他就把它发送过去,发送过去是这样的,不是说来一条数据就立马发送出去啊,这两个东西也是控制的,OK,然后还有一个这个也是一个什么缓存,你想想这个缓存跟这个缓存一样吗。这个是你一次发送的那个缓存吧,这个是什么呢?整个的producer这边能缓存多少数据吧,啊这个是32兆是吧?这个是32兆OK,好,那看这个。之前就提过那个点,Log里边文件是四件码文件对吧,序列化的序列化的OK,那这个地方就是提供什么。序列化的类,序列化的类来看k value。
07:00
对吧,我们之前提过它的一个数据是不是KPI6,而且那个什么分区是不是也要看这个什么K啊等等这些内容啊,这个就是K的。序列化类序列化类OK,大家可能讲到这块的时候应该有点担心,就这么多东西,我怎么记得住呢?对吧,CV是吧,嗯,那这些东西CV也不太好,它还有其他很多很多的属性,那这样不用记这些东西,记一个类。一个类肯定能记得住,对吧。有一个producer。所有的关于producer,他所有的一个什么。配置。都在这。这个什么点size吧,ACK吧等等的,而且你看一下这个ACK这种,你无论点到哪个里边,它有都有什么。As do。
08:03
它定义了一个文档对吧?哎,定义了一个文档,在这一块都能找到相应的属性,所有详细的一个解释在源码里边都能找到,来看一下这个,首先它有什么AK等于零,如果说你设置为零之后表示什么意思啊,或将不会等待任何的一个应答吧,啊,就是说leader都不等了,OK,再看这个什么一。他说这个意味着什么?Leader将被写入之后,哎,他会要等leader吧,啊,Without without,就是不等什么,整个的一个返回值了吧,哎,其他的一个返回值了,OK,还有一个什么。哦,那它就意味着什么。等待所有的。副本对吧,同步的一个副本嘛,在同步中的一个副本写入的时候,而且这个O你可以用这个负一的代替,你看一下,他说这个是跟这个相同的吧,相同的作用,也就是说负一也可以啊,Or也可以,它都表示一个意思啊,这一个意思,而且你所有其他的属性在这都有什么任何的一个文档,一个解释啊,相应的都有解释,所以说你不需要去记任何的这些东西,你只需要记,也就是说这个地方我不这样写,我写成什么呢?
09:19
我conflict。我这样写行不行,跟你那个写那个直接写出来ACKS是一样的吧,因为它这个属性它值是什么。就是AKS这个字符转码啊是一样的,也就是说所以说你在工作当中开发的时候,你只需要记这个produce con就够了,就够了,不需要你自己去记这些东西的啊,不需要记的,但是你需要知道的是核心的哪几个东西必要设置,我跟大家说一下第一个这个东西。你不能用默认的吧,哎,你不能用默认的,还有这个东西。你也给它设置一下,其他的是关于这些什么参数,Re try什么大小,做什么时候啊,优化的时候要用的吧,哎,优化的时候要用的,因为它这个里边看到的值啊,都是默认的,都是默认的一个值,默认那个值这块要注意到旁边那个值,好那之后呢,我们就创建这个。
10:18
嗯,这样吧,把这个关掉,我们这个自己写一下,我们主要是为了告诉大家应该有哪些配置文件,对吧?那这个时候我们就可以用一个什么卡夫卡produce了,卡卡produce了,OK,那我们看一下这个卡卡produce它用什么参数啊。Com map类型的con,那map类型的其实也是放这些东西对吧,KB啊放在这个,然后还有。看第三个。就放一个吧,啊,就把我们刚才这个什么给他放过来,放过来。Ctrl out加V直接返回值对吧,取得它一个返回值叫producer,那这个是它的一个泛型对吧,那你想想看这个泛型指的是谁呀。
11:05
指的是谁的类型啊,就是你那个数据的KV的类型啊,就是KV的类型,那我们用。来代替producer OK,那生产者有了这个就是构建。创建吧。生产者对象创建生产者对象,那生产者有了之后,我们应该是拿这个生产者来调用什么方法来发送数据吧?来看一下producer点。那你看哪个方法是发送数据啊。Send吧,哎,Send send呢,它有两个,一个是就是单独的record,就是一行数据吧,啊就发动一行数据,还有一个。叫call back啊,这是一个回调函数,这个东西呢,就是你发送过去之后,它会执行这个函数里边你想干什么事啊,等会我们用一下先呢,我们就简单一点,就发送一条数据吧,发送一条数据OK。
12:07
好,那单独发送一条数据呢,太少了,我们直接来一个循环发送十条吧。发动输掉,把这个就移到这个循环里边,循环里边OK,他刚才看到这里面参数叫什么。要一个producer record对吧?Producer record,那就是一行数据来看一下又一个。Produce produce OK,他要什么呢?他这个。对吧,来看最后两个用的比较多的。首先你要往哪个topic发送?要告诉他吧,就类似于你写那个cons produce影像吧,你是不是要指定一个杠杠topic呀?你指定topic是谁?OK,我们只有一个first。First,那好,第二个。
13:01
还有什么?你也可以指定分区,对吧,就是说之前不是讲那个分区的时候,是不是可以指定分区啊,对吧,可以指定分区的,是这样的,那我们不指定分区。好像我们那个first也只有一个分区是吧,直接没有什么意义,OK,那这个地方看一下,它可以放KV对吧?哎,KV在这,那我们放一下。嗯,K呢,我们用一个。它是4K类型的,对吧,我们想把这个I,或者说直接这样。点off。我们直接把A当做那个Y6给它穿进去也可以吧,或者说你再加一个这个东西当做一个K也一样吧,还这样的,OK,那这样最终就是循环。发送数据啊,循环发送数据,最后呢,Producer是一个连接啊,跟那个卡卡的一个连接,所以你要把这个R干什么。
14:04
给它关闭了啊资源啊,给它关闭了,资源给它关闭了,那最后就是。关闭资源,关闭资源啊,那我们做一个测试,做个测试,那首先呢,我们把集群看一下。小零,然后这个地方先看CK吧,ZK到了。呃,确保ZK起来了,我们是不是看一眼啊model,然后是u K宝B,然后是z k solve.shc,这个我们有写这个脚本啊,所以可以写个脚本是吧?嗯,OK,那卢起来了之后,我们起了一个卡夫卡,卡夫卡呢,我们把这个看一下。好,然后这块呢,CD的或者直接在这写吧,O BT model,卡夫卡B卡夫卡so start.sh然后跟上OB model,然后卡夫卡conf下的so点我写的两个都是绝对路径,这是可以的吧。
15:11
来把这个复制一下CTRLC,把这个发送CTRLV在这走啊,就是三个同时就啊就执行了,三个同时执行,OK,这个关掉,然后我们再开一个。然后当前我们要起一个消费者吧,来消费这个数据,消费这个数据。CD model卡不卡B,消费者怎么记啊?用哪个命令,首先是卡夫卡对吧,卡夫卡council。Consumer,然后杠杠后面跟那个什么cable,跟那个stop都作为吧,都能够执行cable哈,多宝102冒号2181。然后。你要消费的是哪个topic出具你得告诉他吧,First。
16:08
好,这边就已经启动了吧,启动之后呢,我们把这个。跑一下吧,把这个跑一下。走,让那边跑了,这边来看。因为第一次启动的时候,它要连机群对吧,比较慢。啊,走完了来看一下零到九就有了吧,啊,因为它第一次要变异啊,然后还要连机群,相对来说比较慢一点,要慢一点,那这样就是我们正常的一个生产者,那你在公司当中做开发的时候,你看也就是说生产者在这,你就是这个怎么写的问题吧,那你在代码里边能获取到数据。只要你在代码里边能获得到任何数据,你都可以干什么。封装一下吧,哎,批量的封装一下是这样的,整个那个过程就批量的封装成一个一个的record这个record这个就不要了,因为泛型其实在这个地方都已经定义了义了,所以说这个地方呢,泛型就是多余的,多余的。
我来说两句