Ⅰ kafka-docker上使用+常用指令
生产者向broker发送消息,消费者接收消息,broker是物理概念,部署几个kafka即几个broker,topic是逻辑概念,往topic里发送消息会发送到设置好的几个partion上,每个partion存储作为不同队列存储不同数据,partion有leader和follower备份机制,消息发送时会轮循发送到不同broker的不同partion中,同一消费者只能消费同一分区,通过offset记录消费位置,消费者组可以访问一个topic的不同partion
启动镜像
启动kafka可以带上参数,这样会自动修改kafka里的配置文件(/opt/kafka_版本/conf/server.properties),否则不带参数需要自己进入进行手动修改 带参数版启动可参考
其中172.17.0.3需要改成自己docker的网桥连接地址
查看已启动容器
查看所有容器
启动未启动的容器
进入kafka容器
创建主题
主题和分区可以理解为:topic是逻辑划分,kafka通过topic进行区分消息,topic的数据会被存储到日志中,如果数据量太大可以引入partion(同时提高读写吞吐量)来分段存储数据。其中replication-factor作用是将任意分区复制到broker上,broker是物理概念,部署了一个kafka可认为broker数为1,我本机只有一个kafka所以这里replication-factor超过1会报错。 综上几个概念可以理解为:集群中有多个broker,创建主题时可以指明topic有多个partitions(消息拆分到不同分区进行存储,一个partion只能被一个消费者消费–partion内部保证接收数据顺序),可以为分区创建多个副本replication,不同副本在不同的broker中(作为备份使用,这里有leader和flower的区分) 。
查看topic信息
集群部署 可以通过compose集群化部署过es,这里通过创建另一个compose.yml文件来部署kafka,配置文件参考 docker-compose集群部署
生产者:
消费者: 方式一:从当前主题的迁移量位置+1开始取数据
方式二:从当前主题第一条消息开始消费
生产者将消息发送broker,broker将消息保存到本地日志中,消息的保存时有序的 单播消息: 当存在一个生产者,一个消费者组的时候,一个消费者组中只有一个消费者会收到消息
多播消息: 当存在一个生产者,多个消费组,不同消费组只有一个消费者收到消息
查看消费组详细信息:
CURRENT-OFFSET:最后被消费的偏移量 LOG-END-OFFSET:消息总量(最后一条消息的偏移量) LAG :积压了多少条消息
常见问题: 1、如何防止消息丢失 生产者:使用同步消息发送;ack设置为1/all;设置同步分区数>=2 消费者:把自动提交改成手动提交 2、如何防止消息的重复消费 针对网络抖动导致的生产者重试(发送消息),可以设置消费者加锁解决; 3、消息积压 消费者使用多线程异步处理接收数据;创建多个消费者组部署到其他机器上;通过业务架构设计,提升业务层面消费性能。
ps: 缓冲区:kafka默认会创建一个消息缓冲区去存放要发送的消息,大小是32M,每次本地线程会去缓冲区拉16K数据发送到broker,如果不到16K等待10ms也会将数据发送到broker
参考链接: 1、kafka安装教程–推荐 2、kafka配置文件server.properties参数说明 3、创建主题分区数 4、解决docker容器启动不了的问题 5、通过docker-compose集群部署 6、学习视频
Ⅱ kafka配置更改了需要重启吗
我觉得应该是需要的,一般来说任何的电子设备进行了一些重大的更改都是需要重启的,特别是你的这个还是更改了设备的这个样子的。下面是关于配置的(2)kafka修改配置文件分区数扩展阅读。硬件方面1.CPU,这个主要取决于频率和二级缓存,三级缓存,核心数量。频率越高、二级缓存越大,三级缓存越大,核心越多,运行速度越快。速度越快的CPU只有三级缓存影响响应速度。2.内存,内存的存取速度取决于接口、颗粒数量多少与储存大小(包括内存的接口,如:SDRAM133,DDR333,DDR2-533,DDR2-800,DDR3-1333、DDR3-1600、DDR4-2133),一般来说,内存越大,处理数据能力越强,而处理数据的速度主要看内存属于哪种类型(如DDR就没有DDR3处理得快)。一般大型游戏(PUBG、战地5、俄罗斯钓鱼、使命召唤16等)与大型软件(pr、ae等)都会占用很多内存,因此,对于游戏玩家来说,越高的内存可以玩越多的游戏。3.主板,主要还是处理芯片,如:笔记本i965比i945芯片处理能力更强,i945比i910芯片在处理数据的能力又更强些,依此类推。并且更好的主板还可以适配更强大的CPU(中央处理器)。4.硬盘,硬盘分为固态硬盘(SSD)、机械硬盘(HDD)、混合硬盘(SSHD),固态硬盘速度最快,混合硬盘次之,机械硬盘最差。越大的硬盘存的文件就多,(如存放电影,音乐等)首先硬盘的数据读取与写入的速度和硬盘的转速(分:高速硬盘和低速硬盘,高速硬盘一般用在大型服务器中,如:10000转,15000转;低速硬盘用在一般电脑中,包括笔记本电脑),台式机电脑一般用7200转,笔记本电脑一般用5400转,这主要是考虑到高速硬盘在笔记本电脑中由于电脑移动振动意外刮伤硬盘盘片以及功耗和散热原因。硬盘速度又因接口不同,速率不同,一般而言,分IDE和SATA(也就是常说的串口)接口,早前的硬盘多是IDE接口,相比之下,存取速度比SATA接口的要慢些。