一种优化的Kafka消费者/客户端负载均衡算法
发布时间:2021-07-18 13:17
Kafka是一款高吞吐的分布式消息系统,在海量数据处理等多个领域被广泛使用。但现有Kafka消费者/客户端负载均衡算法存在一些不足,在处理海量数据时易产生过高开销甚至出错等问题。提出了一种优化的Kafka消费者/客户端负载均衡算法,负载均衡过程完全由作为管理者的消费者控制,其余消费者不必单独进行负载均衡,而且管理者不用重新分配每个消费者消费的分区。系统对所有消费者的运行状况进行监控,出现宕机的消费者后可及时进行负载再均衡。测试结果说明该算法能够减少Kafka消费者/客户端在负载均衡过程中的系统开销,并避免出现错误的负载均衡结果,可以有效地保障分布科学数据处理的正确性。
【文章来源】:计算机应用研究. 2017,34(08)北大核心CSCD
【文章页数】:4 页
【部分图文】:
消费自刀一阴费}C-硝价}O便伟目前算法时消费者cpu使用率的空化
均衡结果,说明Kafka消费者/客户端在使用本文算法进行负载均衡时,能够有效地避免出现错误的负载均衡结果,使客户端一直维持正确的工作状态,提高系统的可靠性。图5和6分别记录了Kafka消费者/客户端使用不同的算法在30s内的测试数据,测试中记录四台虚拟机CPU使用率的变化。图5为使用目前算法的数据,图6为使用本文算法的数据。在这30s内,消费者A、B和C一直在运行,而消费者D则是在第10s时启动,并在第20s时再次关闭。如图5所示,Kafka消费者/客户端在使用目前算法时,消费者D的启动和关闭都会使其他三台虚拟机的CPU使用率迅速上升到一个峰值,说明使用目前算法时,只要有消费者加入或退出,都会使所有消费者单独进行负载均衡,增加了系统开销。如图6所示,Kafka消费者/客户端在使用本文算法时,消费者D的启动不会引起其他三台虚拟机的CPU使用率的迅速上升;消费者D关闭时,短时间内消费者A和B的CPU使用率仍无剧烈变化,只有消费者C的CPU使用率迅速上升到一个峰值。这是因为当消费者D启动时,负载均衡的管理者是消费者D,由它负责控制整个消费者/客户端的负载均衡并通知其他消费者负载均衡处理结果,其余三个消费者不需要自己单独进行负载均衡,只需要根据消费者D通知的处理结果调整各自负责消费的分区数量。而当消费者D关闭时,消费者C变为负载均衡的新的管理者,需要控制整个负载均衡过程,消费者A和B则只需要根据消费者C通知的处理结果作出相应调整即可。由测试结果可知,Kafka消费者/客户端在使用本文算法时,负载均衡只由作为管理者的消费者发起并控制,其余消费者不必单独进行负载均衡,这样既可以减少客户端在负载均衡过程中的系统开销,又可以避免出现错误的负载均衡结果,能够更加高效正确地完成客户端的负载均衡。5结
【参考文献】:
期刊论文
[1]一种基于Kafka的可靠的Consumer的设计方案[J]. 王岩,王纯. 软件. 2016(01)
[2]基于Flume、Kafka、Storm、HDFS的航空维修大数据系统[J]. 徐海荣,陈闵叶,张兴媛. 上海工程技术大学学报. 2015(04)
[3]基于Docker的Redis缓存架构的研究[J]. 田玉靖,张晨光,任女尔. 电脑知识与技术. 2015(23)
[4]Redis在订阅推送系统中的应用[J]. 吴霖,刘振宇,李佳. 电脑知识与技术. 2015(07)
[5]基于内存数据库Redis的轻量级矢量地理数据组织[J]. 朱进,胡斌,邵华,罗青,江南,张景云. 地球信息科学学报. 2014(02)
[6]基于rabbitmq的海量日志的分布式处理[J]. 袁佳,郭燕慧. 软件. 2013(07)
[7]利用Zookeeper对HDFS中Namenode单点失败的改进方法[J]. 鲁阳,郑岩. 软件. 2012(12)
硕士论文
[1]基于大数据的网络广告推送服务研究[D]. 陈顺风.北京交通大学 2015
[2]基于redis的券商活动平台的设计与实现[D]. 田京昆.哈尔滨工业大学 2015
[3]基于Redis的分布式消息服务的设计与实现[D]. 曾泉匀.北京邮电大学 2014
本文编号:3289649
【文章来源】:计算机应用研究. 2017,34(08)北大核心CSCD
【文章页数】:4 页
【部分图文】:
消费自刀一阴费}C-硝价}O便伟目前算法时消费者cpu使用率的空化
均衡结果,说明Kafka消费者/客户端在使用本文算法进行负载均衡时,能够有效地避免出现错误的负载均衡结果,使客户端一直维持正确的工作状态,提高系统的可靠性。图5和6分别记录了Kafka消费者/客户端使用不同的算法在30s内的测试数据,测试中记录四台虚拟机CPU使用率的变化。图5为使用目前算法的数据,图6为使用本文算法的数据。在这30s内,消费者A、B和C一直在运行,而消费者D则是在第10s时启动,并在第20s时再次关闭。如图5所示,Kafka消费者/客户端在使用目前算法时,消费者D的启动和关闭都会使其他三台虚拟机的CPU使用率迅速上升到一个峰值,说明使用目前算法时,只要有消费者加入或退出,都会使所有消费者单独进行负载均衡,增加了系统开销。如图6所示,Kafka消费者/客户端在使用本文算法时,消费者D的启动不会引起其他三台虚拟机的CPU使用率的迅速上升;消费者D关闭时,短时间内消费者A和B的CPU使用率仍无剧烈变化,只有消费者C的CPU使用率迅速上升到一个峰值。这是因为当消费者D启动时,负载均衡的管理者是消费者D,由它负责控制整个消费者/客户端的负载均衡并通知其他消费者负载均衡处理结果,其余三个消费者不需要自己单独进行负载均衡,只需要根据消费者D通知的处理结果调整各自负责消费的分区数量。而当消费者D关闭时,消费者C变为负载均衡的新的管理者,需要控制整个负载均衡过程,消费者A和B则只需要根据消费者C通知的处理结果作出相应调整即可。由测试结果可知,Kafka消费者/客户端在使用本文算法时,负载均衡只由作为管理者的消费者发起并控制,其余消费者不必单独进行负载均衡,这样既可以减少客户端在负载均衡过程中的系统开销,又可以避免出现错误的负载均衡结果,能够更加高效正确地完成客户端的负载均衡。5结
【参考文献】:
期刊论文
[1]一种基于Kafka的可靠的Consumer的设计方案[J]. 王岩,王纯. 软件. 2016(01)
[2]基于Flume、Kafka、Storm、HDFS的航空维修大数据系统[J]. 徐海荣,陈闵叶,张兴媛. 上海工程技术大学学报. 2015(04)
[3]基于Docker的Redis缓存架构的研究[J]. 田玉靖,张晨光,任女尔. 电脑知识与技术. 2015(23)
[4]Redis在订阅推送系统中的应用[J]. 吴霖,刘振宇,李佳. 电脑知识与技术. 2015(07)
[5]基于内存数据库Redis的轻量级矢量地理数据组织[J]. 朱进,胡斌,邵华,罗青,江南,张景云. 地球信息科学学报. 2014(02)
[6]基于rabbitmq的海量日志的分布式处理[J]. 袁佳,郭燕慧. 软件. 2013(07)
[7]利用Zookeeper对HDFS中Namenode单点失败的改进方法[J]. 鲁阳,郑岩. 软件. 2012(12)
硕士论文
[1]基于大数据的网络广告推送服务研究[D]. 陈顺风.北京交通大学 2015
[2]基于redis的券商活动平台的设计与实现[D]. 田京昆.哈尔滨工业大学 2015
[3]基于Redis的分布式消息服务的设计与实现[D]. 曾泉匀.北京邮电大学 2014
本文编号:3289649
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3289649.html