开源!非凸Rust高性能日志库ftlog

非凸科技
• 阅读 437

开源!非凸Rust高性能日志库ftlog

日志是应用程序的重要组成部分,无论是服务端程序还是客户端程序,都需要日志作为错误输出或业务记录。非凸Rust高性能日志库ftlog,支持“受限写入”以及“时间分割”等功能,具备显著的性能优势。

一、ftlog与普通日志,有何不同?

普通日志库受到磁盘IO和系统Pipe的影响,单线程顺序写入单条速度大概要2500ns(SSD),如果碰到IO抖动或者慢磁盘,日志会是低延迟交易的主要瓶颈。而非凸科技开源的Rust高性能日志库ftlog v0.1.0,先把日志Send到Channel,再启动后台单独线程Recv,且磁盘写入,测试速度在300ns左右。

值得注意的是,ftlog与Rust的log生态不兼容,建议删除掉原来的日志库。特别是不要让两个日志库导出到同一个地方,否则两个日志生态会同时打印,导致日志不可读。

低延迟交易,要求整个交易链条上的所有环节,都尽量缩短时间间隔。而非凸日志库ftlog在速度上更快,可实现更低的延迟。

过去,金融证券领域的高性能一般指的是高吞吐量,满足一定的延迟要求。但随着机构交易占比的逐渐提升,他们对延迟的要求也越来越高。对券商来说,谁能在延迟上取得最低,谁就可以掌握客户。

二、在开源上,不断发力

Rust作为一门备受关注的新编程语言,它在保证内存安全的同时,还能实现不亚于C/C++等语言的性能。非凸科技选择Rust,最主要的原因是Rust的高性能、高安全和可靠性与低延迟交易的核心需求高度匹配。在引擎层面,Rust具有可靠的安全性和稳定性;在数据接入层面,Rust足够底层,可以做到更多其他语言难以做到的事。

此外,对于企业级项目的开发,采用Rust更能保证程序的稳定性。对于高并发和低延迟部分,Rust相关的成熟库还不多,需要企业级的打磨才能更可靠。对此,非凸科技将在开源项目上不断发力,攻坚更多核心技术。

做真正自研的技术,尤其是基础软件和核心底层技术。非凸科技希望通过开源,与广大开发者、行业伙伴、客户,携手推进Rust在低延迟交易领域的开发、应用和落地,加速推动国产基础软件的繁荣和发展。

非凸科技计划在ftlog v0.2.0版本迁回官方log,并加入target支持,欢迎大家的建议、交流和探讨。

代码开源地址: https://github.com/nonconvextech/ftlog https://crates.io/crates/ftlog 开源!非凸Rust高性能日志库ftlog

点赞
收藏
评论区
推荐文章
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
java一生之敌 java一生之敌
1年前
JVM的内存模型和优化方式
一、JVM的内存模型1.!图片(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/52b2220f04010eb329efbef966f9fa40.png)其中s0,s1为幸
Wesley13 Wesley13
2年前
MySQL日志体系详解
前言日志是MySQL数据库的重要组成部分。日志文件中记录着MySQL数据库运行期间发生的变化;也就是说用来记录MySQL数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。MySQL的日志体系有如下几种分类:1.错误日志2.查询日志
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
2年前
Linux日志安全分析技巧
0x00前言我正在整理一个项目,收集和汇总了一些应急响应案例(不断更新中)。GitHub地址:https://github.com/Bypass007/EmergencyResponseNotes本文主要介绍Linux日志分析的技巧,更多详细信息请访问Github地址,欢迎Star。0x01日志简介Lin
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
京东云开发者 京东云开发者
6个月前
日志框架简介-Slf4j+Logback入门实践 | 京东云技术团队
前言随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架非常重要。虽然应用程序的运行结果不受日志的有无影响,但没有日志的应用程序是不完整的,甚至可
非凸科技 非凸科技
1年前
Rust开发者大会,内容早知道!
在量化交易中,总会发现有一部分「回撤」是在策略意料之外的,如进程闪退、上下游出问题等。那么,Rust在量化场景中的应用,相较于C,对回撤产生了什么样的影响呢?非凸科技量化策略负责人将从“自身系统稳定”与“高效应对风险”两个方面进行全面解答,欢迎锁定「本周日14:00」—分论坛「Rust商业实践」!时间:7月31日(本周日)参会:http://rust
鲍忠 鲍忠
1年前
2022升级百度大牛带你结合实践重学C++上山的阿科姿
!16634324571b7f1262efa6593(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/d7d539220bfe32bfc2aa6c00b6abeca4.png)
京东云开发者 京东云开发者
10个月前
文盘Rust -- 给程序加个日志 | 京东云技术团队
日志是应用程序的重要组成部分。无论是服务端程序还是客户端程序都需要日志做为错误输出或者业务记录。在这篇文章中,我们结合聊聊rust程序中如何使用日志。类似java生态中的log4j,使用方式也很相似log4rs中的基本概念log4rs的功能组件也由appe