论文部分内容阅读
伴随着互联网的高速发展,storm、s4、spark、streaming等大数据实时计算框架广泛应用于实时监控、实时推荐、实时交易等系统。为了能够实时消费数据流,Kafka消息系统得到了广泛部署,但随着数据实时性增强,Kafka消息系统可靠性面临巨大挑战。目前Kafka消息系统主要通过消息队列实现数据的实时分发,其可靠性主要通过数据的一致性来保证。当前消息队列数据不一致性主要有两方面原因引起,一方面是由集群中主、从副本间数据不一致导致,为了能使数据一致,从副本通常采用同步方式进行数据备份,但需要花费大量的网络、磁盘、内存等额外开销,使得集群负载加大;另一方面由于消息生产速率与消息落盘速率不匹配,导致数据缓存溢出,造成数据丢失,同步式消息生产虽然能解决数据丢失问题,但会影响消息集群的吞吐能力。针对以上问题,论文通过分析现有Kafka消息队列机制,研究Kafka消息系统的可靠性,具体完成以下工作:1.针对Kafka消息队列在副本数据同步过程中,集群负载增大的问题,提出基于消息热度的副本自适应同步策略。该策略通过预估消息热度,动态采用强一致性策略和弱一致性策略更新副本数据;并搭建kafka集群,与Kafka2.10的副本数据同步策略进行实验对比,结果表明自适应一致性同步策略不但能够保证消息副本的一致性,而且可以显著降低额外资源开销,提高集群的吞吐速率。2.针对Kafka消息队列采用消息缓存机制实现消息异步分发,会存在缓存溢出导致数据丢失的问题,提出基于消息热度的多级缓存机制,采用WFQ多队列调度算法实现公平的队列调度,以保证其数据落盘的公平性。并与Kafka2.10进行了实验对比,结果表明采用基于消息热度的多队列缓存策略后,不仅降低了数据消费的延时,还保证了消息队列的可靠性;综上所述,研究Kafka消息队列的主副本数据一致性策略及消息分发机制,是保证Kafka消息系统可靠性的有效途径,具有重要的理论参考价值和实用意义。