一种应用程序高并发高负荷处理方法和系统与流程

文档序号:11180801阅读:948来源:国知局
一种应用程序高并发高负荷处理方法和系统与流程

本发明涉及移动终端应用程序技术领域,特别是涉及一种应用程序高并发高负荷处理方法和系统。



背景技术:

随着网络信息技术的不断进步,移动终端应用程序也得以快速发展,以满足人们多样化需求,而随之而来的也是业务的不断增长,用户基数越来越大、访问量越来越高,有的应用程序从一开始设计的系统架构己经不能再支撑百万级的访问量,产品表现得越来越慢,消耗资源越来越高,用户等待时间越来越长。面对这类问题目前的一种有效解决方式是负载均衡,即在服务器集群中,设置一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理,在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优。采用负载均衡虽然能够一定程度上缓解相应问题,但是面对数量级增长的用户访问还是显得不够。这是it行业一些开发产品的瓶颈通病,在高并发、高访问、高负荷压力下出现响应延迟甚至无法响应,使用户失去耐心等待而弃用该产品。



技术实现要素:

本发明的目的是提供一种应用程序高并发高负荷处理方法和系统,以解决现有技术中的一些应用程序在高并发、高负荷压力下无法快速响应的技术问题。

为实现上述目的,本发明提供了如下方案:

一种应用程序高并发高负荷处理方法,包括步骤:

以protocolbuffers数据替代json数据作为后端api跟客户端交互的数据传输方式;

通过redis集群将数据交由后端api返回到客户端;

通过高速消息队列kafka来联接任务调度系统。

其中,所述步骤通过高速消息队列kafka来联接任务调度系统,还包括步骤:

使日志文件根据broker中的配置要求,将被消费消息保留预定的时间之后删除。

其中,所述步骤通过高速消息队列kafka来联接任务调度系统还包括步骤:

使consumer保存被消费消息的offset,并控制offset的保存和使用。

其中,所述步骤通过高速消息队列kafka来联接任务调度系统还包括步骤:

使consumer和producer的状态信息由zookeeper保存。

其中,所述步骤通过redis集群将数据交由后端api返回到客户端,还包括步骤:

redis集群支持数据从主服务器向任意数量的从服务器上同步。

本发明实施例还提供一种应用程序高并发高负荷处理系统,与客户端、后端api数据连接,包括protocolbuffers数据传输模块、redis集群模块、高速消息队列kafka模块和任务调度系统;

所述protocolbuffers数据传输模块,用于以protocolbuffers数据替代json数据作为后端api跟客户端交互的数据传输方式;

所述redis集群模块,用于通过redis集群将数据交由后端api返回到客户端;

所述高速消息队列kafka模块,用于通过高速消息队列kafka来联接所述任务调度系统。

其中,所述高速消息队列kafka模块,还用于使日志文件根据broker中的配置要求,将被消费消息保留预定的时间之后删除。

其中,所述高速消息队列kafka模块,还用于使consumer保存被消费消息的offset,并控制offset的保存和使用。

其中,所述高速消息队列kafka模块,还用于使consumer和producer的状态信息由zookeeper保存。

其中,所述redis集群模块,还用于支持数据从主服务器向任意数量的从服务器上同步。

根据本发明提供的具体实施例,本发明公开了以下技术效果:基于本发明提供的应用程序高并发高负荷处理方法和系统,主要包括protocolbuffers数据传输、redis集群、消息队列kafka、任务调度系统四项功能,kafka的机制能够有效释放磁盘空间,减少消息消费之后对文件内容改动的磁盘io开支,而consumer和producer状态信息由zookeeper保存,kafka集群几乎不需要维护任何,因此producer和consumer的客户端实现非常轻量级,它们可以随意离开,而不会对集群造成额外的影响,redis集群支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,对读取操作的可扩展性和数据冗余很有帮助,protocolbuffers相比较一些其他的xml技术而言,更加节省空间、速度更快,总的来说,本发明提供的应用程序高并发高负荷处理方法和系统,能够使移动终端应用程序在高负载高并发情况下表现出更优的处理效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的高并发高负荷处理方法的主要流程示意图;

图2为kafka集群架构下的基本工作流程示意图;

图3为redis数据库的架构组成示意图;

图4为java环境下protocolbuffers的基本操作流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的目的是提供一种应用程序高并发高负荷处理方法和系统。

实施例一

本发明实施例一提供一种应用程序高并发高负荷处理方法,参见图1所示,该方法包括:

步骤s110,以protocolbuffers数据替代json数据作为后端api跟客户端交互的数据传输方式。

在后端api(applicationprogramminginterface,应用程序编程接口)跟前端客户端android、ios交互中,以高效率的protocolbuffers数据来替代传统json数据的传输方式。

步骤s111,通过redis集群将数据交由后端api返回到客户端。

前端android、ios客户端与后端api传输数据,不再以db方式直连,而是通过redis集群将数据交由api返回到前端,避免db资源的消耗、以获取最大性能指标。

步骤s112,通过高速消息队列kafka来联接任务调度系统。

通过高速消息队列kafka来联接任务调度系统,使各大后端子系统与模块之间紧密相结合。

参见图2所示,在本发明实施例中,kafka提供了类似于jms的特性,但是在设计实现上完全不同,此外它并不是jms规范的实现。kafka对消息保存时根据topic进行归类,发送消息者成为producer,消息接受者成为consumer,一个topic可以包括一个或多个partition,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。图2中blockingqueue为阻塞队列,sendthread为发送线程,kafkacluster为kafka集群,syncproducer即同步producer,形成producerpool即producer池。

在本发明实施例中,kafka和jms(javamessageservice)实现(activemq)不同的是:即使消息被消费,消息仍然不会被立即删除。日志文件将会根据broker中的配置要求,保留一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费。kafka通过这种简单的手段,来释放磁盘空间,以及减少消息消费之后对文件内容改动的磁盘io开支。

对于consumer而言,它需要保存消费消息的offset,对于offset的保存和使用,有consumer来控制;当consumer正常消费消息时,offset将会"线性"的向前驱动,即消息将依次顺序被消费。事实上consumer可以使用任意顺序消费消息,它只需要将offset重置为任意值。

此外,kafka集群几乎不需要维护任何consumer和producer状态信息,这些信息有zookeeper保存;因此producer和consumer的客户端实现非常轻量级,它们可以随意离开,而不会对集群造成额外的影响。

参见图3所示,在本发明实施例中,redis是一个高性能的key-value数据库redis的出现,很大程度补偿了memcached这类key/value存储的不足,可以对关系数据库起到很好的补充作用。它提供了java,c/c++,c#,php,javascript,perl,object-c,python,ruby,erlang等客户端,使用很方便。

redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

在本发明实施例中,protocolbuffers是一个用来序列化结构化数据的技术,支持多种语言诸如c++、java以及python语言,可以使用该技术来持久化数据或者序列化成网络传输的数据。相比较一些其他的xml技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活。参见图4所示,图4是java环境下protocolbuffers的基本操作流程。

实施例二

本发明实施例二提供一种应用程序高并发高负荷处理系统。该系统与客户端、后端api数据连接,包括protocolbuffers数据传输模块、redis集群模块、高速消息队列kafka模块和任务调度系统。

其中protocolbuffers数据传输模块,用于以protocolbuffers数据替代json数据作为后端api跟客户端交互的数据传输方式;redis集群模块,用于通过redis集群将数据交由后端api返回到客户端;高速消息队列kafka模块,用于通过高速消息队列kafka来联接所述任务调度系统。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

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