CN109992572A - 一种自适应均衡日志存储请求的方法 - Google Patents
一种自适应均衡日志存储请求的方法 Download PDFInfo
- Publication number
- CN109992572A CN109992572A CN201910169181.3A CN201910169181A CN109992572A CN 109992572 A CN109992572 A CN 109992572A CN 201910169181 A CN201910169181 A CN 201910169181A CN 109992572 A CN109992572 A CN 109992572A
- Authority
- CN
- China
- Prior art keywords
- log
- types
- request packet
- buffer pool
- log storage
- 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
Abstract
本发明公开了一种自适应均衡日志存储请求的方法。本发明的方法包括:接收来自客户端的日志存储请求;接收模块提取客户端发送的日志存储请求包;解析模块解析所述日志存储请求包的日志类型字段;并根据日志存储请求包的日志类型字段,交由适当的日志存储缓冲池;统计模块统计不同类型(的日志存储请求包个数,自适应均衡调节各个不同类型日志存储缓冲池的资源;写入磁盘模块从日志存储缓冲池拉取日志内容持久化到磁盘。本发明采用异步写入,通过建立日志缓冲池解耦产生日志模块与写入日志模块,同时避免了大量内容较少的日志带来的磁盘IO问题。
Description
技术领域
本发明涉及日志采集技术领域,特别是涉及一种自适应均衡日志存储请求的方法。
背景技术
随着互联网技术的高速发展以及互联网技术在电商、传统工业等行业的推广应用,对工程人员更需要能快速定位异常问题。通常,人们首先通过查看日志文件来定位可能出现异常的位置。因此,日志文件存储服务对于一个线上业务的稳定运行、设备状况的监控具有重要意义。
传统日志文件存储采用同步的方法,通常直接采用系统调用来写入日志文件,每产生一次日志内容对应一次系统调用。这在日志产生不频繁的业务场景下没什么问题。但是,如果在日志产生很频繁的业务场景下,这种同步写日志的方法会带来多种弊端。
1. 大量的日志打印陷入等量的系统调用中,有很大的系统开销。当产生大量内容较少的日志打印时,系统调用的开销十分的昂贵。
2. 产生日志的进程又附带了大量同步的磁盘IO,在频繁写入日志的场景下,这会极大的影响业务性能。
3. 模块间耦合性高,产生日志模块同时承担着写入磁盘的业务,不利于后续业务的拓展,容易导致业务混乱,同时也不利于模块复用。
发明内容
本发明的目的在于克服现有技术存在的上述不足,提出一种自适应均衡日志存储请求的方法,该方法采用异步写入,通过建立日志缓冲池解耦产生日志模块与写入日志模块,同时避免了大量内容较少的日志带来的磁盘IO问题。
本发明的目的至少通过如下技术方案之一实现。
一种自适应均衡日志存储请求的方法,该方法包括:
一种自适应均衡日志存储请求的方法,其特征在于包括:
接收模块接收来自客户端的日志存储请求;
接收模块提取客户端发送的日志存储请求包;
解析模块解析所述日志存储请求包的日志类型字段;并根据日志存储请求包的日志类型字段,交由适当的日志存储缓冲池;
统计模块统计不同日志类型的日志存储请求包个数,自适应均衡调节各个日志类型日志存储缓冲池的存储资源;写入磁盘模块从日志存储缓冲池拉取日志内容持久化到磁盘。
进一步优化地,所述接收来自客户端的日志存储请求包括:
接收模块基于TCP/IP协议绑定其IP,并监听与客户端约定的端口;客户端向该端口发送日志存储的请求包;接收模块接收到客户端发送的日志存储请求包,并将其保存在服务器内存中,以供分析。
进一步优化地,所述接收模块提取客户端发送的日志存储请求包,包括:
在所述的日志存储请求包中的内容中预先设定好请求包中日志类型字段的位置,接收模块根据设定的位置提取指定字段;
进一步优化地,解析模块解析所述日志存储请求包的日志类型字段,具体包括:
查询所述服务器内存中预先建立的日志类型字典中是否有相应的字段值;若有,则可知道日志类型;否则,请求包错误。
进一步优化地,所述日志类型包括:
在所述的客户端与接收模块事先约定好日志等级类型,并在所述服务器内存中使用日志类型字典保存;结合请求包的日志类型,交由适当的日志存储缓冲池。
进一步优化地,所述交由适当的日志存储缓冲池,包括:
在所述的服务器内存中预先建立好对应不同日志类型的日志存储缓冲池;将不同日志类型的请求包重定向到不同的日志存储缓冲池。
进一步优化地,所述预先建立好对应不同日志类型的日志存储缓冲池,具体按照以下步骤进行:
初始化服务器内存;根据日志类型的种数,创建与日志类型数相同数量的个可调节大小的日志缓存储冲池;将不同日志类型的缓冲池调整策略加载到日志存储缓冲池中。
进一步优化地,所述统计不同类型的日志存储请求包个数,具体按照以下步骤进行:
利用接收模块在解析字段层统计实时不同日志类型日志请求包的数量;每隔固定时间统计一次不同类型日志请求包的请求量的接收和存储数量。
进一步优化地,所述自适应均衡调节各个不同类型日志存储缓冲池的资源,包括:
预先设置一个检测时间长度;在所述时间长度内统计不同类型的日志存储请求包数量,预测检测时间长度内可能接收的日志存储请求包数量,来均衡调节各个不同日志类型的日志存储缓冲池大小;根据不同日志类型的日志存储缓冲池大小的历史数量变化,来均衡调节各个不同日志类型的日志存储缓冲池大小。
进一步优化地,所述写入磁盘模块从日志存储缓冲池拉取日志内容持久化到磁盘,包括:
预先设置多个不同类型的写入磁盘模块,分别从不同类型的日志存储缓冲池拉取日志内容,并持久化到磁盘中。
与现有技术相比,本发明具有如下优点和技术效果:
1、本发明使用生产者消费者模型,接入模块作为日志生产者,写入磁盘模块作为日志消费者,降低了模块间的耦合性,提高了模块的可维护性。
2、本发明针对少量日志内容的频繁日志存储请求,提出了使用日志缓冲池作为少量日志内容的临时存储的方法,通过多次接收的日志内容一次写入磁盘,极大地降低了系统调用的次数,减少了系统调用带来的开销。
3、本发明提出的日志缓冲池可根据日志存储请求量和缓冲池策略调节日志缓冲池的大小,具有可扩展性。
附图说明
图1是根据本发明一个实施例的自适应均衡日志存储请求的方法的模块示意方框图。
图2是根据本发明一个实施例的自适应均衡日志存储请求的方法示意图。
具体实施方式
前述内容已经对本发明的方案作了充分说明,以下再结合附图对本发明的具体实施进行说明。需指出的是,本发明的实施和保护不受任何特定的计算机、虚拟系统限制,以下若有涉及需要编程的内容,其仅仅是实现方案的工具举例。
图1是根据本发明一个实施例的自适应均衡日志存储请求的方法的模块示意方框图。该方框图包括:接收模块101、解析模块102、统计模块103、日志缓冲池模块104、反馈处理模块105、写入磁盘模块106。
接收模块101:位于日志缓冲池的外部,接收所有来自客户端的请求。将接收的日志存储请求包写入内存,以供其他模块分析使用。
解析模块102:根据预先指定好的协议规范,在请求包的相应字段提取日志类型字段;将获取的日志类型值与内存中的字典值比较,确定日志类型;根据日志类型,将请求包交由日志缓冲池模块中相对应的日志缓冲池。
预先指定好的协议规范,可以使用Google Protocol Buffer(简称Protobuf)协议作为传输的载体,根据预先指定日志类型字段对应的唯一字段名称,即可获取相应的字段值。
日志类型一般根据日志紧要程度可以分为DEBUG、INFO、WARN、ERROR、FATAL。在预设的字典中,每个日志类型值对应某一字节中的不同位。
日志缓冲池模块104:统一管理日志缓冲池的存储资源;一般地,对日志缓冲池模块有以下4种操作:初始化创建、追加、删除、拉取操作。
初始化创建日志缓冲池包括两种情况,一是模块初始根据程序内部设定的配置分别创建五种日志类型的日志缓冲池;二是通过反馈处理模块自适应均衡计算的合适的容量来设置日志缓冲池的大小。
日志缓冲池设计为一个头尾相接的环状链表,每个日志类型对应一个环状链表,环状链表每个节点存在一个状态标志,标识该节点是否正在写入磁盘,每个节点所存储的日志大小是固定统一的。在C++语言实现中,每个环状链表可以分配一个锁、一个写入指针和一个拉取指针。通过锁的获得来取得对环状链表的操作权限;上游模块通过写入指针来对环状链表添加操作,当环状链表无可以写入的节点可以申请一块新的内存;写入磁盘模块通过拉取指针来对环状链表进行写入磁盘操作,当环状链表无可以写入磁盘的节点可以停止该拉取操作。
统计模块103:实时统计不同日志类型请求包的数量,以15分钟为一个时间段,统计该时间段每个日志类型请求包数的数量,每次接收到某个类型的请求包进入缓冲池,则该类型请求包个数加1;同时每个日志类型最近8个点的请求包个数记录保留在内存中以便反馈处理模块105参考。
反馈处理模块105:根据统计模块103提供的每个日志类型的请求包个数及其历史记录,预测请求包数量可能的变化趋势,可以针对不同的日志类型设置不同的预测算法,并将预测结果通知日志缓冲池模块104,以便日志缓冲池模块104修改缓冲池的配置。
写入磁盘模块106:从日志缓冲池模块104中通过获取锁来获得对某个日志类型的环状缓冲池的操作权限,从该环状日志缓冲池拉取日志内容。在C++语言实现中,当拉取指针所指向的节点是写入指针所指向的节点,说明该缓冲池日志内容已经写入完毕,则退出;否则将该节点的状态设置成正在写入磁盘,随后释放锁。之后待该节点的日志内容写入磁盘完毕,写入磁盘模块尝试获取锁,获取锁后,将拉取指针所指向的节点设置为写入磁盘完毕,并将拉取指针指向节点的下一个节点。
图2是根据本发明一个实施例的自适应均衡日志存储请求的方法示意图,如图所示该方法包括以下步骤:
步骤S201,接收来自客户端的日志存储请求。
步骤S202,解析请求包。
步骤S203,提取请求包的日志类型字段;交由适当的日志存储缓冲池。
步骤S204,统计不同日志类型的请求包个数。
步骤S205,调节每个日志类型的日志缓冲池资源大小。
步骤S206,写入磁盘模块从日志存储缓冲池拉取日志。
本实施例通过统计不同日志类型的请求包个数,通过每个日志类型的历史记录、当前统计信息及该日志类型下的预测算法来预测对应日志类型缓冲池可能需求的资源大小。
本实施例通过日志缓冲池模块、接收模块、以及写入模块将日志的接收和写入磁盘分离,避免了同步写所带来的接收日志请求与写入磁盘的高耦合性,通过创建日志缓冲池使得接收模块可以专注接收来自客户端的日志存储请求,写入磁盘模块可以专注磁盘IO。
Claims (10)
1.一种自适应均衡日志存储请求的方法,其特征在于包括:
接收模块接收来自客户端的日志存储请求;
接收模块提取客户端发送的日志存储请求包;
解析模块解析所述日志存储请求包的日志类型字段;并根据日志存储请求包的日志类型字段,交由适当的日志存储缓冲池;
统计模块统计不同日志类型的日志存储请求包个数,自适应均衡调节各个日志类型存储缓冲池的存储资源;写入磁盘模块从日志存储缓冲池拉取日志内容持久化到磁盘。
2.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,所述接收模块接收来自客户端的日志存储请求包括:
接收模块基于TCP/IP协议绑定其IP,并监听与客户端约定的端口;客户端向该端口发送日志存储的请求包;接收模块接收到客户端发送的日志存储请求包,并将其保存在服务器内存中,以供分析。
3.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,所述接收模块提取客户端发送的日志存储请求包,包括:
在所述的日志存储请求包中的内容中预先设定好请求包中日志类型字段的位置,接收模块根据设定的位置提取指定字段。
4.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,解析模块解析所述日志存储请求包的日志类型字段,具体包括:
查询所述服务器内存中预先建立的日志类型字典中是否有相应的字段值;若有,则可知道日志类型;否则,请求包错误。
5.根据权利要求1~4任一项所述的一种自适应均衡日志存储请求的方法,其特征在于,所述日志类型包括:
客户端与接收模块事先约定好日志等级类型,并在所述服务器内存中使用日志类型字典保存;结合请求包的日志类型,交由适当的日志存储缓冲池。
6.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,所述交由适当的日志存储缓冲池,包括:
在所述的服务器内存中预先建立好对应不同日志类型的日志存储缓冲池;将不同日志类型的请求包重定向到不同的日志存储缓冲池。
7.根据权利要求6中所述的一种自适应均衡日志存储请求的方法,其特征在于,所述预先建立好对应不同日志类型的日志存储缓冲池,具体按照以下步骤进行:
初始化服务器内存;根据日志类型的种数,创建与日志类型数相同数量的可调节大小的日志缓存储冲池;将不同日志类型的缓冲池调整策略加载到日志存储缓冲池中。
8.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,所述统计不同类型的日志存储请求包个数,具体按照以下步骤进行:
利用接收模块在解析字段层统计实时不同日志类型日志请求包的数量;每隔固定时间统计一次不同类型日志请求包的请求量的接收和存储数量。
9.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,所述自适应均衡调节各个不同类型日志存储缓冲池的资源,包括:
预先设置一个检测时间长度;在所述时间长度内统计不同类型的日志存储请求包数量,预测检测时间长度内可能接收的日志存储请求包数量,来均衡调节各个不同日志类型的日志存储缓冲池大小;根据不同日志类型的日志存储缓冲池大小的历史数量变化,来均衡调节各个不同日志类型的日志存储缓冲池大小。
10.根据权利要求1所述的一种自适应均衡日志存储请求的方法,其特征在于,所述写入磁盘模块从日志存储缓冲池拉取日志内容持久化到磁盘,包括:
预先设置多个不同类型的写入磁盘模块,分别从不同类型的日志存储缓冲池拉取日志内容,并持久化到磁盘中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910169181.3A CN109992572A (zh) | 2019-03-06 | 2019-03-06 | 一种自适应均衡日志存储请求的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910169181.3A CN109992572A (zh) | 2019-03-06 | 2019-03-06 | 一种自适应均衡日志存储请求的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109992572A true CN109992572A (zh) | 2019-07-09 |
Family
ID=67129397
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910169181.3A Pending CN109992572A (zh) | 2019-03-06 | 2019-03-06 | 一种自适应均衡日志存储请求的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992572A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115017128A (zh) * | 2022-05-26 | 2022-09-06 | 上海介方信息技术有限公司 | 基于corba中间件的轻量级日志服务设计方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060036660A1 (en) * | 2004-08-13 | 2006-02-16 | Lynn Joseph B | System and method for variable block logging with log-ahead buffers |
CN102053923A (zh) * | 2009-11-05 | 2011-05-11 | 北京金山软件有限公司 | 一种日志数据的存储方法及存储装置 |
CN103902382A (zh) * | 2014-03-25 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于负载均衡的文件系统日志模型 |
US20170091262A1 (en) * | 2015-09-25 | 2017-03-30 | Netapp, Inc. | Object storage backed file system cache |
US20170097908A1 (en) * | 2015-10-05 | 2017-04-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Space efficient formats for scatter gather lists |
CN106909613A (zh) * | 2017-01-11 | 2017-06-30 | 华南理工大学 | 一种自适应均衡数据库访问服务的方法 |
-
2019
- 2019-03-06 CN CN201910169181.3A patent/CN109992572A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060036660A1 (en) * | 2004-08-13 | 2006-02-16 | Lynn Joseph B | System and method for variable block logging with log-ahead buffers |
CN102053923A (zh) * | 2009-11-05 | 2011-05-11 | 北京金山软件有限公司 | 一种日志数据的存储方法及存储装置 |
CN103902382A (zh) * | 2014-03-25 | 2014-07-02 | 浪潮电子信息产业股份有限公司 | 一种基于负载均衡的文件系统日志模型 |
US20170091262A1 (en) * | 2015-09-25 | 2017-03-30 | Netapp, Inc. | Object storage backed file system cache |
US20170097908A1 (en) * | 2015-10-05 | 2017-04-06 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Space efficient formats for scatter gather lists |
CN106909613A (zh) * | 2017-01-11 | 2017-06-30 | 华南理工大学 | 一种自适应均衡数据库访问服务的方法 |
Non-Patent Citations (1)
Title |
---|
JUNWEI XU, YOUJUN XIANG, ET AL: "Adaptive Image Denoising in Mixed Gaussian-impulse Noise Using Weighted Nuclear Norm Minimization", 《2018 IEEE 3RD INTERNATIONAL CONFERENCE ON COMMUNICATION AND INFORMATION SYSTEMS》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115017128A (zh) * | 2022-05-26 | 2022-09-06 | 上海介方信息技术有限公司 | 基于corba中间件的轻量级日志服务设计方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105391772B (zh) | 业务请求处理方法、日志处理方法及装置 | |
CN110022221B (zh) | 一种系统接口数据的监控方法、装置及系统 | |
WO2019001312A1 (zh) | 实现告警关联的方法、装置以及计算机可读存储介质 | |
US20230006909A1 (en) | Cluster wide packet tracing | |
CN107133231B (zh) | 一种数据获取方法和装置 | |
CN112835792B (zh) | 一种压力测试系统及方法 | |
CN110830442A (zh) | 报文处理方法、装置及网关 | |
CN101090295A (zh) | 一种ason网络的测试系统及方法 | |
CN112905323B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110851290A (zh) | 一种数据同步方法、装置、电子设备及存储介质 | |
CN102457578A (zh) | 一种基于事件机制的分布式网络监控方法 | |
CN109992572A (zh) | 一种自适应均衡日志存储请求的方法 | |
CN110430070A (zh) | 一种服务状态分析方法、装置、服务器、数据分析设备及介质 | |
CN114064402A (zh) | 服务器系统监控方法 | |
CN112817539A (zh) | 一种工业数据存储方法、系统、电子设备及存储介质 | |
CN108712306A (zh) | 一种信息系统自动化巡检平台和巡检方法 | |
CN116842090A (zh) | 一种对账系统、方法、设备及存储介质 | |
CN110865918A (zh) | 数据库的监控方法、装置、计算机设备和存储介质 | |
WO2023134247A1 (zh) | 容器管理方法及容器管理系统 | |
WO2024021280A1 (zh) | 工业气体企业的数据传输方法、装置、服务器及系统 | |
CN109697132A (zh) | 一种终端设备的即时通信系统及方法 | |
CN116431324A (zh) | 一种基于Kafka高并发数据采集与分发的边缘系统 | |
CN116016117A (zh) | 网络设备运维数据采集方法、系统、电子设备及存储介质 | |
CN103684929A (zh) | 服务器状态的监控系统及方法 | |
US7956737B2 (en) | Method and apparatus for network service assurance |
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 |