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中发送请求.
     
    今天就总结这么多吧!
  • 相关阅读:
    基于麦克风阵列的声源定位算法之GCC-PHAT
    Parametric and Non-parametric Algorithms
    MATLAB中运算符优先级
    [HAOI2018]染色
    [SHOI2016]黑暗前的幻想乡
    [SCOI2012]滑雪
    [PA2014]Kuglarz
    Stroll
    [SDOI2010]大陆争霸
    解决IDEA Gradle构建报错"Cause: zip END header not found"
  • 原文地址:https://www.cnblogs.com/xubiao/p/5361773.html
Copyright © 2011-2022 走看看