
kafka
文章平均质量分 92
kafka
zuodaoyong
这个作者很懒,什么都没留下…
展开
-
topic创建之机架分配策略
1、未指定机架的分配策略(assignReplicasToBrokersRackUnaware)所有的broker都没有配置机架信息private def assignReplicasToBrokersRackUnaware(nPartitions: Int, replicationFac...翻译 2020-03-24 13:05:39 · 678 阅读 · 0 评论 -
topic创建详解
1、自动创建如果kafka broker中的config/server.properties配置文件中配置了auto.create.topics.enable参数为true(默认值就是true),那么当生产者向一个尚未创建的topic发送消息时,会自动创建一个num.partitions(默认值为1)个分区和default.replication.factor(默认值为1)个副本的对应to...翻译 2020-03-24 12:38:56 · 8338 阅读 · 0 评论 -
Kafka生产者之Old Producer
Kafka的Producer客户端早已不再使用0.8.2.x,通过Kafka Old Producer我们可以了解Kafka变迁升级的历史:旧版的Old Producer模型相对简单利于初始了解,通过对Old Producer的了解也可以慢慢的发现隐患的问题,这样进一步可以研究探讨解决方法,最后再通过对新版Producer的学习来提升对Kafka的认知,与此同时也可以让读者在遇到相似问题的时候可以...翻译 2020-03-20 13:41:57 · 419 阅读 · 0 评论 -
Kafka失效副本详解
Kafka从0.8.x版本开始引入副本机制,这样可以极大的提高集群的可靠性和稳定性。不过这也使得Kafka变得更加复杂起来,失效副本就是所要面临的一个难题。Kafka中的每个分区(partition)都会分配多个副本(replica),具体的副本数量由Broker级别参数default.replication.factor(默认大小为1)指定,也可以在创建topic的时候通过 --replicat...翻译 2020-03-18 12:54:28 · 1250 阅读 · 0 评论 -
Kafka消息偏移量的演变
一、Kafka 0.7.x1、非压缩消息MessageSet 格式的时候就说Offset字段存储的是消息存储到磁盘之后的物理偏移量从上图可以看出,每条消息存在磁盘的偏移量是其距离文件开头的绝对偏移量。比如上面第一条消息的偏移量是0;第二条消息的偏移量是第一条消息的总长度;第三条消息是其前两条消息总长度;以此类推。这种方式存储消息的偏移量很好理解,处理起来也很方便。消息存储到磁盘...翻译 2020-02-26 21:25:01 · 1359 阅读 · 0 评论 -
Kafka分区分配策略详解
RangeAssignor是Kafka中默认的分区分配策略,Kafka提供了消费者客户端参数partition.assignment.strategy用来设置消费者与订阅主题之间的分区分配策略。默认情况下,此参数的值为:org.apache.kafka.clients.consumer.RangeAssignor,即采用RangeAssignor分配策略。除此之外,Kafka中还提供了另外两种分配...翻译 2020-02-18 21:52:50 · 3789 阅读 · 1 评论 -
Kafka之数据可靠性和一致性
1、数据可靠性(1)producer 级别:acks=all(或者 request.required.acks=-1),同时发生模式为同步 producer.type=sync(2)topic 级别:设置 replication.factor>=3,并且 min.insync.replicas>=2;min.insync.replicas:最小写入副本数的个数(3)br...翻译 2020-02-06 14:27:06 · 516 阅读 · 0 评论 -
Kafka清除数据日志详解
使用Kafka的时候我们一般都会根据需求对Log进行保存,比如保存1天、3天或者7天之类的。我们可以通过以下的几个参数实现:(1)配置Log过期时间log.retention.hourslog.retention.minuteslog.retention.ms上面三个配置向配置其中一个即可,kafka默认是配置log.retention.hours,其值是7天# The...翻译 2020-02-06 11:18:46 · 4143 阅读 · 0 评论 -
Kafka之分区和副本详解
Kafka0.8版本后加入副本机制,每个Partition可能有多个备份,某个Partition的Replica列表叫作AR(Assigned Replicas)1、优先副本(Preferred Replica)如果一个分区有3个副本,且这3个副本的优先级别分别为1,5,9,根据优先副本的概念,1会作为leader。AR中的第一个Replica即为“Preferred Replica”...翻译 2020-02-06 13:48:10 · 5770 阅读 · 0 评论 -
Kafka消息格式的演变
1、Kafka 0.7.x 消息格式(1)magic:这个占用1个字节,主要用于标识 Kafka 版本。这个版本的 Kafka magic有 0 和 1 两个值,不过默认 Message 使用的是 1;(2)attributes:占用1个字节,这里面存储了消息压缩使用的编码。这个版本的 Kafka 仅支持 gzip 和 snappy 两种压缩格式;后四位如果是0001则标识gzip压缩...翻译 2020-01-07 08:18:10 · 588 阅读 · 0 评论 -
Kafka集群选择合适的Topics/Partitions数量
1、越多的分区可以提供更高的吞吐量在kafka中,单个patition是kafka并行操作的最小单元。在producer和broker端,向每一个分区写入数据是可以完全并行化的,此时,可以通过加大硬件资源的利用率来提升系统的吞吐量,例如对数据进行压缩。在consumer段,kafka只允许单个partition的数据被一个consumer线程消费。因此,在consumer端,每一个Consum...翻译 2020-01-07 08:05:22 · 395 阅读 · 1 评论 -
如何保证消息队列的高可用
Rabbitmq有两种部署模式:普通集群模式,镜像集群模式一、普通集群模式基本思想:Rabbitmq会在多台机器上启动实例,每台机器启动一个,生产者创建的queue只会放在一个Rabbit实例上,其他实例同步这个queue的元数据。对于消费者而言,好的情况是连接到的是queue所在实例,直接消费数据。不好的情况是消费者连接到的是非queue所在实例上,那么消费数据比较麻烦,需要从queue...原创 2019-09-07 13:36:51 · 141 阅读 · 0 评论 -
如何保证消息队列消息消费的幂等性
消息被重新消费场景用kafka举例:生产者向kafka打入3条数据,分别是(数据1,offset=100),(数据2,offset=110),(数据3,offset=120)消费者每消费一条数据即将刚消费的消息offset提交给kafka。考虑一种场景:消费者消费到数据2的消息,再准备提交offset=110时,消费者出了故障,本来要提交的offset未能提交。等消费者修复故障重启...原创 2019-09-17 23:07:45 · 826 阅读 · 0 评论 -
研磨Kafka之初探
一、kafka的定义kafka是一个基于发布/订阅模式的分布式消息队列。二、消息队列的两种模式(1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)(2)发布/订阅模式(一对多,消费者消费数据之后不会清除消息)kafka是属于发布/订阅模式的拉取模式发布/订阅有两种数据消费模式:Push & Pull 模式(https://my.osch...原创 2019-10-01 21:20:23 · 195 阅读 · 0 评论 -
研磨Kafka之工作流程及文件存储机制
一、Kafka 工作流程Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的。topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该log 文件末端,且每条数据都有自己...翻译 2019-10-02 15:45:49 · 147 阅读 · 0 评论 -
研磨Kafka之生产者
一、分区策略1、分区的原因(1)方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了。(2)可以提高并发,因为可以以 Partition 为单位读写了。2、分区的原则将 producer 发送的数据封装成一个 ProducerRecord 对象(...翻译 2019-10-02 16:56:35 · 406 阅读 · 1 评论 -
研磨Kafka之消费者
1、消费方式consumer 采用 pull(拉)模式从 broker 中读取数据。push(推)模式很难适应消费速率不同的消费者,因为消息发送速率是由 broker 决定的。它的目标是尽可能以最快速度传递消息,但是这样很容易造成 consumer 来不及处理消息,典型的表现就是拒绝服务以及网络拥塞。而 pull 模式则可以根据 consumer 的消费能力以适当的速率消费消息。pull...翻译 2019-10-02 19:41:54 · 312 阅读 · 0 评论 -
研磨Kafka之高效读写数据
1、顺序写磁盘Kafka 的 producer 生产数据,要写入到 log 文件中,写的过程是一直追加到文件末端,为顺序写。官网有数据表明,同样的磁盘,顺序写能到 600M/s,而随机写只有 100K/s。这与磁盘的机械机构有关,顺序写之所以快,是因为其省去了大量磁头寻址的时间。2、零复制技术kafka优化后...原创 2019-10-03 10:53:26 · 329 阅读 · 0 评论 -
哪些场景需要使用消息队列
一、消息队列(MQ)概述消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为:当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。消息队列主要解决了应用耦合、异步处理、流量削锋等问题。当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而...翻译 2019-07-25 08:52:46 · 2767 阅读 · 0 评论