当前位置: 首页 > news >正文

wordpress 友情链接分类/seo什么意思中文意思

wordpress 友情链接分类,seo什么意思中文意思,蓝一互动网站建设,做企业网站用二级域名好吗分区策略 所谓分区策略是决定生产者将消息发送到哪个分区的算法。Kafka 为我们提供了默认的分区策略,同时它也支持你自定义分区策略。 1、自定义分区策略 如果要自定义分区策略,你需要显式地配置生产者端的参数partitioner.class。这个参数该怎么设定…

分区策略

所谓分区策略是决定生产者将消息发送到哪个分区的算法。Kafka 为我们提供了默认的分区策略,同时它也支持你自定义分区策略。

1、自定义分区策略

如果要自定义分区策略,你需要显式地配置生产者端的参数partitioner.class。这个参数该怎么设定呢?方法很简单,在编写生产者程序时,你可以编写一个具体的类实现org.apache.kafka.clients.producer.Partitioner接口。这个接口也很简单,只定义了两个方法:partition()和close(),通常你只需要实现最重要的 partition 方法。我们来看看这个方法的方法签名:

int partition(String topic, Object key, byte[] keyBytes, Object value, byte[] valueBytes, Cluster cluster);

这里的topic、key、keyBytes、value和valueBytes都属于消息数据,cluster则是集群信息(比如当前 Kafka 集群共有多少主题、多少 Broker 等)。Kafka 给你这么多信息,就是希望让你能够充分地利用这些信息对消息进行分区,计算出它要被发送到哪个分区中。只要你自己的实现类定义好了 partition 方法,同时设置partitioner.class参数为你自己实现类的 Full Qualified Name,那么生产者程序就会按照你的代码逻辑对消息进行分区。虽说可以有无数种分区的可能,但比较常见的分区策略也就那么几种,下面我来详细介绍一下。

2、轮询策略

也称 Round-robin 策略,即顺序分配。比如一个主题下有 3 个分区,那么第一条消息被发送到分区 0,第二条被发送到分区 1,第三条被发送到分区 2,以此类推。当生产第 4 条消息时又会重新开始,即将其分配到分区 0,就像下面这张图展示的那样。
在这里插入图片描述

这就是所谓的轮询策略。轮询策略是 Kafka Java 生产者 API 默认提供的分区策略。如果你未指定partitioner.class参数,那么你的生产者程序会按照轮询的方式在主题的所有分区间均匀地“码放”消息。

轮询策略有非常优秀的负载均衡表现,它总是能保证消息最大限度地被平均分配到所有分区上,故默认情况下它是最合理的分区策略,也是我们最常用的分区策略之一。

3、随机策略

随机策略也称 Randomness 策略。所谓随机就是我们随意地将消息放置到任意一个分区上,如下面这张图所示。
在这里插入图片描述

如果要实现随机策略版的 partition 方法,很简单,只需要两行代码即可:
List partitions = cluster.partitionsForTopic(topic);return ThreadLocalRandom.current().nextInt(partitions.size());

先计算出该主题总的分区数,然后随机地返回一个小于它的正整数。

本质上看随机策略也是力求将数据均匀地打散到各个分区,但从实际表现来看,它要逊于轮询策略,所以如果追求数据的均匀分布,还是使用轮询策略比较好。

事实上,随机策略是老版本生产者使用的分区策略,在新版本中已经改为轮询了。

按消息键保序策略也称 Key-ordering 策略。有点尴尬的是,这个名词是我自己编的,Kafka 官网上并无这样的提法。

Kafka 允许为每条消息定义消息键,简称为 Key。这个 Key 的作用非常大,它可以是一个有着明确业务含义的字符串,比如客户代码、部门编号或是业务 ID 等;也可以用来表征消息元数据。特别是在 Kafka 不支持时间戳的年代,在一些场景中,工程师们都是直接将消息创建时间封装进 Key 里面的。一旦消息被定义了 Key,那么你就可以保证同一个 Key 的所有消息都进入到相同的分区里面,由于每个分区下的消息处理都是有顺序的,故这个策略被称为按消息键保序策略,如下图所示。

在这里插入图片描述

实现这个策略的 partition 方法同样简单,只需要下面两行代码即可:
List partitions = cluster.partitionsForTopic(topic);
return Math.abs(key.hashCode()) % partitions.size();

前面提到的 Kafka 默认分区策略实际上同时实现了两种策略:如果指定了 Key,那么默认实现按消息键保序策略;如果没有指定 Key,则使用轮询策略。

4、其他分区策略

上面这几种分区策略都是比较基础的策略,除此之外你还能想到哪些有实际用途的分区策略?其实还有一种比较常见的,即所谓的基于地理位置的分区策略。当然这种策略一般只针对那些大规模的 Kafka 集群,特别是跨城市、跨国家甚至是跨大洲的集群。
例如

List partitions = cluster.partitionsForTopic(topic);
return partitions.stream().filter(p -> isSouth(p.leader().host())).map(PartitionInfo::partition).findAny().get();

http://www.jmfq.cn/news/4897135.html

相关文章:

  • 网站建设费可以抵扣进项税吗/百度贴吧官网首页
  • 怎么做招标公司网站/百度手机网页版入口
  • asp.net做网站后台/腾讯朋友圈广告怎么投放
  • 只做app不做网站可以吗/b2b商务平台
  • 嘉兴做微网站设计/优化设计答案六年级上册语文
  • 名校建设专题网站/阐述网络营销策略的内容
  • 政府采购网上商城网站/北京刚刚传来特大消息
  • 教材资源网站建设/百度安装app
  • 如何在网站上做公示/seo运营是做什么的
  • 广州市公需课在哪个网站可以做/网络营销策略
  • 帮别人备案网站/电商平台app大全
  • 阿里云购买网站登录/网络营销的基本特征有哪七个
  • 限制访问次数的网站/微博推广价格表
  • 襄州区城乡建设局网站/百度电脑版网页版
  • 建设个人购物网站/艾瑞指数
  • 做网站备完备案需要干什么/营销技巧和营销方法培训
  • 直播app开发价格/灰色行业关键词优化
  • 电子商务专业网站建设/购买网站域名
  • 微信公众号好看的模板哪里找/济南网站优化排名
  • 哪个网站可以免费做初级试题/拼多多关键词怎么优化
  • 棋牌网站开发搭建/电子商务推广
  • 温州做网站设计/网文推广怎么做
  • 天河做网站技术/手机关键词seo排名优化
  • 太原网站建设推广服务/seo优化常识
  • h5响应式网站建设/谷歌搜索引擎免费入口 台湾
  • html 网站模板/网站排名top排行榜
  • 如何申请一个网站 做视频/网络安全培训机构哪家好
  • 天津高端网站建设制作/网站外链的优化方法
  • 网络域名怎么注册/新野seo公司
  • 网站开发目的简介/游戏推广怎么做挣钱