![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kafka
文章平均质量分 56
SONNIE在路上
韶华易逝
展开
-
Kafka中的消息是否会丢失?
Kafka中的消息是否会丢失?要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费。消息发送 Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置。Kafka通过配置request.required.acks属性来确认消息的生产:0—表示不进行消息接收是否成功的确认;1—表示当Leader接收成功时确认;-1—表示Leader和Follower都接收成功时确认;综上所述,有6种原创 2021-05-04 18:12:12 · 416 阅读 · 0 评论 -
Kafka高可靠的解决方案
Kafka高可靠的解决方案生产者根据ack机制设置request.required.acks参数设置unclean.leader.election.enable参数为false,从而禁止选举ISR之外的follower为leader;设置重试次数;(重试机制)设置同步副本数,表示不满足该值时不提供读写服务消费者手工提交offest。消费者每次消费都是根据offest这个偏移量进行消费的,默认是把消息拉去下来时就会自动提交offest,但如果处理失败了,offset还是会继续向后原创 2021-04-18 21:35:49 · 131 阅读 · 0 评论 -
Kafka高性能高吞吐的原因/为什么这么快?
Kafka高性能高吞吐的原因/为什么这么快?磁盘顺序读写传统的磁盘读写是随机读写,导致数据是分散开的,不在一起,不仅将预读浪费掉了,还需要进行多次的寻道和旋转延迟,从而浪费过多的时间。而Kafka采取的是顺序读写,磁盘会预读,预读就是从读取的起始地址连续读取多个页面,时间主要都花费在了传输上,从而使得磁盘的处理效率更接近于内存。比起内存,使用磁盘的好处更体现在容量上,从而保证消息的堆积。零拷贝传统的数据赋值是:先将磁盘文件中的数据先读取到内核缓冲区,再拷贝到用户缓原创 2021-04-18 21:33:36 · 351 阅读 · 0 评论 -
Kafka leader的选举
Kafka leader的选举Kafka的Leader是什么首先Kafka会将接收到的消息分区(partition),每个主题(topic)的消息有不同的分区。这样一方面消息的存储就不会受到单一服务器存储空间大小的限制,另一方面消息的处理也可以在多个服务器上并行。 其次为了保证高可用,每个分区都会有一定数量的副本(replica)。这样如果有部分服务器不可用,副本所在的服务器就会接替上来,保证应用的持续性。但是,为了保证较高的处理效率,消息的读写都是在固定的一个副本上完成。这个副本就是所谓的Lea原创 2021-04-18 21:25:27 · 446 阅读 · 0 评论 -
Kafka的事务
Kafka的事务使用事务的条件必须提供唯一的transactionalId,这个transactionalId通过客户端参数transactional.id来显式设置。要求生产者开启幂等特性。transactionalId与PID一一对应,两者之间不同的是transactionalId由用户显式设置,而PID是由Kafka内部分配的。另外,为了保证新的生产者启动后,具有相同transactionalId的旧生产者能够立即失效,每个生产者通过transactionalId获取PID的同时原创 2021-04-18 21:21:53 · 271 阅读 · 0 评论 -
Kafka的ack机制、去重机制(幂等性)、副本同步机制和rebalance机制
1.ack机制request.required.acks参数表示的是生产者生产消息时,写入到副本的严格程度,决定了生产者如何在性能和可靠性之间做取舍。acks参数有三个值 :acks为1时(默认),表示数据发送到Kafka后,经过leader成功接收消息的的确认,才算发送成功,如果leader宕机了,就会丢失数据。acks为0时, 表示生产者将数据发送出去就不管了,不等待任何返回。这种情况下数据传输效率最高,但是数据可靠性最低,当 server挂掉的时候就会丢数据;acks为-1/all时,表示原创 2021-04-18 21:16:06 · 1556 阅读 · 0 评论 -
Kafka的分区策略
1.生产者分区写入策略轮询分配策略(默认) key为null的情况,消息会均匀的分配到每个partition中按key分配策略较早版本用,现在不用随机分配策略利用哈希算法去分配,但是可能会出现数据倾斜(某个key中包含大量数据,但由于他们的key值相同,都会被分配到同一个分区中,从而造成这个分区的消息量远远大于其他分区的消息量)2.消费者分区分配策略范围分配(默认) Range范围分配策略是针对于每个topic的轮询分配将消费者组内的所有消费者以及消原创 2021-04-18 20:52:48 · 174 阅读 · 0 评论 -
Kakfa的存储机制和读写流程
Kakfa的存储机制和读写流程存储机制kafka用topic对消息进行归类,每一个topic可以分为多个partition分区,分区中的消息不重复,每个分区分为多个segment(段),segment包含index文件和log文件,index文件存储索引,log文件存储数据,两种文件名相同,后缀不同。 kafka数据被消费后不会被立即删除,而是会根据两个设置定时检测做删除操作: a.基于时间:log.retention.hours=168 b.基于大小:log.retention.b原创 2021-04-18 20:47:15 · 105 阅读 · 0 评论 -
Kafka的相关概念及其架构设计
1.Kafka的相关概念Zookeeper:负责管理集群(保存topic ,partition 元数据,和对broker 的监控及治理,以及partition 的leader 选举)。broker:Kafka服务器节点,相当于是消息的代理,Producers往Brokers里面指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。controller:当broker启动的时候,都会创建Kafka Co原创 2021-04-18 20:36:27 · 64 阅读 · 0 评论 -
Kafka简单介绍
1.什么是kafkaKafka是分布式发布-订阅消息系统,是一个分布式的,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。2.为什么使用Kafka?缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能原创 2021-04-18 20:25:45 · 171 阅读 · 0 评论