CN107231443A - 一种应用程序高并发高负荷处理方法和系统 - Google Patents
一种应用程序高并发高负荷处理方法和系统 Download PDFInfo
- Publication number
- CN107231443A CN107231443A CN201710678339.0A CN201710678339A CN107231443A CN 107231443 A CN107231443 A CN 107231443A CN 201710678339 A CN201710678339 A CN 201710678339A CN 107231443 A CN107231443 A CN 107231443A
- Authority
- CN
- China
- Prior art keywords
- data
- application program
- load capacity
- modules
- message queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种应用程序高并发高负荷处理方法和系统,该方法包括步骤:以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式;通过redis集群将数据交由后端API返回到客户端;通过高速消息队列kafka来联接任务调度系统。该系统包括Protocol Buffers数据传输模块、redis集群模块、高速消息队列kafka模块和任务调度系统。该方法和系统,能够有效提升相应的APP在高负载高并发压力下的响应速度。
Description
技术领域
本发明涉及移动终端应用程序技术领域,特别是涉及一种应用程序高并发高负荷处理方法和系统。
背景技术
随着网络信息技术的不断进步,移动终端应用程序也得以快速发展,以满足人们多样化需求,而随之而来的也是业务的不断增长,用户基数越来越大、访问量越来越高,有的应用程序从一开始设计的系统架构己经不能再支撑百万级的访问量,产品表现得越来越慢,消耗资源越来越高,用户等待时间越来越长。面对这类问题目前的一种有效解决方式是负载均衡,即在服务器集群中,设置一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理,在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优。采用负载均衡虽然能够一定程度上缓解相应问题,但是面对数量级增长的用户访问还是显得不够。这是IT行业一些开发产品的瓶颈通病,在高并发、高访问、高负荷压力下出现响应延迟甚至无法响应,使用户失去耐心等待而弃用该产品。
发明内容
本发明的目的是提供一种应用程序高并发高负荷处理方法和系统,以解决现有技术中的一些应用程序在高并发、高负荷压力下无法快速响应的技术问题。
为实现上述目的,本发明提供了如下方案:
一种应用程序高并发高负荷处理方法,包括步骤:
以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式;
通过redis集群将数据交由后端API返回到客户端;
通过高速消息队列kafka来联接任务调度系统。
其中,所述步骤通过高速消息队列kafka来联接任务调度系统,还包括步骤:
使日志文件根据broker中的配置要求,将被消费消息保留预定的时间之后删除。
其中,所述步骤通过高速消息队列kafka来联接任务调度系统还包括步骤:
使consumer保存被消费消息的offset,并控制offset的保存和使用。
其中,所述步骤通过高速消息队列kafka来联接任务调度系统还包括步骤:
使consumer和producer的状态信息由zookeeper保存。
其中,所述步骤通过redis集群将数据交由后端API返回到客户端,还包括步骤:
Redis集群支持数据从主服务器向任意数量的从服务器上同步。
本发明实施例还提供一种应用程序高并发高负荷处理系统,与客户端、后端API数据连接,包括Protocol Buffers数据传输模块、redis集群模块、高速消息队列kafka模块和任务调度系统;
所述Protocol Buffers数据传输模块,用于以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式;
所述redis集群模块,用于通过redis集群将数据交由后端API返回到客户端;
所述高速消息队列kafka模块,用于通过高速消息队列kafka来联接所述任务调度系统。
其中,所述高速消息队列kafka模块,还用于使日志文件根据broker中的配置要求,将被消费消息保留预定的时间之后删除。
其中,所述高速消息队列kafka模块,还用于使consumer保存被消费消息的offset,并控制offset的保存和使用。
其中,所述高速消息队列kafka模块,还用于使consumer和producer的状态信息由zookeeper保存。
其中,所述redis集群模块,还用于支持数据从主服务器向任意数量的从服务器上同步。
根据本发明提供的具体实施例,本发明公开了以下技术效果:基于本发明提供的应用程序高并发高负荷处理方法和系统,主要包括Protocol Buffers数据传输、redis集群、消息队列kafka、任务调度系统四项功能,kafka的机制能够有效释放磁盘空间,减少消息消费之后对文件内容改动的磁盘IO开支,而consumer和producer状态信息由zookeeper保存,kafka集群几乎不需要维护任何,因此producer和consumer的客户端实现非常轻量级,它们可以随意离开,而不会对集群造成额外的影响,Redis集群支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,对读取操作的可扩展性和数据冗余很有帮助,Protocol buffers相比较一些其他的XML技术而言,更加节省空间、速度更快,总的来说,本发明提供的应用程序高并发高负荷处理方法和系统,能够使移动终端应用程序在高负载高并发情况下表现出更优的处理效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的高并发高负荷处理方法的主要流程示意图;
图2为kafka集群架构下的基本工作流程示意图;
图3为redis数据库的架构组成示意图;
图4为java环境下Protocol buffers的基本操作流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种应用程序高并发高负荷处理方法和系统。
实施例一
本发明实施例一提供一种应用程序高并发高负荷处理方法,参见图1所示,该方法包括:
步骤S110,以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式。
在后端API(Application Programming Interface,应用程序编程接口)跟前端客户端android、ios交互中,以高效率的Protocol Buffers数据来替代传统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中blocking queue为阻塞队列,send thread为发送线程,kafka cluster为kafka集群,syncproducer即同步producer,形成producer pool即producer池。
在本发明实施例中,kafka和JMS(Java Message Service)实现(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可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
在本发明实施例中,Protocol buffers是一个用来序列化结构化数据的技术,支持多种语言诸如C++、Java以及Python语言,可以使用该技术来持久化数据或者序列化成网络传输的数据。相比较一些其他的XML技术而言,该技术的一个明显特点就是更加节省空间(以二进制流存储)、速度更快以及更加灵活。参见图4所示,图4是java环境下Protocolbuffers的基本操作流程。
实施例二
本发明实施例二提供一种应用程序高并发高负荷处理系统。该系统与客户端、后端API数据连接,包括Protocol Buffers数据传输模块、redis集群模块、高速消息队列kafka模块和任务调度系统。
其中Protocol Buffers数据传输模块,用于以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式;redis集群模块,用于通过redis集群将数据交由后端API返回到客户端;高速消息队列kafka模块,用于通过高速消息队列kafka来联接所述任务调度系统。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种应用程序高并发高负荷处理方法,其特征在于,包括步骤:
以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式;
通过redis集群将数据交由后端API返回到客户端;
通过高速消息队列kafka来联接任务调度系统。
2.如权利要求1所述的应用程序高并发高负荷处理方法,其特征在于,所述步骤通过高速消息队列kafka来联接任务调度系统,还包括步骤:
使日志文件根据broker中的配置要求,将被消费消息保留预定的时间之后删除。
3.如权利要求1所述的应用程序高并发高负荷处理方法和系统,其特征在于,所述步骤通过高速消息队列kafka来联接任务调度系统还包括步骤:
使consumer保存被消费消息的offset,并控制offset的保存和使用。
4.如权利要求1-3中任一项所述的应用程序高并发高负荷处理方法,其特征在于,所述步骤通过高速消息队列kafka来联接任务调度系统还包括步骤:
使consumer和producer的状态信息由zookeeper保存。
5.如权利要求1所述的应用程序高并发高负荷处理方法,其特征在于,所述步骤通过redis集群将数据交由后端API返回到客户端,还包括步骤:
Redis集群支持数据从主服务器向任意数量的从服务器上同步。
6.一种应用程序高并发高负荷处理系统,与客户端、后端API数据连接,其特征在于,包括Protocol Buffers数据传输模块、redis集群模块、高速消息队列kafka模块和任务调度系统;
所述Protocol Buffers数据传输模块,用于以Protocol Buffers数据替代json数据作为后端API跟客户端交互的数据传输方式;
所述redis集群模块,用于通过redis集群将数据交由后端API返回到客户端;
所述高速消息队列kafka模块,用于通过高速消息队列kafka来联接所述任务调度系统。
7.根据权利要求6所述的应用程序高并发高负荷处理系统,其特征在于,所述高速消息队列kafka模块,还用于使日志文件根据broker中的配置要求,将被消费消息保留预定的时间之后删除。
8.如权利要求6所述的应用程序高并发高负荷处理系统,其特征在于,所述高速消息队列kafka模块,还用于使consumer保存被消费消息的offset,并控制offset的保存和使用。
9.如权利要求6-8中任一项所述的应用程序高并发高负荷处理系统,其特征在于,所述高速消息队列kafka模块,还用于使consumer和producer的状态信息由zookeeper保存。
10.如权利要求6所述的应用程序高并发高负荷处理系统,其特征在于,所述redis集群模块,还用于支持数据从主服务器向任意数量的从服务器上同步。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710678339.0A CN107231443A (zh) | 2017-08-10 | 2017-08-10 | 一种应用程序高并发高负荷处理方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710678339.0A CN107231443A (zh) | 2017-08-10 | 2017-08-10 | 一种应用程序高并发高负荷处理方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107231443A true CN107231443A (zh) | 2017-10-03 |
Family
ID=59958070
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710678339.0A Pending CN107231443A (zh) | 2017-08-10 | 2017-08-10 | 一种应用程序高并发高负荷处理方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107231443A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108123938A (zh) * | 2017-12-14 | 2018-06-05 | 中盈优创资讯科技有限公司 | 一种aaa服务实现方法及系统 |
CN108345635A (zh) * | 2017-12-29 | 2018-07-31 | 广州品唯软件有限公司 | 一种高可用的账单系统及账单生成处理方法 |
CN109151037A (zh) * | 2018-09-04 | 2019-01-04 | 政采云有限公司 | 一种通信方法及装置 |
CN109408212A (zh) * | 2018-09-28 | 2019-03-01 | 平安科技(深圳)有限公司 | 任务调度组件构造方法、装置及存储介质、服务器 |
CN111241355A (zh) * | 2020-01-08 | 2020-06-05 | 浪潮天元通信信息系统有限公司 | 消息转发方法及服务端 |
CN111628956A (zh) * | 2019-02-28 | 2020-09-04 | 阿里巴巴集团控股有限公司 | 一种网络请求传输数据的格式转换方法、装置和系统 |
CN112506992A (zh) * | 2020-12-04 | 2021-03-16 | 中国人寿保险股份有限公司 | Kafka数据的模糊查询方法、装置、电子设备和存储介质 |
CN112506960B (zh) * | 2020-12-17 | 2024-03-19 | 青岛以萨数据技术有限公司 | 基于ArangoDB引擎的多模型数据存储方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778248A (zh) * | 2014-02-18 | 2014-05-07 | 成都致云科技有限公司 | 高效自描述的复杂数据对象序列化方法 |
CN106201739A (zh) * | 2016-06-29 | 2016-12-07 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于Redis的Storm的远程调用方法 |
-
2017
- 2017-08-10 CN CN201710678339.0A patent/CN107231443A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103778248A (zh) * | 2014-02-18 | 2014-05-07 | 成都致云科技有限公司 | 高效自描述的复杂数据对象序列化方法 |
CN106201739A (zh) * | 2016-06-29 | 2016-12-07 | 上海浦东发展银行股份有限公司信用卡中心 | 一种基于Redis的Storm的远程调用方法 |
Non-Patent Citations (2)
Title |
---|
TIANNING ZHANG,: ""Industry Paper: Reliable Event Messaging in Big Data Enterprises Looking for the Balance between Producers and Consumers"", 《DEBS’15 PROCEEDING OF THE 9TH ACM INTERNATIONAL CONFERENCE ON DISTRIBUTED EVENT-BASED SYSTEMS》 * |
杨华辉,: ""分布式日志系统的设计与实现"", 《中国优秀硕士学位论文全文数据库-信息科技辑》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108123938A (zh) * | 2017-12-14 | 2018-06-05 | 中盈优创资讯科技有限公司 | 一种aaa服务实现方法及系统 |
CN108345635A (zh) * | 2017-12-29 | 2018-07-31 | 广州品唯软件有限公司 | 一种高可用的账单系统及账单生成处理方法 |
CN109151037A (zh) * | 2018-09-04 | 2019-01-04 | 政采云有限公司 | 一种通信方法及装置 |
CN109151037B (zh) * | 2018-09-04 | 2022-03-04 | 政采云有限公司 | 一种通信方法及装置 |
CN109408212A (zh) * | 2018-09-28 | 2019-03-01 | 平安科技(深圳)有限公司 | 任务调度组件构造方法、装置及存储介质、服务器 |
CN109408212B (zh) * | 2018-09-28 | 2023-09-19 | 平安科技(深圳)有限公司 | 任务调度组件构造方法、装置及存储介质、服务器 |
CN111628956A (zh) * | 2019-02-28 | 2020-09-04 | 阿里巴巴集团控股有限公司 | 一种网络请求传输数据的格式转换方法、装置和系统 |
CN111241355A (zh) * | 2020-01-08 | 2020-06-05 | 浪潮天元通信信息系统有限公司 | 消息转发方法及服务端 |
CN111241355B (zh) * | 2020-01-08 | 2023-06-16 | 浪潮通信信息系统有限公司 | 消息转发方法及服务端 |
CN112506992A (zh) * | 2020-12-04 | 2021-03-16 | 中国人寿保险股份有限公司 | Kafka数据的模糊查询方法、装置、电子设备和存储介质 |
CN112506992B (zh) * | 2020-12-04 | 2024-04-16 | 中国人寿保险股份有限公司 | Kafka数据的模糊查询方法、装置、电子设备和存储介质 |
CN112506960B (zh) * | 2020-12-17 | 2024-03-19 | 青岛以萨数据技术有限公司 | 基于ArangoDB引擎的多模型数据存储方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107231443A (zh) | 一种应用程序高并发高负荷处理方法和系统 | |
CN103605576B (zh) | 一种基于多线程的MapReduce执行系统 | |
US10523586B2 (en) | Port switch service system | |
CN102857577B (zh) | 一种集群存储自动负载均衡的系统及方法 | |
CN102426542B (zh) | 数据中心资源管理系统及作业调度方法 | |
CN104092767A (zh) | 一种增加消息队列模型的发布/订阅系统及其工作方法 | |
CN110113420A (zh) | 基于nvm的分布式消息队列管理系统 | |
CN110121863A (zh) | 用于向多个订户提供消息的系统和方法 | |
CN109725829A (zh) | 用于数据存储系统的端到端 QoS 解决方案的系统和方法 | |
CN101080001B (zh) | 网络电视系统中用于实现媒体内容均衡的装置及其方法 | |
CN107332719A (zh) | 一种cdn系统内日志实时分析的方法 | |
CN104168323B (zh) | 一种云服务系统及方法 | |
CN110262754B (zh) | 一种面向NVMe和RDMA的分布式存储系统及轻量级同步通信方法 | |
CN108280080A (zh) | 一种数据同步方法、装置以及电子设备 | |
CN104580532A (zh) | 一种跨平台应用系统 | |
CN102855133A (zh) | 一种计算机处理单元交互式系统 | |
WO2021077748A1 (zh) | 一种基于dpdk实现流量分析业务性能线性增长的方法 | |
WO2015106656A1 (zh) | 一种跨数据中心的数据同步方法 | |
Li et al. | Scalable and dynamic replica consistency maintenance for edge-cloud system | |
CN102541467A (zh) | 一种对象数据服务器读写请求的调度方法 | |
CN102857531A (zh) | 一种基于云计算的远程交互式系统 | |
CN102857533A (zh) | 一种基于云计算的远程交互式系统 | |
CN112328569A (zh) | 基于Flume分布式数据收集架构的构建方法 | |
CN103312808B (zh) | 一种云操作系统总线及通信方法 | |
US20210374152A1 (en) | Label-based data representation i/o process and system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171003 |