一种基于ProtoBuf协议的心跳监控方法及系统
文献发布时间:2023-06-19 16:04:54
技术领域
本发明涉及一种基于ProtoBuf协议的心跳监控方法及系统,属于高并发技术领域。
背景技术
随着在互联网技术中的不断发展,人们的生活和互联网之间的关系越来越紧密,以前像线下的购物、旅行等生活方式,都在互联网技术的影响下,这些类似购物、旅行等活动会转变成在线上进行,互联网技术的产生极大的方便了人们的生活。
2020年中国互联网信息中心发布《第46次中国互联网络发展状况统计报告》,报告显示,截至2020年6月底我国互联网使用人数达9.4亿,较2020年3月增长3625万,互联网普及率达67%,较2020年3月提升2.5个百分点。同时在5G时代的全面开启,人们的日常生活和互联网的联系越来越紧密,互联网交互行为越来越多。在当下互联网时代背景下,庞大的业务请求和广阔的业务调用,高并发的场景越来越多,系统所面临的压力变的越来越大。例如2021年春节微信抢红包的应用,在除夕至初五的6天时间里,全国微信红包收发总量突破460亿次,2020年淘宝双十一最大流量峰值在583万笔/秒,峰值是2009年淘宝第一次双十一的1457倍,高并发场景对于互联网系统应用提出了非常高的要求。
因此,本申请提出一种基于ProtoBuf协议的心跳监控方法及系统。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于ProtoBuf协议的心跳监控方法及系统,能够提高并实时监控服务器的运行速度。
为达到上述目的,本发明是采用下述技术方案实现的:
第一方面,本发明提供一种基于ProtoBuf协议的心跳监控方法,由客户端执行:
接收写入信号,响应于在预设时间Ⅰ内持续未接收到写入信号,则基于ProtoBuf协议构建请求心跳包,将请求心跳包发送至服务端,并接收服务端响应于心跳指令信号,基于ProtoBuf协议构建的响应心跳包;
响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接;
获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值;
比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号;
所述请求心跳包包括心跳指令信号。
进一步地,所述请求心跳包包括:客户端标识号信号、客户端系统内容信号、上传数据指令信号和验证指令号;
所述响应心跳包包括:服务端标识号信号、服务端系统内容信号、响应指令信号、推送数据指令信号以及验证返回指令信号。
进一步地,所述响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接包括:
响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,则触发器生成客户端系统活动状态信号,并将客户端系统活动状态信号发送至客户端;
客户端根据客户端系统活动状态信号,验证客户端系统活动状态;
响应于客户端系统活动状态为心跳检测活动状态,判断客户端失败心跳计数器的累计值Ⅰ与预设的上限次数Ⅰ的大小:
其中,当累计值Ⅰ大于等于预设的上限次数Ⅰ,则客户端关闭与服务端的连接通道,并重新连接;
当累计值Ⅰ小于预设的上限次数Ⅰ,则客户端再次将请求心跳包发送至服务端;
响应于客户端再次将请求心跳包发送至服务端,客户端失败心跳计数器加1。
进一步地,所述的基于ProtoBuf协议的心跳监控方法包括:
响应于服务端将响应心跳包发送至客户端,客户端失败心跳计数器清零。
第二方面,本发明提供一种基于ProtoBuf协议的心跳监控方法,由服务端执行:
接收客户端发射的心跳指令信号,响应于在预设时间Ⅲ内持续未接收到客户端发射的心跳指令信号,则关闭与客户端的连接通道,等待客户端重连;
响应于客户端发射的心跳指令信号,则基于ProtoBuf协议构建响应心跳包,并将响应心跳包发送至客户端;
获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值;
比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
进一步地,所述请求心跳包包括:客户端标识号信号、客户端系统内容信号、上传数据指令信号和验证指令号;
所述响应心跳包包括:服务端标识号信号、服务端系统内容信号、响应指令信号、推送数据指令信号以及验证返回指令信号。
进一步地,所述响应于在预设时间Ⅲ内持续未接收到服务端发射的心跳指令信号,服务端关闭与客户端的连接通道包括:
响应于在预设时间Ⅲ内持续未接收到请求信号,服务端触发器生成服务端系统活动状态信号,并将服务端系统活动状态信号发送至服务端;
服务端根据服务端系统活动状态信号,验证服务端系统活动状态;
响应于服务端系统活动状态为非心跳检测活动状态,判断服务端失败心跳计数器的累计值Ⅱ与预设的上限次数Ⅱ的大小:
其中,当累计值Ⅱ大于等于预设的上限次数Ⅱ,则服务端关闭与客户端的连接通道,等待客户端重新连接;
当累计值Ⅱ小于预设的上限次数Ⅱ,则服务端失败心跳计数器加1。
进一步地,所述的基于ProtoBuf协议的心跳监控方法包括:
响应于服务端将响应心跳包发送至客户端,服务端失败心跳计数器清零。
第三方面,本发明提供一种基于ProtoBuf协议的心跳监控系统,包括:
请求响应模块,接收写入信号,响应于在预设时间Ⅰ内持续未接收到写入信号,则基于ProtoBuf协议构建请求心跳包,将请求心跳包发送至服务端,并接收服务端响应于心跳指令信号,基于ProtoBuf协议构建的响应心跳包;
重连模块,用于响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接;
ping值计算模块,用于获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值;
告警模块,用于比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
第四方面,本发明提供一种基于ProtoBuf协议的心跳监控系统,包括:
断连模块,用于接收客户端发射的心跳指令信号,响应于在预设时间Ⅲ内持续未接收到客户端发射的心跳指令信号,则关闭与客户端的连接通道,等待客户端重连;
响应模块,用于响应于客户端发射的心跳指令信号,则基于ProtoBuf协议构建响应心跳包,并将响应心跳包发送至客户端;
ping值计算模块,用于获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值;
告警模块,用于比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
与现有技术相比,本发明所达到的有益效果:
本发明基于ProtoBuf协议的心跳监控方法能够提高并实时监控服务器的运行速度,并在发生宕机后,实现客户端和服务端自动重连,及时优化网络资源使用率和网络传输速率,提高了服务器在高并发环境中正常运行的可靠性。
附图说明
图1所示为本发明基于ProtoBuf协议的心跳监控方法的一种实施例流程图;
图2所示为本发明基于ProtoBuf协议的心跳监控方法的一种实施例流程图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
建立连接的客户端和服务端之间在预设时间内未发生信号传递后,通过心跳监控方法计算服务器的ping值,用于初判服务器运行是否正常。
ProtoBuf协议全称Google Protocol Buffers协议,是google开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。相比于Json协议和Kryo协议,ProtoBuf协议具有更高的转化效率,时间效率和空间效率,因此本申请基于ProtoBuf协议,构建请求心跳包和响应心跳包。
实施例1
本实施例提供一种基于ProtoBuf协议的心跳监控方法,参考图1,由客户端执行:
S11接收写入信号,响应于在预设时间Ⅰ内持续未接收到写入信号,则基于ProtoBuf协议构建请求心跳包,将请求心跳包发送至服务端,并接收服务端响应于心跳指令信号,基于ProtoBuf协议构建的响应心跳,其中,请求心跳包包括心跳指令信号;
S12响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接;
S13获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值,应用中,ping值为时间Ⅰ和时间Ⅱ的时间差的一半;
S14比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
本发明基于ProtoBuf协议的心跳监控方法能够提高并实时监控服务器的运行速度,并在发生宕机后,实现客户端和服务端自动重连,及时优化网络资源使用率和网络传输速率,提高了服务器在高并发环境中正常运行的可靠性。
实施例2
在实施例1的基础上,本实施例详细介绍了请求心跳包和响应心跳包。
首先基于ProtoBuf协议定义出消息协议文件和指令类型协议文件;
然后,通过消息协议文件生成消息类文件,消息协议文件和消息类文件的内容表达意思一致,消息类文件为Message.java,能够用于系统运行;通过指令类型协议文件生成指令类型类文件,指令类型协议文件和指令类型类文件的内容表达意思一致,指令类型类文件为Command.java,能够用于系统运行。
请求心跳包和响应心跳包均包括消息类文件和指令类型类文件。
请求心跳包的消息类文件包括三组数据:客户端标识号、客户端系统内容和指令类型;其中,请求心跳包的指令类型包括:心跳指令、验证指令、上传数据指令和推送数据指令;客户端系统内容是客户端系统内部逻辑产生;
请求心跳包的指令类型类文件包括心跳指令、验证指令、上传数据指令和推送数据指令对应的数据,是客户端系统内部逻辑产生。
响应心跳包的消息类文件包括三组数据:服务端标识号、服务端系统内容以及指令类型;其中,响应心跳包的指令类型包括:响应指令、验证返回指令、上传数据指令和推送数据指令;服务端系统内容是服务端系统内部逻辑产生。
响应心跳包的指令类型类文件包括响应指令、验证返回指令、上传数据指令和推送数据指令对应的数据,是服务端系统内部逻辑产生。
因此,本实施例的请求心跳包能够传递客户端标识号信号、客户端系统内容信号、心跳指令信号、验证指令信号、上传数据指令信号和推送数据指令信号;响应心跳包能够传递服务端标识号信号、服务端系统内容信号、响应指令信号、验证返回指令信号、上传数据指令信号和推送数据指令信号。
实施例3
在实施例1或2的基础上,本实施例详细介绍了请求心跳周期:
响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接客户端与服务端的连接通道,包括:
S121响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接包括:
S122响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,则触发器生成客户端系统活动状态信号,并将客户端系统活动状态信号发送至客户端;
S123客户端根据客户端系统活动状态信号,验证客户端系统活动状态;
S124响应于客户端系统活动状态为心跳检测活动状态,判断客户端失败心跳计数器的累计值Ⅰ与预设的上限次数Ⅰ的大小:
其中,当累计值Ⅰ大于等于预设的上限次数Ⅰ,则客户端关闭与服务端的连接通道,并重新连接;
当累计值Ⅰ小于预设的上限次数Ⅰ,则客户端再次将请求心跳包发送至服务端;
S125响应于客户端再次将请求心跳包发送至服务端,客户端失败心跳计数器加1。
应用中,响应于客户端系统活动状态为非心跳检测活动状态或者客户端接收到到响应心跳包,客户端失败心跳计数器清零。
实施例4
本实施例提供一种基于ProtoBuf协议的心跳监控方法,参考图2,由服务端执行:
S21接收客户端发射的心跳指令信号,响应于在预设时间Ⅲ内持续未接收到客户端发射的心跳指令信号,则关闭与客户端的连接通道,等待客户端重连;
S22响应于客户端发射的心跳指令信号,则基于ProtoBuf协议构建响应心跳包,并将响应心跳包发送至客户端;
S23获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值;
S24比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
应用中,请求心跳包包括:客户端标识号信号、客户端系统内容信号、心跳指令信号、上传数据指令信号和验证指令号;响应心跳包包括:服务端标识号信号、服务端系统内容信号、响应指令信号、推送数据指令信号以及验证返回指令信号。
本发明基于ProtoBuf协议的心跳监控方法能够提高并实时监控服务器的运行速度,并在发生宕机后,实现客户端和服务端断开,及时优化网络资源使用率和网络传输速率,提高了服务器在高并发环境中正常运行的可靠性。
实施例5
在实施例4的基础上,本实施例详细介绍了响应心跳周期:
响应于在预设时间Ⅲ内持续未接收到客户端发射的心跳指令信号,服务端关闭与客户端的连接通道,包括:
S211响应于在预设时间Ⅲ内持续未接收到请求信号,服务端触发器生成服务端系统活动状态信号,并将服务端系统活动状态信号发送至服务端;
S212服务端根据服务端系统活动状态信号,验证服务端系统活动状态;
S213响应于服务端系统活动状态为非心跳检测活动状态,判断服务端失败心跳计数器的累计值Ⅱ与预设的上限次数Ⅱ的大小:
其中,当累计值Ⅱ大于等于预设的上限次数Ⅱ,则服务端关闭与客户端的连接通道,等待客户端重新连接;
当累计值Ⅱ小于预设的上限次数Ⅱ,则服务端失败心跳计数器加1。
应用中,响应于心跳指令信号或服务端系统活动状态为心跳检测活动状态,服务端基于ProtoBuf协议,构建响应心跳包,并将响应心跳包发送至客户端;响应于服务端将响应心跳包发送至客户端,服务端失败心跳计数器清零。
实施例6
在实施例1-5任一实施例的基础上,本实施例启动A、B、C三台服务器,其中A服务器的心跳包基于Json协议构建,B服务器的心跳包基于Kryo协议构建,C服务器的心跳包基于ProtoBuf协议构建。
将A、B、C三台服务器同时连续进行10次心跳检测实验。每次实验过程中,各服务器的客户端均发出lw次并发求和计算请求,并统计每台服务器每次实验的ping值,单位ms。
表1 A、B、C三台服务器10次心跳检测的ping值
通过表1可知,基于ProtoBuf协议构建心跳包的服务器的ping值明显低于Kryo协议和Json协议。由此可见,本实施例能够提高服务器的运行速度。
实施例7
本实施例提供一种基于ProtoBuf协议的心跳监控系统,包括:
请求响应模块,接收写入信号,响应于在预设时间Ⅰ内持续未接收到写入信号,则基于ProtoBuf协议构建请求心跳包,将请求心跳包发送至服务端,并接收服务端响应于心跳指令信号,基于ProtoBuf协议构建的响应心跳;
重连模块,用于响应于发送请求心跳包后,在预设时间Ⅱ内持续未收到响应心跳包,关闭与服务端的连接通道,并重新连接;
ping值计算模块,用于获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值,ping值为时间Ⅰ和时间Ⅱ的时间差的一半;
告警模块,用于比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
上述各功能模块的具体功能实现参照实施例1-3方法中的相关内容
实施例8
本实施例提供一种基于ProtoBuf协议的心跳监控系统,包括:
断连模块,用于接收客户端发射的心跳指令信号,响应于在预设时间Ⅲ内持续未接收到客户端发射的心跳指令信号,则关闭与客户端的连接通道,等待客户端重连;
响应模块,用于响应于客户端发射的心跳指令信号,则基于ProtoBuf协议构建响应心跳包,并将响应心跳包发送至客户端;
ping值计算模块,用于获取发送请求心跳包时的时间Ⅰ和接收响应心跳包时的时间Ⅱ,根据时间Ⅰ和时间Ⅱ计算ping值;
告警模块,用于比较ping值与预设阈值的大小,响应于ping值大于等于预设阈值,触发告警信号。
上述各功能模块的具体功能实现参照实施例4-5方法中的相关内容
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
- 一种基于ProtoBuf协议的心跳监控方法及系统
- 基于心跳协议的数据采集与监控系统的控制切换方法