一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种使用异步流程解决后端系统高并发难题的设计方法与流程

2022-12-06 23:15:11 来源:中国专利 TAG:


1.本发明涉及互联网应用领域,具体涉及一种使用异步流程解决后端系统高并发难题的设计方法。


背景技术:

2.中国是互联网发展最为快速的国家、由于人口基数大,随之而来的就是有价值的互联网应用需要面对海量的用户请求和人性化的用户体验,特别是电商平台、互联网金融、保险、支付等行业,它们的系统对于承接大并发、高吞吐量、低延迟的要求非常迫切。传统对大并发、高吞吐量、低延迟的涉及侧重于业务流程的优化,数据库的优化,增加中间件,以及增加硬件资源的投入,但是这些优化手段随着用户量请求的不断加大和业务系统功能日益复杂,效果与投入比却越来越小,最终到达瓶颈。


技术实现要素:

3.针对上述问题,本发明提供一种使用异步流程解决后端系统高并发难题的设计方法,通过优异可靠的中间件作为数据中转站、同步转异步、多维度多梯度保障数据不丢失。
4.名词解释:
5.1、redis:高性能、易于扩容的键值对缓存数据库。
6.2、kafka:一种高吞吐量的分布式发布订阅消息系统。
7.3、topic:消息系统按topic对消息类型进行分类。
8.4、logstach:实时的管道式开源日志收集引擎。
9.5、key:数据存储唯一标识。
10.6、json:一种轻量级的数据交换格式。
11.7、set:数据库数据存储指令。
12.为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:一种使用异步流程解决后端系统高并发难题的设计方法,包括如下步骤:
13.步骤一、搭建高可用的kafka集群、redis集群,做为异步流程数据源,充当异步数据处理中转站,安装logstach,收集应用日志;
14.步骤二、将业务流程中需要保存在数据库中的数据称为一阶段数据集,将一阶段数据集插入redis集群中,基于内部流水号保证数据的key唯一;
15.步骤三、将一阶段数据集以特定的json格式字符串写入日志文件,日志格式区别于普通的日志格式;
16.步骤四、处理完正常的其他业务逻辑后,根据处理完的结果信息补全或更新一阶段数据集,得到最终落库数据集,称为二阶段数据集;
17.步骤五、将二阶段数据集使用生产者发往kafka集群特定topic,称为去库topic;
18.步骤六、将二阶段数据集存入redis集群中,其key值必须与一阶段数据集不同,基于外部流水号保证每一条数据唯一;
19.步骤七、kafka集群消费者消费去库topic,异步执行数据落库流程;
20.步骤八、定时复查基于存入redis集群的一阶段数据集复查数据是否成功落库;
21.步骤九、定时复查基于logstach日志采集的一阶段数据集复查数据是否成功落库。
22.优选的,中间件集群需要单独使用,不和其他应用系统共用。
23.优选的,利用kafka集群的异步流程担任主要异步落库职责,redis集群承担第二层数据保障任务,logstach承担第三层数据保障任务。
24.优选的,三层数据恢复机制之间需要协同合作,依此递进保障数据完整不丢失。
25.优选的,三层数据恢复机制执行时机交错兜底进行,但是数据落库的流程必须是同一套代码,这个流程称作restore流程,restore流程要兼容考虑三种不同数据源。
26.优选的,kafka集群的生产者和消费者需要以单独的进程运行,不可在一个进程中用多个线程运行。
27.优选的,redis中保存的第一阶段数据集用于restore流程,第二阶段数据集用于如果发生kafka消息丢失的异常补救措施,是一种复杂系统容错机制。
28.优选的,步骤三中所述特定的json格式字符串具体为:将一阶段数据集进行json格式序列化,在序列化字符串前面加上特定日志标识。以方便logstach日志插件读取识别到这些数据日志,为第三层日志恢复机制提供数据来源。
29.与现有技术相比较,本发明的有益效果是:
30.其一:数据的同步转异步设计能够大大减少同步流程的耗时,很好满足了低延迟的系统指标要求,同时在相同条件下,并发量、吞吐量也由此得到大幅提升。
31.其二:通过三层数据恢复机制,提高异步处理健壮性,保证数据不会丢失。
32.其三:通过系统模块化设计提升复杂系统并行开发效率以及排错效率。
33.其四:核心restore流程统一设计降低复杂系统之间协作难度,提高数据恢复质量。
附图说明
34.图1是本发明一种使用异步流程解决后端系统高并发难题的设计方法的架构图;
35.图2是本发明的详细流程图;
36.图3是本发明中异步处理流程的详细流程图。
具体实施方式
37.下面结合附图和具体的实施例对本发明技术方案做进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
38.一种使用异步流程解决后端系统高并发难题的设计方法,如图1、2所示,具体包括如下步骤:
39.步骤1、搭建高可用的kafka集群、redis集群,做为异步流程数据源,充当异步数据处理中转站,安装logstach,收集应用日志。日志记录很重要,这也是最后一层保障。kafka集群、redis集群存储数据涉及内存、网络传输,如果出现操作系统、网络等底层错误,数据
可能会丢失,而日志是直接写在本地磁盘上的,相对前两种更安全一些,所以这也是数据在未保存到数据库之前的中间存储地兜底方案。
40.步骤2、业务流程中需要保存在数据库中的数据,称为一阶段数据集,将一阶段数据集插入redis集群中,基于内部流水号保证数据的key唯一。内部流水号需要使用序列号生成器生成,序列号种需要包括到毫秒级的时间戳,这样可以从中提取出数据发生的时间点,一阶段数据集存放在redis集群中使用set集合存放,这样可以按时间区间将数据存入redis集群,一天24个小时,按两个小时为一个区间。正常情况下第一层kafka数据处理在几秒中会完成,第二层的基于redis复查数据任务可以定时执行,按时间区间检查过去两个小时内redis中的数据是否正常处理完成,如果正常,这两个小时的数据就可以被清除,因为数据已经在数据库中完成持久化,这种数据复查机制设计可以控制redis内存大小;如果数据不正常,就使用redis中的数据执行异步处理流程,第二层数据保障机制生效,处理完成后同样要消除数据。
41.步骤3、将一阶段数据集以特定的json格式字符串写入日志文件,日志格式区别于普通的日志格式。将一阶段数据集进行json格式序列化,在序列化字符串前面加上特定日志标识,以方便logstach日志插件读取识别到这些数据日志,为第三层日志恢复机制提供数据来源。
42.步骤4、处理完正常的其他业务逻辑后,根据处理完的结果信息补全或更新一阶段数据集,得到最终落库数据集,称为二阶段数据集。
43.步骤5、将二阶段数据集使用生产者发往kafka集群特定topic,称为去库topic。如果使用了业务系统同一套kafka集群,topic名称一定要区别于其它业务topic。
44.步骤6、将二阶段数据集存入redis集群中,其key值必须与一阶段数据集不同,基于外部流水号保证每一条数据唯一。这个数据集主要提供一阶段数据在同步处理完成后的结果缓存。因为redis中存入的一阶段数据集并不是最终需要保存的数据。
45.步骤7、kafka集群消费者消费去库topic,异步执行数据落库流程。步骤1-6都是同步流程中需要完成的,从本步骤开始都属于异步流程。
46.步骤8、定时复查基于存入redis集群的一阶段数据集复查数据是否成功落库。
47.步骤9、定时复查基于logstach日志采集的一阶段数据集复查数据是否成功落库。
48.三层数据恢复机制都是同一套流程,就是同一份代码,只是运行在三个不同的进程中,异步处理的数据入口不一样而已,所以异步流程需要兼容三种情况考虑。如图3所示,异步流程需要包含如下流程:
49.1、判断需要处理的数据是第一阶段数据集还是第二阶段数据集,如果是第一阶段数据集,需要去获取第二阶段数据集,通过步骤6中的缓存或正常的业务流程,如外部接口获取到第二阶段数据集。
50.2、同步转异步处理的核心流程,应该将其封装成一个独立的部分调用。这个部分就是保存数据的流程,从同步流程中抽离出来的最耗时的那一部分。
51.3、如果上一步处理的是第一阶段的数据集,那么第三部要再次尝试获取到第二阶段数据集,完成数据更新流程,这个流程同上一步,也是从同步流程中抽离出来的封装成一个独立的部分调用,如果这一步并未完成,依旧获取不到第二阶段数据集,那就需要另外的进程完成补偿机制,这个补偿机制与是同步处理数据集还是异步处理数据集无关,其是做
为完整业务数据闭环独立存在的一部分。
52.4、异步流程处理完成后的收尾工作,清除redis集群中的相关数据,在日志中记录异步数据处理完成。
53.另外,在实际生产中,监控是必不可少的一个重要环节,在本发明中,监控可以有三个维度:redis内存大小监控、kafka集群消息消费情况监控、数据库数据持久化后情况监控。
54.本实施例中,数据的同步转异步设计能够大大减少同步流程的耗时,很好满足了低延迟的系统指标要求,同时在相同条件下,并发量、吞吐量也由此得到大幅提升。通过三层数据恢复机制,提高异步处理健壮性,保证数据不会丢失。通过系统模块化设计提升复杂系统并行开发效率以及排错效率。核心restore流程统一设计降低复杂系统之间协作难度,提高数据恢复质量。
55.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其它相关的技术领域,均同理包含在本发明的专利保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献