RangeAssignor(范围分区)
Range策略是对每个主题而言的,首先对同一个主题里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。
假设n = 分区数/消费者数量
m= 分区数%消费者数量
那么前m个消费者每个分配n+l个分区,后面的(消费者数量-m)个消费者每个分配n个分区
假设我们有10个分区,3个消费者,排完序的分区将会是0, 1, 2, 3, 4, 5, 6, 7, 8, 9;消费者线程排完序将会是C1-0, C2-0, C3-0。然后将partitions的个数除于消费者线程的总数来决定每个消费者线程消费几个分区。如果除不尽,那么前面几个消费者线程将会多消费一个分区。在我们的例子里面,我们有10个分区,3个消费者线程, 10 / 3 = 3,而且除不尽,那么消费者线程 C1-0 将会多消费一个分区
的结果看起来是这样的:
C1-0 将消费 0, 1, 2, 3 分区
C2-0 将消费 4, 5, 6 分区
C3-0 将消费 7, 8, 9 分区
假如我们有11个分区,那么最后分区分配的结果看起来是这样的:
C1-0 将消费 0, 1, 2, 3 分区
C2-0 将消费 4, 5, 6, 7 分区
C3-0 将消费 8, 9, 10 分区
假如我们有2个主题(T1和T2),分别有10个分区,那么最后分区分配的结果看起来是这样的:
C1-0 将消费 T1主题的 0, 1, 2, 3 分区以及 T2主题的 0, 1, 2, 3分区
C2-0 将消费 T1主题的 4, 5, 6 分区以及 T2主题的 4, 5, 6分区
C3-0 将消费 T1主题的 7, 8, 9 分区以及 T2主题的 7, 8, 9分区
可以看出,C1-0 消费者线程比其他消费者线程多消费了2个分区,这就是Range strategy的一个很明显的弊端
RangeAssignor(范围分区)相关推荐
- 9.Kafka 分区分配策略(Range分配策略 RoundRobin分配策略)
前言 在 Kafka 实际生产过程中,每个 topic 都会有 多个 partitions. 1.多个Partitions有什么好处? ①多个 partition ,能够对 broker 上的数据 ...
- 原理+实践,Kafka MirrorMaker使用与性能调优全解析
http://blog.csdn.net/zhanyuanlin/article/details/76695481 Kakfa MirrorMaker是Kafka 官方提供的跨数据中心的流数据同步方案 ...
- Kafka跨集群迁移方案MirrorMaker原理、使用以及性能调优实践
序言 Kakfa MirrorMaker是Kafka 官方提供的跨数据中心的流数据同步方案.其实现原理,其实就是通过从Source Cluster消费消息然后将消息生产到Target Cluster, ...
- 消息中间件(Kafka/RabbitMQ)收录集
本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能. 这里会持续收录相关知识,包括安装.部署 ...
- 关于kafka的几个问题
本文来说下关于kafka有关的几个问题 文章目录 Kafka 简介 Kafka 概述 Kafka 优点 Kafka 缺点 Kafka 架构 ZooKeeper 的作用 Broker 注册 Topic注 ...
- 六问 Kafka 为啥那么牛
1 Kafka 简介 1.1 Kafka 概述 Kafka 是一个分布式的基于发布/订阅模式的消息队列,依靠其强悍的吞吐量,Kafka 主要应用于大数据实时处理领域.在数据采集.传输.存储的过程中发挥 ...
- 六问 Kafka 为啥那么牛!
1 Kafka 简介 1.1 Kafka 概述 Kafka 是一个分布式的基于发布/订阅模式的消息队列,依靠其强悍的吞吐量,Kafka 主要应用于大数据实时处理领域.在数据采集.传输.存储的过程中发挥 ...
- Kafka 的实现原理
1.消息中间件能做什么? 1.1 异步处理 消息中间件主要解决的就是分布式系统之间消息传递的问题,它能够屏蔽各种平台以及协议之间的特性,实现应用程序之间的协同.举个非常简单的例子,就拿一个电商平台的注 ...
- Kafka分区分配策略(1)——RangeAssignor
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
最新文章
- Java for LeetCode 067 Add Binary
- android-sdk-windows版本号下载
- WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务
- Linux驱动修炼之道-SPI驱动框架源码分析(上)
- phpstuday 修改网站访问目录
- mysql 织梦 优化,优化分析:分享织梦搭建和后台优化设置
- mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?
- adonis.js mysql_Adonis.js——数据库基本操作
- [Leedcode][JAVA][第72题][动态规划]
- Linux64位steam,这下没得玩了! Steam无奈抛弃Linux用户
- Token Based Authentication using ASP.NET Web API 2, Owin, and Identity
- 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的宿舍管理系统
- 将本地代码上传github
- 软/硬件负载均衡产品 你知多少?
- LINUX OpenGL简单测试代码
- android 跨应用服务,跨应用启动Service,出现空指针
- 移植MT7620A+MT7610E驱动到Openwrt trunk(Linux Kernel 3.14.18)(续:MT7620A)
- Center Loss层
- Eclipse多行注释
- 基于Java--获取城市天气与给手机发送验证码--HTTP协议实践