Log4j2的高性能之道

简介: Log4j2的高性能之道

log4j2之所以能在异步写日志时性能提高这么多,离不开优秀的mq组件Disruptor

目前使用该队列的知名软件包括但不限于Apache Storm、Camel、Log4j2。

底层队列的实现对性能的影响是最大的。logback使用的是异步appender,log4j2使用的是disruptor。

异步Appender的实现,内部内置了一个BlockingQueue队列,具体实现采用了ArrayBlockingQueue。而Disruptor则是使用了Ringbuffer。

性能上的优劣,绝大部分原因都是数据模型的问题,往下我们分析一下BlockingQueue和disruptor的实现方式:

1、ArrayBlockingQueue

ArrayBlockingQueue采用的是加锁的方式来处理线程安全问题的。

加锁的问题,虽然历代JDK一直投入大量的精力去解决问题,比如优化Sync关键字的实现方式、添加读写锁等,但是由于结构特性的问题,一直无法从根本上解决性能开销问题。

2、Disputor

Disputor采用了环形数据结构Ringbuffer来解决这个问题(他们称之为魔法圆环,或魔法圆圈之类的),此种数据结构的有点是,不需要记录额外的下标,直接由JNI返回可以操作的地址,然后当多线程并发读写的时候,使用的也是无锁化cas方式

目录
相关文章
|
存储 SQL 运维
涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理
本文尝试解读ClickHouse存储层的设计与实现,剖析它的性能奥妙
3649 0
涨姿势 | 一文读懂备受大厂青睐的ClickHouse高性能列存核心原理
|
存储 资源调度 分布式计算
LC3|视角 开源大数据生态下的高性能分布式文件系统
## 背景介绍 盘古是阿里云自主研发的高可靠、高可用、高性能分布式文件系统,距今已经有将近10年的历史。盘古1.0作为阿里云的统一存储核心,稳定高效的支撑着阿里云ECS、NAS、OSS、OTS、ODPS、ADS等多条业务线的迅猛发展。但最近几年,基于如下两方面的原因,盘古还是重新设计实现了第二代存储引擎盘古2.0,其不只为阿里云,也为集团、蚂蚁金服的多种业务提供了更佳优异的存储服务 #
2883 0
|
7天前
|
存储 NoSQL atlas
探索MongoDB:发展历程、优势与应用场景
MongoDB 是一个开源的文档型数据库,由 DoubleClick 团队于2007年创立,旨在解决传统数据库的扩展性和灵活性问题。它支持 JSON 格式的存储和查询,具备高可用性、高扩展性和灵活性等优势。MongoDB 适用于社交、物联网、视频直播和内容管理等多种场景,并被阿里巴巴、腾讯等一线互联网公司广泛使用。其主要版本包括 MongoDB Atlas(云服务)、MongoDB Enterprise Advanced(商业版)和 MongoDB Community Edition(免费版)。自2009年发布1.0版本以来,MongoDB 不断创新,最新版本为7.0,在性能和功能上持续优化。
46 12
|
5天前
|
存储 缓存 NoSQL
Redis背后的神奇力量:为何它如此高效?
Redis的速度快主要归因于以下几点:1、基于内存操作,数据存储在内存中,读写速度远超硬盘;2、单线程模型,避免了多线程的额外开销和复杂性,适合处理高频读写操作;3、采用I/O多路复用技术,提高I/O效率,充分利用CPU资源;4、使用高效的数据结构如简单动态字符串(SDS)、压缩列表和跳跃表等,优化性能;5、通过数据压缩、惰性加载和内存淘汰等技术进一步提升速度。这些特性使得Redis在缓存和实时数据存储方面表现出色。
14 1
|
2月前
|
JSON 分布式计算 前端开发
前端的全栈之路Meteor篇(七):轻量的NoSql分布式数据协议同步协议DDP深度剖析
本文深入探讨了DDP(Distributed Data Protocol)协议,这是一种在Meteor框架中广泛使用的发布/订阅协议,支持实时数据同步。文章详细介绍了DDP的主要特点、消息类型、协议流程及其在Meteor中的应用,包括实时数据同步、用户界面响应、分布式计算、多客户端协作和离线支持等。通过学习DDP,开发者可以构建响应迅速、适应性强的现代Web应用。
|
6月前
|
消息中间件 存储 缓存
高性能、高可靠性!Kafka的技术优势与应用场景全解析
**Kafka** 是一款高吞吐、高性能的消息系统,擅长日志收集、消息传递和用户活动跟踪。其优点包括:零拷贝技术提高传输效率,顺序读写优化磁盘性能,持久化保障数据安全,分布式架构支持扩展,以及客户端状态维护确保可靠性。在实际应用中,Kafka常用于日志聚合、解耦生产者与消费者,以及实时用户行为分析。
211 3
|
7月前
|
缓存 监控 前端开发
从零到一:构建高性能SPA的探索与实践
作为一名高级前端工程师,我曾负责构建高性能SPA,面临首屏加载、路由切换卡顿、内存泄漏和数据加载策略等挑战。通过代码拆分、懒加载、服务端渲染、路由预加载、Keep-alive、严格管理组件生命周期、内存泄漏检测工具以及分页加载和数据缓存策略,成功优化性能,降低首屏加载时间,改善路由切换体验,控制内存泄漏,并提升数据加载效率。持续优化是关键,未来将侧重性能监控自动化和新技术探索。分享这些经验希望能激发更多同行的思考与创新。
98 1
|
6月前
|
缓存 NoSQL 测试技术
服务高可用秘籍:高性能 - 葵花宝典
随着企业产品业务不断扩大、用户量增加、功能需求复杂化,原有的系统架构逐渐无法满足高效运行、快速响应市场变化以及支持大规模并发访问等需求,在这种背景下,服务从单体应用架构,发展到资源隔离拆分多服务架构、负债均衡多集群架构,再到更细粒度的微服务容器编排架构,业务的增长不断促进架构的演进。本人有幸在刚进入互联网公司没几年就接触到相对大型的互联网产品的开发,从几十万、几百万到现在上千万 DAU,业务的增长不仅仅是对现有架构的挑战,更是推动技术创新和架构升级的动力。企业需要不断审视和调整其技术架构,以适应业务发展,保持竞争力,服务的部署架构以及开发者的技术认知,也跟随着高 QPS 场景不断的迭代升级。
54 0
|
关系型数据库 分布式数据库 数据库
高性能特性体验:ePQ 的详解与实战
PolarDB PostgreSQL 引擎提供了弹性跨机并行查询(elastic Parallel Execution)的功能,支持多个计算节点分布式地执行 SQL 查询。本实验将体验该功能。
|
存储 XML JSON
腾讯后台服务架构高性能设计之道(1)
腾讯后台服务架构高性能设计之道
224 0