
Kafka
Kafka
java爱分享
java爱分享
展开
-
12、Kafka拦截器
kafka拦截器作用:1、producer发送前对消息做一些预处理;2、producer发送成功后做一些后处理;实现ProducerInterceptorTimeInterceptor.javapublic class TimeInterceptor implements ProducerInterceptor<String, String> { @Override pu...原创 2019-12-16 19:19:51 · 193 阅读 · 0 评论 -
15、Kafka面试总结
kafka生产数据的分组策略生产者决定数据产生到集群的哪个partition中轮巡方式;自定义分组策略;指定具体分区;kafka的ack机制0:生产者不会等待broker的ack,这个延迟最低但是存储的保证最弱,当server挂掉的时候就会丢数据;1:等待服务端的ack值,leader副本确认接收到消息后发送ack,但是如果leader挂掉后它不保证是否对follower复制完...原创 2019-12-16 18:42:18 · 248 阅读 · 0 评论 -
11、Kafka 删除topic(建议关闭)
1、server.properties添加配置auto.create.topics.enable=false,默认trueserver.properties添加配置delete.topic.enable=true,默认为true确保topic的producer和consumer客户端全部停掉2、删除topickafka-topics --delete --zookeeper 127...原创 2019-12-15 20:58:33 · 1680 阅读 · 0 评论 -
10、Kafka事务
只有Producer生产消息:见生产者、消费者实战代码。消费消息和生产消息并存:这个是事务场景中最常用的情况,就是我们常说的“consume-transform-produce ”模式; 也应用到kafka stream应用中,从一个topic读取数据,处理数据,写回另一个 topic场景中。见生产者、消费者实战代码。只有消费者消费消息:这种操作其实没有什么意义,跟使用手动提交效果一样...原创 2019-12-15 20:54:19 · 269 阅读 · 0 评论 -
9、Kafka flush刷盘机制
熟悉Linux操作系统原理的都知道,当我们把数据写入到文件系统之后,数据其实在操 作系统的page cache里面,并没有刷到磁盘上去。如果此时操作系统挂了,其实数据就 丢了。一方面,应用程序可以调用fsync这个系统调用来强制刷盘;另一方面,操作系统有后 台线程,定期刷盘。如果应用程序每写入1次数据,都调用一次fsync,那性能损耗就很大,所以一般都会 在性能和可靠性之间进行权衡。因为对应...原创 2019-12-15 20:46:25 · 6006 阅读 · 2 评论 -
8、Kafka序列化和反序列化
kafka在发送和接受消息的时候,都是以byte[]字节型数组发送或者接受的。但是我们平常使用的时候,不但可以使用byte[],还可以使用int、short、long、float、 double、String等数据类型,这是因为在我们使用这些数据类型的时候,kafka根据我们 指定的序列化和反序列化方式转成byte[]类型之后再进行发送或者接受的。原生支持的序列化和反序列化org.apach...原创 2019-12-15 20:43:22 · 771 阅读 · 0 评论 -
7、Kafka消息丢失
生产者:acks=0生产者不用等待服务器应答,以下情况会发生消息丢失:当网络发生异常等情况时;客户端异常,异步发送时,消息并没有直接发送至Kafka集群,而是在Client端按一 定规则缓存并批量发送。在这期间,如果客户端发生死机等情况,都会导致消息的丢失;缓冲区满了,异步发送时,Client端缓存的消息超出了缓冲池的大小,也存在消息丢 失的可能;kafka服务器异常-Leader副本...原创 2019-12-15 20:29:52 · 237 阅读 · 0 评论 -
6、Kafka消息重复
生产者:kafka生产者在发送数据的时候,通常会有同步与异步发送,异步就是缓存部分数据, 达到一定条数或时间后批量发送,效率高效。那么,不管同步还是异步,消息是否发送成功,Kafka通过acks这个参数来控制的:0—表示不进行消息接收是否成功的确认;1—表示当Leader接收成功时确认;-1(all)—表示Leader和Follower都接收成功时确认;通常为了兼顾效率与数据安全,将a...原创 2019-12-15 20:08:57 · 1228 阅读 · 0 评论 -
5、Kafka消息顺序保证
kafka消息顺序保证kafka分布式的单位是partition,同一个partition用一个write ahead log组织,所以可以保证FIFO的顺序。不同partition之间不能保证顺序。绝大多数用户都可以通过message key来定义,因为同一个key的message可以保证只发送到同一个partition,比如说key是user id,table row id等等,所以同一个...原创 2019-12-13 13:06:42 · 424 阅读 · 1 评论 -
4、Kafka生产者、消费者实战(含SpringBoot)
1、小试身手-命令行kafka producer默认使用轮巡方式发送消息到分区(不指定分区的情况下)启动3个消费者:./kafka-console-consumer.sh --bootstrap-server 192.168.78.169:9092,192.168.78.169:9093,192.168.78.169:9094 --topic test-topic --partition ...原创 2019-12-11 20:50:44 · 436 阅读 · 0 评论 -
3、Kafka命令行
切换目录cd /usr/local/kafka/bin创建topic./kafka-topics.sh --create --zookeeper 192.168.78.169:2181,192.168.78.169:2182,192.168.78.169:2183 --replication-factor 3 --partitions 3 --topic test-topic–creat...原创 2019-12-11 13:05:16 · 281 阅读 · 0 评论 -
2、Kafka环境搭建(Linux伪集群)
准备centos7xshellkafka_2.11-2.1.0.tgzzookeeper-3.4.6.tar.gzjdk-8u65-linux-x64.tar.gzjdk安装1、卸载centos7原本自带的openjdkrpm -qa | grep java;rpm -e --nodeps java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64...原创 2019-12-10 19:45:33 · 268 阅读 · 0 评论 -
1、Kafka入门
教程:http://kafka.apachecn.org/Kafka作为一个分布式流处理平台1、发布和订阅流式的记录(消息),在这方面,它类似于消息队列或企业消息系统2、可以存储流式的记录(消息),并且有较好的容错性3、可以在流式的记录(消息)产生时就进行处理适合场景,应用于2大类应用1、构造实时流数据管道,它可以在系统或应用之间可靠地获取数据。 (相当于message queue...原创 2019-12-09 13:04:55 · 142 阅读 · 0 评论