高并发下服务端日志记录的优化方法及系统技术方案

技术编号:36466577 阅读:36 留言:0更新日期:2023-01-25 23:07
本发明专利技术提供了一种高并发下服务端日志记录的优化方法及系统,包括如下步骤:步骤1:在需发送消息的线程中增加ThreadLocal功能,通过ThreadLocal功能,在每一个业务线程中独立设置一个局部日志队列,并增加写入日志消息方法和读取日志消息方法;步骤2:当业务线程需要记录日志时,均向自身业务线程中的局部日志队列记录消息;当自身线程中的局部日志队列中消息达到阀值时,通知日志消费队列到自身日志消费线程中的局部变量获取消息。本发明专利技术在高并发场景之下,能够很好的提高业务吞吐,减少业务部分场景下的毛刺问题。部分场景下的毛刺问题。部分场景下的毛刺问题。

【技术实现步骤摘要】
高并发下服务端日志记录的优化方法及系统


[0001]本专利技术涉及通信
,具体地,涉及一种高并发下服务端日志记录的优化方法及系统。

技术介绍

[0002]在现在很多系统都存在有对应的服务端,而每一个服务端系统中都存在有需要打印日志的功能,或者各种开源软件也都存在打印日志的功能。对于不重要的日志信息,现在的做法是主线程直接打印日志,为了防止日志打印影响主线程,更优解决方式是主线程同步写入本地队列,存在独立的异步线程消费本地队列中的消息打印日志。如果日志消息可丢失或者可不准确,可以使用如上的更优解方式,但是,类似某些数据库或者消息中间件中,通常都是使用多线程方式进行业务处理,并记录日志的,但是都需要使用精确的日志记录方式,在现在的更优解方式上,只能针对本地队列进行全局加锁,即写消息时,需要对本地队列进行全局加锁,消费消息时也需要对本地队列进行全局加锁。在非高并发场景下,该种方式能够确保消息的安全与精确性,但是会影响业务的吞吐能力。
[0003]现有技术中高并发场景下,为了保证多线程场景下对本地队列的安全竞争,会对整个本地队列进行加锁处本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种高并发下服务端日志记录的优化方法,其特征在于,包括如下步骤:步骤1:在需发送消息的线程中增加ThreadLocal功能,通过ThreadLocal功能,在每一个业务线程中独立设置一个局部日志队列,并增加写入日志消息方法和读取日志消息方法;步骤2:当业务线程需要记录日志时,均向自身业务线程中的局部日志队列记录消息;当自身线程中的局部日志队列中消息达到阀值时,通知日志消费队列到自身日志消费线程中的局部变量获取消息。2.根据权利要求1所述的高并发下服务端日志记录的优化方法,其特征在于,所述步骤2中,日志消费队列每隔预设时间到各个业务线程的局部队列中获取消息,并进行消息的消费处理。3.根据权利要求1所述的高并发下服务端日志记录的优化方法,其特征在于,所述写入日志消息方法具体为:通过ThreadLocal中的set方法向自身业务线程的局部队列中写入消息;所述读取日志消息方法具体为:使用ThreadLocal中的get方法从自身业务线程的局部队列中读取消息。4.根据权利要求1所述的高并发下服务端日志记录的优化方法,其特征在于,所述写入日志消息方法具体包括如下步骤:步骤2.1:写入日志消息至本地局部队列中;步骤2.2:检查本地局部队列中,消息总数量是否达到阀值;步骤2.3:当本地局部队列中消息总数量未达到阀值,则无需后续处理,当达到阀值时,发送通知消息至日志消费线程,本流程结束。5.根据权利要求4所述的高并发下服务端日志记录的优化方法,其特征在于,日志消费线程存在如下两种消费日志消息的方式:主动方式:消费线程每隔预设时间,调用读取日志消息方法读取消费业务线程中本地局部队列中的消息,并进行日志的打印操作;被动方式:当消费线程获取到步骤2.3中的通知消息时,调用读取...

【专利技术属性】
技术研发人员:王文哲蔡志林许心熠
申请(专利权)人:兴业数字金融服务上海股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1