你的位置:首页 > 软件开发 > Java > 日交易额百亿级交易系统的超轻量日志实现

日交易额百亿级交易系统的超轻量日志实现

发布时间:2016-12-08 11:00:30
首先来聊聊往事吧~~两年前就职于一家传统金融软件公司,为某交易所开发一套大型交易系统,交易标的的价格为流式数据,采用价格触发成交方式,T+0交易制度(类似炒股,只是炒的不是股票而是其他标的物,但可以随时开平仓)。鉴于系统需要记录大量价格数据、交易信息及订单流水,且系统对性能要求极 ...

日交易额百亿级交易系统的超轻量日志实现

日交易额百亿级交易系统的超轻量日志实现

首先来聊聊往事吧~~两年前就职于一家传统金融软件公司,为某交易所开发一套大型交易系统,交易标的的价格为流式数据,采用价格触发成交方式,T+0交易制度(类似炒股,只是炒的不是股票而是其他标的物,但可以随时开平仓)。鉴于系统需要记录大量价格数据、交易信息及订单流水,且系统对性能要求极高(敏感度达毫秒级),因此需要避免日志服务成为系统性能瓶颈。通过对几个通用型日志(如log4j、logback)的性能压测,以及考虑到它们作为通用型日志相对比较臃肿,就决定自个儿写个日志工具以支撑系统功能和性能所需。当时的做法只是简单的将日志的实现作为一个 util 类写在项目中,只有几百行的代码量。

系统上线两个月后日均成交额200亿RMB,最高达440亿RMB,峰值成交4000笔/秒。系统非常庞大,但几百行的代码却完美支撑住了重要的日志服务!

鉴于其优秀的表现,就花了一点点时间把它抽取出来作为一个独立的日志组件,取名叫 FLogger,代码几乎没有改动,现已托管到GitHub(FLogger),有兴趣的童鞋可以clone下来了解并改进,目前它的实现是非常简(纯)单(粹)的。

以上就是 FLogger 的诞生背景。好吧,下面进入正题。

特性

虽然 FLogger 只有几百行的代码,但是麻雀虽小五脏俱全,它可是拥有非常丰富的特性呢:

  • 双缓冲队列
  • 多种刷盘机制,支持时间触发、缓存大小触发、服务关闭强制触发等刷盘方式
  • 多种 RollingFile 机制,支持文件大小触发、按天触发等 Rolling 方式
  • 多日志级别,支持 debug、info、warn、error和 fatal 等日志级别
  • 热加载,由日志事件触发热加载
  • 超轻量,不依赖任何第三方库
  • 性能保证,成功用于日交易额百亿级交易系统

使用

既然是个超轻量级日志,使用肯定要很简单。为最大程度保持用户的使用习惯,Flogger 提供了与 log4j 几乎一样的日志 API。你只需要先获取一个实例,接下来的使用方式就非常简单了:

//获取单例FLogger logger = FLogger.getInstance();//简便api,只需指定内容logger.info("Here is your message...");//指定日志级别和内容,文件名自动映射logger.writeLog(Constant.INFO, "Here is your customized level message...");//指定日志输出文件名、日志级别和内容logger.writeLog("error", Constant.ERROR, "Here is your customized log file and level message...");

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:日交易额百亿级交易系统的超轻量日志实现

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录