本技术涉及计算机,特别涉及一种流量统计方法、装置、系统、电子设备及存储介质。
背景技术:
1、网络安全设备提供各种业务数据安全传输和检查功能,同时提供各种业务流量信息查询功能。设备web管理系统对业务流量进行实时查询和展示,有利于操作员实时了解各业务在系统中的运行情况,各业务的流量数据画成曲线图、饼图、柱状图等形式,操作员在查看业务数据时更为直观。因此对业务的流量进行统计是必要的。
2、现有技术的实现方式可以为:通过业务应用进程在处理业务报文时进行流量统计并记录在业务连接内,并定时将流量统计数据以网络连接的通信方式发送给流量统计进程,流量统计进程启动监听服务读取接收的业务流量统计数据并写入数据库。现有技术的实现方式还可以为:通过业务应用进程在处理业务报文时进行流量统计并记录在业务连接内,并定时将流量统计数据以内存块的形式添加到共享内存中的缓存队列中,流量统计进程定时读取缓存队列中的内存块并将数据写入数据库。
3、上述现有技术存在的问题为,首先,无法实时统计流量,其次,业务数据量增大和业务连接并发量增大会导致网络连接开销增大,影响系统整体性能。
技术实现思路
1、为了解决现有技术的上述技术问题中的至少一个,本技术实施例的目的在于提供一种流量统计方法、装置、电子设备及存储介质。
2、根据本技术第一方面提供的流量统计方法,所述方法包括:
3、初始化流量统计进程,至少包括基于共享内存中创建的第一数据对内存池初始化、消息传输初始化;
4、基于业务应用进程建立业务应用连接,以产生业务应用数据流量;以及
5、通过所述流量统计进程对所述业务应用在数据传输过程中的流量进行统计;。
6、根据本技术的一个实施方式,所述第一数据包括无锁循环队列数组;
7、所述内存池初始化,包括:
8、在共享内存中创建第一无锁循环队列数组,用于存储所述业务应用所需的内存块的内存块管理结构体,所述第一无锁循环队列数组的下标与cpu核心序号一一对应;
9、其中,所述内存块管理结构体的成员数据至少包括业务应用地址,所述业务应用地址用于标识业务应用所需的内存块的地址指针。
10、根据本技术的一个实施方式所述消息传输初始化,包括:
11、在共享内存中创建第二无锁循环队列数组,用于被动态写入所述第一无所循环队列数组中存储的内存块地址,所述第二无锁循环队列数组的下标与cpu核心序号一一对应。
12、根据本技术的一个实施方式,初始化流量统计进程,还包括数据缓存初始化,其包括:
13、创建单向链表,所述单向链表用于缓存从所述第二无锁循环队列数组中获取的所述业务应用所需的内存块的指针地址;以及
14、启动定时器,定时遍历所述单向链表和定时从所述第二无锁循环队列数组中获取所述业务应用所需的内存块的指针地址。
15、根据本技术的一个实施方式,初始化流量统计进程,还包括分类汇总初始化,其包括:创建哈希表,所述哈希表用于在流量统计时记录多个不同的所述业务应用产生的流量信息。
16、根据本技术的一个实施方式,基于业务应用进程建立业务应用连接,包括:
17、为所述业务应用分配所述业务应用所需的内存块;
18、将所述业务应用所需的内存块的指针地址保存到业务连接中;
19、基于所述业务应用的首个业务报文数据对所述业务应用所需的内存块进行初始化;
20、将所述业务应用所需的内存块的指针地址写入所述第一无锁循环队列数组中;
21、数据缓存模块遍历消息传输模块的第二无锁循环队列数组,读取所述业务应用所需的内存块的指针地址,将其保存到所述单向链表中。
22、根据本技术的一个实施方式,基于所述业务应用的首个业务报文数据对所述业务应用所需的内存块进行初始化,包括:
23、基于所述业务应用的首个业务报文数据,通过内存块管理结构体对所述业务应用所需的内存块进行初始化;
24、所述内存块管理结构体的成员数据还包括所述业务应用的ip地址、端口、应用协议、流量统计数值和flag标记,所述flag标记用于表征所述业务应用所需的内存块是否被占用;
25、所述基于所述业务应用的首个业务报文数据,通过所述内存块管理结构体对所述业务应用所需的内存块进行初始化,包括:基于所述业务应用的首个业务报文数据,获取所述业务应用的ip地址、端口、应用协议,并将所述业务应用的ip地址、端口、应用协议分别赋值给所述内存块管理结构体对应的成员数据,将流量统计数值初始化为零,将所述flag标记初始化为所述业务应用所需的内存块被占用。
26、根据本技术的一个实施方式,通过所述流量统计进程对所述业务应用在数据传输过程中的流量进行统计,包括:
27、业务应用进程在处理首个业务报文后的数据报文时,通过业务连接中保存的所述业务应用所需的内存块的指针地址访问所述内存块管理结构体,并将业务流量数据更新到所述内存块管理结构体的流量统计数值中;
28、定时访问所述单向链表,通过所述单向链表中所述业务应用所需的内存块的指针地址读取业务应用的数据;以及
29、将所述业务应用的数据分类,通过哈希表记录,按照不同类别进行流量汇总统计。
30、根据本技术的一个实施方式,所述方法还包括业务应用关闭连接,所述业务应用关闭连接包括:
31、所述内存块管理结构体的成员数据还包括时间戳标记,用于标识所述业务应用流量统计的起始时间和截至时间;
32、所述业务应用进程收到关闭连接的数据报文时,通过业务连接中的业务应用所需的内存块的指针地址访问所述内存块管理结构体,将内存块管理结构体中flag标记更新为结束标记,并更新所述时间戳标记。
33、根据本技术的一个实施方式,所述方法还包括释放资源,所述释放资源包括:
34、查询所述第二无锁循环队列,读取所述业务应用所需的内存块的指针地址并写入到所述单向链表中;
35、遍历所述单向链表并读取所述业务应用所需的内存块的数据,将所述业务应用所需的内存块的数据发送到分类汇总模块,将所述业务应用所需的内存块的指针地址从单向链表中移除;
36、基于所述业务应用所需的内存块的数据进行分类统计,将所述哈希表中的统计数据写入到数据库中,并清空所述哈希表;以及
37、释放内存池中所述业务应用所需的内存块。
38、根据本技术第二方面提供的流量统计装置,所述装置包括:
39、初始化模块,初始化流量统计进程,至少包括基于共享内存中创建的第一数据对内存池初始化、消息传输初始化;
40、业务应用进程模块,用于基于业务应用进程建立业务应用连接,以产生业务应用数据流量;以及
41、业务流量统计模块,用于通过所述流量统计进程对所述业务应用进行流量统计。
42、根据本技术第三方面提供的流量统计系统,所述流量统计系统包括:
43、业务应用进程模块,用于建立业务应用连接,以产生业务应用数据流量;
44、流量统计进程模块,用于基于初始化流量统计进程统计所述业务应用的数据流量,得到流量统计信息;初始化流量统计进程至少包括基于共享内存中创建的第一数据对内存池初始化、消息传输初始化;管理系统,用于基于所述流量统计信息,使得用户以人机交互方式查询所述业务应用的流量统计信息;以及
45、数据库,用于存储所述流量统计信息。
46、根据本技术第四方面提供的电子设备,包括处理器和存储器,所述存储器中存储有可执行程序,所述存储器执行所述可执行程序以进行上述任意一项所述的流量统计方法。
47、根据本技术第五方面提供的存储介质,所述存储介质承载有一个或者多个计算机程序,所述一个或者多个计算机程序被处理器执行时实现上述任意一项所述的流量统计方法。
48、本技术提供的流量统计方法,一方面,通过共享内存缓存数据,可以对业务应用数据流量进行实时性统计,另一方面,通过对业务数据报文进行分类统计汇总,满足了业务的复杂统计的需求。