弹性云分布式海量请求处理的方法、装置及系统与流程

文档序号:12278919阅读:313来源:国知局
弹性云分布式海量请求处理的方法、装置及系统与流程

本发明涉及计算机技术及软件领域,尤其涉及一种弹性云分布式海量请求处理的方法、装置及系统。



背景技术:

随着互联网技术的不断发展,通过客户端发起的请求数量呈现海量增长,这一现象在电子商务领域较为突出,尤其是商家进行各种促销活动的时候。因此,对海量请求的及时处理就显得尤为重要。因为海量的网络请求就像血栓一样,一旦遇到瓶颈,就会堵塞整个血管。

为了及时响应海量的请求,通常情况下需要使用集群、负载均衡技术;为了了解请求的先后,须知道请求时间,一般通过一个请求队列来处理用户请求;此外,集群后的请求,须经过同步处理,否则分散在各个服务器上的请求无法排序。

以电子商务为例,现有技术中处理海量请求的机制如图1所示,位于最前端的两台主机,主要做负载均衡,将请求卸载到多个Web服务器集群的每台主机上;ZooKeeper集群主要作用是同步数据,例如限额数据等。这些请求会通过一个先进先出的消息队列,交给数据库处理,并返回结果。

通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数)。假设处理一个业务请求的平均响应时间为100ms,系统内有20台Web服务器,配置MaxClients为500个(表示Apache的最大连接数目)。那么,Web系统的理论峰值QPS为(理想化的计算方式):20*500/0.1=100000(10万QPS)。系统似乎很强大,1秒钟可以处理完10万的请求,5w/s的秒杀似乎是“纸老虎”。

但实际情况,在高并发的场景下,服务器都处于高负载的状态,此时平均响应时间会大大增加。因此,假设在5w/s的高并发状态下,平均响应时间从100ms变为250ms(实际甚至更多):20*500/0.25=40000(4万QPS),此时,系统剩下了4w的QPS,面对5w每秒的请求,相差了1w。

同理,若某一个秒内,20*500个可用连接进程都在满负荷工作中,却仍然有1万个新来请求,由于没有连接进程可用,系统陷入到异常状态也是预期之内。

因此处理海量请求时,需要根据响应时间、服务器的CPU负载率、处理能力等动态决定集群个数。但上述现有技术无法支持动态扩容。一旦出现问题,服务器运维人员需要及时增加服务器数量,重新启动服务等,这将花费较长时间,且过程的复杂性、不确定性将给请求处理带来较大风险;此外,现有方案中没有考虑到对用户请求时间处理的公平性,一般以请求达到服务器的时间为请求开始时间,这对请求的发起方而言并不公平。



技术实现要素:

有鉴于此,本发明提供一种弹性云分布式海量请求处理的方法、装置及系统,能够在服务器无法应对峰值时,瞬时自动扩容,且根据海量请求的发起时间进行公平排序,按照时间先后予以处理。

为实现上述目的,根据本发明的一个方面,提供了一种弹性云分布式海量请求处理的方法。

本发明实施例的一种弹性云分布式海量请求处理的方法包括:步骤一:云计算管理平台创建容器,将消息队列集群、ZooKeeper集群、服务实例、数据存储集群分别构建在容器上;步骤二:客户端将包含时间的请求发送至负载均衡服务器,所述负载均衡服务器将所述请求分发至消息队列集群,经ZooKeeper集群同步后,将所述请求按时间先后进行重排;步骤三:服务实例从消息队列集群中获取请求并处理,然后将处理结果保存至数据存储集群,并返回客户端;在步骤一至步骤三的过程中,云计算管理平台监控服务实例所在容器的状态,当状态指标超过预设阈值时,通过复制容器创建新容器,以提高处理速度。

可选地,所述云计算管理平台基于OpenStack、Machine、Swarn、Compose中的一种或多种实现,所述容器为基于Linux的Docker。

可选地,所述包含时间的请求是指包含发送时间的时间戳的请求。

可选地,所述负载均衡服务器还包括:DNS负载均衡服务器和Nginx负载均衡服务器,以实现两层负载均衡。

可选地,当状态指标超过预设阈值时,通过复制容器创建新容器还包括:当服务实例所在容器的CPU负载率、内存占用量以及请求响应时间中的其中一个或多个超过对应的预设阈值时,通过复制容器创建新容器。

可选地,所述方法还包括:服务实例处理请求的过程中,利用面向切面编程的技术,记录处理的开始和结束时间,作为对请求响应时间的统计。

为实现上述目的,根据本发明的另一方面,提供了一种弹性云分布式海量请求处理的装置。

本发明的一种弹性云分布式海量请求处理的装置包括云计算管理平台、容器、客户端、负载均衡服务器,其中:云计算管理平台创建容器,将消息队列集群、ZooKeeper集群、服务实例、数据存储集群分别构建在容器上;客户端将包含时间的请求发送至负载均衡服务器,所述负载均衡服务器将所述请求分发至消息队列集群,经ZooKeeper集群同步后,将所述请求按时间先后进行重排;服务实例从消息队列集群中获取请求并处理,然后将处理结果保存至数据存储集群,并返回客户端;所述云计算管理平台还用于监控服务实例所在容器的状态,当状态指标超过预设阈值时,通过复制容器创建新容器,以提高处理速度。

可选地,所述云计算管理平台基于OpenStack、Machine、Swarn、Compose中的一种或多种实现,所述容器为基于Linux的Docker。

可选地,所述包含时间的请求是指包含发送时间的时间戳的请求。

可选地,所述负载均衡服务器还包括:DNS负载均衡服务器和Nginx负载均衡服务器,以实现两层负载率均衡。

可选地,所述云计算管理平台还用于:当服务实例所在容器的CPU负载率、内存占用量以及请求响应时间中的其中一个或多个超过对应的预设阈值时,通过复制容器创建新容器。

可选地,所述装置还用于:服务实例处理请求的过程中,利用面向切面编程的技术,记录处理的开始和结束时间,作为对请求响应时间的统计。

为实现上述目的,根据本发明的再一方面,提供了一种弹性云分布式海量请求处理的系统。

本发明的一种弹性云分布式海量请求处理的系统包括:存储器和处理器;其中,所述存储器存储指令;所述处理器被配置为根据所述指令执行下列步骤:步骤一:云计算管理平台创建容器,将消息队列集群、ZooKeeper集群、服务实例、数据存储集群分别构建在容器上;步骤二:客户端将包含时间的请求发送至负载均衡服务器,所述负载均衡服务器将所述请求分发至消息队列集群,经ZooKeeper集群同步后,将所述请求按时间先后进行重排;步骤三:服务实例从消息队列集群中获取请求并处理,然后将处理结果保存至数据存储集群,并返回客户端;在步骤一至步骤三的过程中,云计算管理平台监控服务实例所在容器的状态,当状态指标超过预设阈值时,通过复制容器创建新容器,以提高处理速度。

根据本发明的技术方案,通过基于容器的虚拟化实例构建各应用集群,从而可以在较少成本的基础上实现海量请求的处理;通过利用云计算管理平台管理容器,从而可以实现容器的快速创建,使得在服务器无法应对峰值时,瞬时自动扩容,提高服务处理性能;通过发起请求时,在请求中嵌入网络同步时间,且在将分布在集群上的请求,经过同步后按时间先后进行排序,从而可以实现根据请求发起时间决定请求处理的先后顺序;通过利用两层负载均衡技术进行请求的分发,从而可以使请求快速高效的分发至各服务实例。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是现有技术的海量请求处理的方法的架构的示意图;

图2是根据本发明实施例的弹性云分布式海量请求处理的方法的主要步骤的示意图;

图3是根据本发明实施例的弹性云分布式海量请求处理的方法的主要流程的示意图;

图4是根据本发明实施例的弹性云分布式海量请求处理的装置的主要模块的示意图;

图5是根据本发明实施例的弹性云分布式海量请求处理的系统的主要部分的示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本发明实施例的技术方案基于云计算管理平台进行容器的创建和管理。容器是构建在操作系统上的虚拟化实例,其中,各容器有自己虚拟的IP,基于一宿主机操作系统可构建多个容器。

在不同的容器集群上可以根据需求构建相关应用,本发明实施例中分别在容器上构建消息队列集群、分布式同步服务(例如可以但不限于是ZooKeeper)集群、服务实例以及数据存储集群。然后将通过客户端发起的海量请求利用负载均衡服务器发送至消息队列集群上,经过同步后,对海量请求按照时间先后进行排序。构建在容器中的服务实例获取消息队列中的请求进行处理,并将处理后数据保存在构建在数据存储集群中。在海量请求处理的过程中,云计算管理平台监控各容器的状态,当容器的状态指标超过预设阈值后,通过复制容器构建新容器。

图2是根据本发明实施例的弹性云分布式海量请求处理的方法的主要步骤的示意图。

如图2所示,本发明实施例的弹性云分布式海量请求处理的方法的主要步骤如下:

步骤一:云计算管理平台创建容器,将消息队列集群、ZooKeeper集群、服务实例、数据存储集群分别构建在容器上;

步骤二:客户端将包含时间的请求发送至负载均衡服务器,所述负载均衡服务器将所述请求分发至消息队列集群,经ZooKeeper集群同步后,将所述请求按时间先后进行重排;

步骤三:服务实例从消息队列集群中获取请求并处理,然后将处理结果保存至数据存储集群,并返回客户端;

此外,在步骤一至步骤三的过程中,云计算管理平台监控服务实例所在容器的状态,当状态指标超过预设阈值时,通过复制容器创建新容器,以提高处理速度。

本发明实施例中的负载均衡服务器还可包括:DNS负载均衡服务器和Nginx负载均衡服务器,以实现两层负载均衡。第一层是由DNS服务商可以提供。第二层主要通过Nginx做转发。Nginx是高效率的负载均衡转发器,它可以根据按照权重、轮询等方式将网络请求分发给各个服务的实例。每个实例服务跑在Docker虚拟机上,每个虚拟机不止是跑一个实例服务。

其中,云计算管理平台可以基于OpenStack、Machine、Swarn、Compose中的一种或多种实现,本发明实施例中采用OpenStack进行管理。OpenStack是一个开源软件,它提供了一个部署云的平台。为虚拟计算或存储服务的公有/私有云,提供可扩展的、灵活的云计算。OpenStack包含了一组开源项目,主要项目有Compute(Nova),Object Storage(Swift),Image Service(Glance)。Nova提供虚拟计算服务,Swift提供存储服务,Glance提供虚拟机镜像的注册、分发服务。此外,本发明实施例中的容器为基于Linux的Docker。本发明实施例的容器并不局限与此,只要是能实现本发明中虚拟化云计算的其它容器均可用来在本发明实施例中进行应用的构建和请求的处理。

本发明实施例中,Docker就是一个应用程序执行容器,类似虚拟机的概念。但是与虚拟化技术的不同之处在于下面几点:

一、虚拟化技术依赖物理CPU和内存,是硬件级别的;而Docker构建在操作系统上,利用操作系统的容器化containerization技术,所以Docker甚至可以在虚拟机上运行;

二、虚拟化系统一般都是指操作系统镜像,比较复杂,称为“系统”;而Docker开源而且轻量,称为“容器”,单个容器适合部署少量应用,比如部署一个Redis、一个Memcached;

三、传统的虚拟化技术使用快照来保存状态;而Docker在保存状态上不仅更为轻便和低成本,而且引入了类似源代码管理机制,将容器的快照历史版本一一记录,切换成本很低;

四、传统的虚拟化技术在构建系统的时候较为复杂,需要大量的人力;而Docker可以通过Dockfile来构建整个容器,重启和构建速度很快。更重要的是Dockfile可以手动编写,这样应用程序开发人员可以通过发布Dockfile来指导系统环境和依赖,这样对于持续交付十分有利。Dockerfile可以基于已经构建好的容器镜像,创建新容器。Dockerfile可以通过社区分享和下载,有利于该技术的推广。

此外,Docker的还具有如下特性:

文件系统隔离:每个进程容器运行在完全独立的根文件系统里。

资源隔离:可以使用Cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。

网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。

写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。

日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。

变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。

交互式shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。

本发明实施例中的ZooKeeper及消息队列集群,主要是多个Docker中构建的ZooKeeper集群和RabbitMQ集群(消息队列并不限于RabbitMQ,还可以是Redis),来同步分布式Docker集群上各个服务数据。本发明实施例中的数据存储集群主要用于将用户操作数据存储到相关的数据集群存储服务器,主要是多个Docker集群中构建的MySQL。

图3是根据本发明实施例的弹性云分布式海量请求处理的方法的主要流程的示意图。以下结合图3对本发明实施例的弹性云分布式海量请求处理的方法的主要流程进行详细介绍。

如图3所示,本发明实施例的弹性云分布式海量请求处理的方法的主要流程如下:

一、客户端发送秒杀请求时,通过连接网络同步时间服务器,例如NTP、GPS获取网络同步时间,在请求中带入标识发送时间的时间戳;

二、将海量秒杀请求发送至负载均衡服务器;

三、通过负载均衡服务器(包括DNS负载率均衡、Nginx负载率均衡两层负载均衡)将海量请求分发到RabbitMQ集群的工作队列中,也可以用Redis集群。其中,RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息。Redis是高速的基于内存的缓存系统。两者都可以存储请求的消息;

四、在Redis集群或者RabbitMQ消息队列中的请求队列信息,通过一个重排服务,根据时间先后进行不断重排,再重新存储到RabbitMQ或者Redis集群中;(Redis可以通过ZooKeeper实现分布式缓存)

五、通过一个读取线程,读取在Redis或者RabbitMQ中的消息,并发送到多个Docker中的服务实例里;

六、对消息队列中的请求进行处理,通过面向切面编程(AOP)的方式,记录下处理开始的时间和结束的时间,方便统计响应时间;对请求完成处理后,访问数据存储集群,本发明实施例中为MySQL数据库,更新请求处理结果后,将处理结果返回至客户端;

七、上述过程中OpenStack对多个Docker集群进行管理。通过监控服务实例所在的Docker的CPU负载率、内存占用量、请求响应时间、硬盘负载率、网络流量等指标,如果CPU负载率、内存或者响应时间大于设定的相应阈值,自动将服务实例所在的Docker,通过OpenStack的组件进行复制并启动;

八、当服务实例增多,响应变快,CPU负载率或内存随之降低。

根据本发明实施例的弹性云分布式海量请求处理的方法可以看出,通过基于容器的虚拟化实例构建各应用集群,从而可以在较少成本的基础上实现海量请求的处理;通过利用云计算管理平台管理容器,从而可以实现容器的快速创建,使得在服务器无法应对峰值时,瞬时自动扩容,提高服务处理性能;通过发起请求时,在请求中嵌入网络同步时间,且在将分布在集群上的请求,经过同步后按时间先后进行排序,从而可以实现根据请求发起时间决定请求处理的先后顺序;通过利用两层负载均衡技术进行请求的分发,从而可以使请求快速高效的分发至各服务实例。

图4是根据本发明实施例的弹性云分布式海量请求处理的装置的主要模块的示意图。

如图4所示,本发明实施例的弹性云分布式海量请求处理的装置40包括云计算管理平台401、容器402、客户端403、负载均衡服务器404,其中:

云计算管理平台401创建容器402,将消息队列集群、ZooKeeper集群、服务实例、数据存储集群分别构建在容器402上;客户端403将包含时间的请求发送至负载均衡服务器404,所述负载均衡服务器404将所述请求分发至消息队列集群,经ZooKeeper集群同步后,将所述请求按时间先后进行重排;服务实例从消息队列集群中获取请求并处理,然后将处理结果保存至数据存储集群,并返回客户端403;所述云计算管理平台401还用于监控服务实例所在容器402的状态,当状态指标超过预设阈值时,通过复制容器402创建新容器402,以提高处理速度。

其中,前述包含时间的请求是指包含发送时间的时间戳的请求。

本发明实施例中,云计算管理平台401基于OpenStack、Machine、Swarn、Compose中的一种或多种实现,所述容器402为基于Linux的Docker。

负载均衡服务器404还可以包括:DNS负载均衡服务器404和Nginx负载均衡服务器404,以实现两层负载均衡。

此外,云计算管理平台401还可用于:当服务实例所在容器402的CPU负载率、内存占用量以及请求响应时间中的其中一个或多个超过对应的预设阈值时,通过复制容器402创建新容器402。其中,请求响应时间可以采用但不限于下述方式获取:服务实例处理请求的过程中,利用面向切面编程的技术,记录处理的开始和结束时间,作为对请求响应时间的统计。

图5是根据本发明实施例的弹性云分布式海量请求处理的系统的主要部分的示意图。

本发明实施例的一种弹性云分布式海量请求处理的系统50包括:存储器501和处理器502;其中,存储器501存储指令;处理器502被配置为根据所述指令执行下列步骤:步骤一:云计算管理平台创建容器,将消息队列集群、ZooKeeper集群、服务实例、数据存储集群分别构建在容器上;步骤二:客户端将包含时间的请求发送至负载均衡服务器,所述负载均衡服务器将所述请求分发至消息队列集群,经ZooKeeper集群同步后,将所述请求按时间先后进行重排;步骤三:服务实例从消息队列集群中获取请求并处理,然后将处理结果保存至数据存储集群,并返回客户端;在步骤一至步骤三的过程中,云计算管理平台监控服务实例所在容器的状态,当状态指标超过预设阈值时,通过复制容器创建新容器,以提高处理速度。

从以上描述可以看出,通过基于容器的虚拟化实例构建各应用集群,从而可以在较少成本的基础上实现海量请求的处理;通过利用云计算管理平台管理容器,从而可以实现容器的快速创建,使得在服务器无法应对峰值时,瞬时自动扩容,提高服务处理性能;通过发起请求时,在请求中嵌入网络同步时间,且在将分布在集群上的请求,经过同步后按时间先后进行排序,从而可以实现根据请求发起时间决定请求处理的先后顺序;通过利用两层负载均衡技术进行请求的分发,从而可以使请求快速高效的分发至各服务实例。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1