zoukankan      html  css  js  c++  java
  • partition的分配策略简单代码实现

    先说说partition的好处:Partition的好处是可以并发的获取同类数据,提高效率。

    第一步需要实现Partitioner对象。

    public class ProducerPartitioner implements Partitioner<String> {
        public static final Logger LOG=LoggerFactory.getLogger(UserInfo.class);
        @Override
        public int partition(String key, int numPartitions) {
            LOG.info("ProducerPartitioner key:"+key+" partitions:"+numPartitions);
            return key.length() % numPartitions;
        }
    }
    在上面的partition方法中,值得注意的是,key我们是在构造数据发送对象时设置的,这个key是区分存储的关键,比如我想将我的数据按照不同的用户类别存储。
    第二步中就是需要构造数据的时候设定:
    /**选择用哪个类来进行设置partition*/
    props.put("partitioner.class", "org.kafka.partitioner.ProducerPartitioner");
     /**构造数据发送对象**/
    ProducerData<String,UserInfo> data=new ProducerData<String, UserInfo>("test","developerTest", msg);
    增加了对partition的配置,并且修改了ProducerData的参数,其中,中间的就是key(developerTest),如果不设置partition,kafka则随机的向broker中发送请求.
     
    今天就总结这么多吧!
  • 相关阅读:
    python列表(包含列表方法)
    python数据类型和运算符
    python计算机初识
    python运行过程,变量,符号
    python·if语句
    python`while循环
    <select></select> php表单怎么传值
    thinkPhp3 空操作
    thinkphp3.1和3.2的<模板替换>的区别
    thinkphp3 空操作 如果为空会怎么样 empty name=""
  • 原文地址:https://www.cnblogs.com/xubiao/p/5361773.html
Copyright © 2011-2022 走看看