面向RocketMQ负载均衡技术的分析与实现
发布时间:2021-07-24 15:42
提高分布式系统的模块化程度可以改善各服务之间的通信性能,并提高可扩展性,这使得高性能、高可靠性的消息中间件更加重要。作为新兴的消息中间件,RocketMQ因其功能强大、负载均衡能力突出,支持分布式事务而被广泛使用。本文在分析了RocketMQ和消息队列服务技术现状的基础上,研究了消息中间件的负载均衡技术,结合某贷款系统中企业级服务之间的负载均衡需求,设计并实现了面向RocketMQ的负载均衡系统。本文的主要工作如下:(1)RocketMQ分布式服务集群以及消息特性分析。RocketMQ Broker集群搭建以及nameServer集群配置以及搭建,消息特性分析,包括顺序性消息,重复性消息,以及分布式事务消息。(2)负载均衡实现。分析RocketMQ负载均衡的实现,对RocketMQ负载均衡策略进行逐一分析,包括平均分配策略、轮询策略、机房配置策略、手动配置策略、一致性hash策略。(3)RocketMQ负载均衡系统局部消息堆积负载降级设计与实现。基于RocketMQ负载均衡,整合redis集群技术,以及分布式定时任务调度器quartz来实现RocketMQ负载均衡系统的负载降级,提升R...
【文章来源】:东南大学江苏省 211工程院校 985工程院校 教育部直属院校
【文章页数】:76 页
【学位级别】:硕士
【部分图文】:
原型方案
对于上面的方案暴露的问题,一种简单的方式就是将M1、M2发送到同一个Server上:如图2-2所示,这样可以保证M1先于M2到达MQServer(客户端等待M1成功后再发送M2),根据先达到先被消费的原则,M1会先于M2被消费,这样就保证了消息的顺序。这个模型,理论上可以保证消息的顺序。(4)最终的顺序消息解决方案
但又会引入另外一个问题,如果发送M1后,消费端1没有响应,那是继续发送M2呢,还是重新发送M1?一般为了保证消息一定被消费,肯定会选择重发M1到另外一个消费端2,就如下图2-3所示。这样的模型就严格保证消息的顺序,这里依然存在问题,消费端1没有响应Server时有两种情况,一种是M1确实没有到达,另外一种情况是消费端1已经响应,但是Server端没有收到。如果是第二种情况,重发M1,就会造成M1被重复消费。也就是后面要说的第二个问题,消息重复问题。回过头来看消息顺序问题,严格的顺序消息非常容易理解,而且处理问题也比较容易,要实现严格的顺序消息,简单且可行的办法就是:保证生产者-MQServer-消费者是一对一对一的关系。但是这样设计,并行度就成为了消息系统的瓶颈(吞吐量不够),也会导致更多的异常处理,比如:只要消费端出现问题,就会导致整个处理流程阻塞,我们不得不花费更多的精力来解决阻塞的问题。但我们的最终目标是要集群的高容错性和高吞吐量。这似乎是一对不可调和的矛盾,有些问题,看起来很重要,但实际上我们可以通过合理的设计或者将问题分解来规避。如果硬要把时间花在解决它们身上,实际上是浪费的,效率低下的。从这个角度来看消息的顺序问题,不难得出以下两个结论:1.不关注乱序的应用实际大量存在。2.队列无序并不意味着消息无序。一般消息是通过轮询所有队列来发送的(负载均衡策略),顺序消息可以根据业务,比如说订单号相同的消息发送到同一个队列。
【参考文献】:
期刊论文
[1]一种基于动态划分的MapReduce负载均衡方法[J]. 周家帅,王琦,高军. 计算机研究与发展. 2013(S1)
[2]云环境下机群弹性负载均衡机制[J]. 杜垚,郭涛,陈俊杰. 计算机应用. 2013(03)
[3]云计算环境下的DPSO资源负载均衡算法[J]. 冯小靖,潘郁. 计算机工程与应用. 2013(06)
[4]IBM消息中间件WebSphere MQ的应用[J]. 高宁. 电脑知识与技术. 2010(31)
[5]使用高性能Web服务器Nginx实现开源负载均衡[J]. 林丽丽. 大众科技. 2010(07)
[6]服务器负载均衡技术研究[J]. 周莹莲,刘甫. 计算机与数字工程. 2010(04)
[7]服务器集群负载均衡技术研究及算法比较[J]. 李坤,王百杰. 计算机与现代化. 2009(08)
[8]基于消息中间件的异构数据集成实现[J]. 王峰,刘娟. 电力信息化. 2009(07)
[9]支持多服务的消息中间件设计与实现[J]. 刘建华,毕会娟. 微计算机信息. 2009(09)
[10]面向大规模数据集成消息中间件系统设计实现[J]. 李建峰,许舒人,马建刚. 计算机工程与设计. 2008(01)
硕士论文
[1]基于集群的动态反馈负载均衡算法的研究[D]. 魏钦磊.重庆大学 2013
本文编号:3300941
【文章来源】:东南大学江苏省 211工程院校 985工程院校 教育部直属院校
【文章页数】:76 页
【学位级别】:硕士
【部分图文】:
原型方案
对于上面的方案暴露的问题,一种简单的方式就是将M1、M2发送到同一个Server上:如图2-2所示,这样可以保证M1先于M2到达MQServer(客户端等待M1成功后再发送M2),根据先达到先被消费的原则,M1会先于M2被消费,这样就保证了消息的顺序。这个模型,理论上可以保证消息的顺序。(4)最终的顺序消息解决方案
但又会引入另外一个问题,如果发送M1后,消费端1没有响应,那是继续发送M2呢,还是重新发送M1?一般为了保证消息一定被消费,肯定会选择重发M1到另外一个消费端2,就如下图2-3所示。这样的模型就严格保证消息的顺序,这里依然存在问题,消费端1没有响应Server时有两种情况,一种是M1确实没有到达,另外一种情况是消费端1已经响应,但是Server端没有收到。如果是第二种情况,重发M1,就会造成M1被重复消费。也就是后面要说的第二个问题,消息重复问题。回过头来看消息顺序问题,严格的顺序消息非常容易理解,而且处理问题也比较容易,要实现严格的顺序消息,简单且可行的办法就是:保证生产者-MQServer-消费者是一对一对一的关系。但是这样设计,并行度就成为了消息系统的瓶颈(吞吐量不够),也会导致更多的异常处理,比如:只要消费端出现问题,就会导致整个处理流程阻塞,我们不得不花费更多的精力来解决阻塞的问题。但我们的最终目标是要集群的高容错性和高吞吐量。这似乎是一对不可调和的矛盾,有些问题,看起来很重要,但实际上我们可以通过合理的设计或者将问题分解来规避。如果硬要把时间花在解决它们身上,实际上是浪费的,效率低下的。从这个角度来看消息的顺序问题,不难得出以下两个结论:1.不关注乱序的应用实际大量存在。2.队列无序并不意味着消息无序。一般消息是通过轮询所有队列来发送的(负载均衡策略),顺序消息可以根据业务,比如说订单号相同的消息发送到同一个队列。
【参考文献】:
期刊论文
[1]一种基于动态划分的MapReduce负载均衡方法[J]. 周家帅,王琦,高军. 计算机研究与发展. 2013(S1)
[2]云环境下机群弹性负载均衡机制[J]. 杜垚,郭涛,陈俊杰. 计算机应用. 2013(03)
[3]云计算环境下的DPSO资源负载均衡算法[J]. 冯小靖,潘郁. 计算机工程与应用. 2013(06)
[4]IBM消息中间件WebSphere MQ的应用[J]. 高宁. 电脑知识与技术. 2010(31)
[5]使用高性能Web服务器Nginx实现开源负载均衡[J]. 林丽丽. 大众科技. 2010(07)
[6]服务器负载均衡技术研究[J]. 周莹莲,刘甫. 计算机与数字工程. 2010(04)
[7]服务器集群负载均衡技术研究及算法比较[J]. 李坤,王百杰. 计算机与现代化. 2009(08)
[8]基于消息中间件的异构数据集成实现[J]. 王峰,刘娟. 电力信息化. 2009(07)
[9]支持多服务的消息中间件设计与实现[J]. 刘建华,毕会娟. 微计算机信息. 2009(09)
[10]面向大规模数据集成消息中间件系统设计实现[J]. 李建峰,许舒人,马建刚. 计算机工程与设计. 2008(01)
硕士论文
[1]基于集群的动态反馈负载均衡算法的研究[D]. 魏钦磊.重庆大学 2013
本文编号:3300941
本文链接:https://www.wllwen.com/kejilunwen/ruanjiangongchenglunwen/3300941.html