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(范围分区)相关推荐

  1. 9.Kafka 分区分配策略(Range分配策略 RoundRobin分配策略)

    前言 在 Kafka 实际生产过程中,每个 topic 都会有 多个 partitions.   1.多个Partitions有什么好处? ①多个 partition ,能够对 broker 上的数据 ...

  2. 原理+实践,Kafka MirrorMaker使用与性能调优全解析

    http://blog.csdn.net/zhanyuanlin/article/details/76695481 Kakfa MirrorMaker是Kafka 官方提供的跨数据中心的流数据同步方案 ...

  3. Kafka跨集群迁移方案MirrorMaker原理、使用以及性能调优实践

    序言 Kakfa MirrorMaker是Kafka 官方提供的跨数据中心的流数据同步方案.其实现原理,其实就是通过从Source Cluster消费消息然后将消息生产到Target Cluster, ...

  4. 消息中间件(Kafka/RabbitMQ)收录集

    本篇主要整理工作中遇到的一些消息中间件的相关知识,包括Kafka, RabbitMQ, RocketMQ, ActiveMQ等,不排除收录其他消息中间件的可能. 这里会持续收录相关知识,包括安装.部署 ...

  5. 关于kafka的几个问题

    本文来说下关于kafka有关的几个问题 文章目录 Kafka 简介 Kafka 概述 Kafka 优点 Kafka 缺点 Kafka 架构 ZooKeeper 的作用 Broker 注册 Topic注 ...

  6. 六问 Kafka 为啥那么牛

    1 Kafka 简介 1.1 Kafka 概述 Kafka 是一个分布式的基于发布/订阅模式的消息队列,依靠其强悍的吞吐量,Kafka 主要应用于大数据实时处理领域.在数据采集.传输.存储的过程中发挥 ...

  7. 六问 Kafka 为啥那么牛!

    1 Kafka 简介 1.1 Kafka 概述 Kafka 是一个分布式的基于发布/订阅模式的消息队列,依靠其强悍的吞吐量,Kafka 主要应用于大数据实时处理领域.在数据采集.传输.存储的过程中发挥 ...

  8. Kafka 的实现原理

    1.消息中间件能做什么? 1.1 异步处理 消息中间件主要解决的就是分布式系统之间消息传递的问题,它能够屏蔽各种平台以及协议之间的特性,实现应用程序之间的协同.举个非常简单的例子,就拿一个电商平台的注 ...

  9. Kafka分区分配策略(1)——RangeAssignor

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. Java for LeetCode 067 Add Binary
  2. android-sdk-windows版本号下载
  3. WCF系列(一) -- 完全不使用配置文件构建和使用WCF服务
  4. Linux驱动修炼之道-SPI驱动框架源码分析(上)
  5. phpstuday 修改网站访问目录
  6. mysql 织梦 优化,优化分析:分享织梦搭建和后台优化设置
  7. mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?
  8. adonis.js mysql_Adonis.js——数据库基本操作
  9. [Leedcode][JAVA][第72题][动态规划]
  10. Linux64位steam,这下没得玩了! Steam无奈抛弃Linux用户
  11. Token Based Authentication using ASP.NET Web API 2, Owin, and Identity
  12. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的宿舍管理系统
  13. 将本地代码上传github
  14. 软/硬件负载均衡产品 你知多少?
  15. LINUX OpenGL简单测试代码
  16. android 跨应用服务,跨应用启动Service,出现空指针
  17. 移植MT7620A+MT7610E驱动到Openwrt trunk(Linux Kernel 3.14.18)(续:MT7620A)
  18. Center Loss层
  19. Eclipse多行注释
  20. 基于Java--获取城市天气与给手机发送验证码--HTTP协议实践

热门文章

  1. 关于scws分词的一些记录
  2. Andriod: 在xml布局中使用自定义属性
  3. Kafka是如何实现高吞吐率的
  4. 浅谈对BFC的认识,以及用bfc解决浮动问题
  5. vue设置全局变量或函数
  6. 转Delphi中Create(nil),Create(self),Create(Application)区别
  7. linux服务器没网情况下手动安装软件几个方法
  8. Windows下动态加载可执行代码原理简述
  9. 注解@PostConstruct与@PreDestroy
  10. 替换SQL字段中的换行符,回车符