论文部分内容阅读
大数据时代,Kafka作为高吞吐、低延时、高容错的消息队列系统,在实时数据处理、数据广播、数据持久化和系统解耦都有广泛的应用。但是Kafka在对接大规模物联网传感器时,可能会导致的数据倾斜,即采用分区机制的分布式系统中,大量数据集中在少数分区中,使得少数节点的系统资源占用过高,进而导致热点问题,使得数据发送缓慢,资源占用异常,甚至宕机等问题。本文重点针对Kafka在对接大规模生产者时的热点问题,做了以下三方面的工作:(1)首先,针对Kafka对接大规模生产者时的数据分配不均衡问题,分析了聚类算法存在的计算复杂、集群资源利用不充分的缺陷,提出基于SDG(Sensor Dependency Graph,传感器依赖图)的传感器分布式二次聚类算法DASDG。首先根据传感器元数据,按照信息熵和信息增益将传感器一次聚集为大类,在大类内部构建SDG并以此为依据进行聚类,减少了大类与大类之间的相似度计算,降低了SDG构建复杂度。仿真结果表明,与经典SDG和传统的层次聚类算法相比,DASDG提高了Kafka的吞吐率,并且降低了Kafka服务器的资源消耗,并且在聚类时间上相比SDG聚类也有了提高。(2)其次,针对Kafka在分布式集群中的调优问题,提出基于抽样的Kafka自适应性能调优算法ENLHS,首先使用拉丁超立方抽样生成数据集,再用这一数据集进行性能模型训练,用弹性网络模型对数据集进行拟合,以此改进拉丁超立方抽样,进行最优解迭代,进而求得性能最优解的结果。实验结果表明,ENLHS算法得到的配置集能更好的提升Kafka的吞吐性能,降低了时延,并且具有更小的误差。(3)设计并实现了基于Kafka的中间件原型系统。在系统对接大规模生产者时,可以做到有效将生产者数据进行分配,并且通过自适应的性能优化,让Kafka在集群中保持高效和稳定的运行。通过对比默认情况下系统的数据不均衡情况,以及默认配置环境下的Kafka性能,本文提出的原型系统在部署后,相对于开源版本的Kafka,能在吞吐性能、时延、以及数据不均衡度上有更好的表现。