falcon:高性能、低延迟的FIX引擎
在现代金融交易系统中,FIX(Financial Information eXchange)协议是一种广泛使用的消息传递协议,用于买卖双方的交易和订单管理系统。在这样的背景下,高性能和低延迟的FIX引擎显得尤为重要。今天,我们将介绍一个开源项目——falcon,它正是这样一款专为JVM设计的引擎。
项目介绍
falcon是一个为JVM环境设计的高性能、低延迟FIX引擎。它为买卖双方的应用程序,如交易系统和订单管理系统,提供了一个API,以实现FIX协议的连接。这个引擎的核心优势在于其设计理念,即尽可能减少堆分配,以避免对低延迟应用造成灾难性影响的垃圾收集暂停。
项目技术分析
falcon引擎在技术设计上下了不少功夫,以下是一些关键的技术特点:
- 零拷贝、非阻塞、低延迟NIO网络通信:falcon采用了NIO(非阻塞I/O)网络通信,减少了数据拷贝次数,从而降低了延迟。
- 低堆分配率:在FIX引擎核心中,falcon尽量减少堆分配,这有助于减少垃圾收集的频率和暂停时间。
- 小的内存占用:对于会话和消息数据结构,falcon采用了紧凑的设计,减少了内存占用。
这些技术特点使得falcon在低延迟应用中表现优异。例如,在一个回环测试中,falcon实现了8微秒的RTT(往返时间)。
项目及技术应用场景
falcon的应用场景主要集中在金融交易领域,特别是那些对延迟敏感的应用。以下是一些典型的应用场景:
- 交易系统:在高速交易系统中,低延迟对于捕捉市场机会至关重要。
- 订单管理系统:订单管理系统需要快速处理大量订单,falcon的高性能特性正好满足这一需求。
- 市场数据分发:在市场数据分发系统中,快速传递数据可以帮助用户及时做出交易决策。
项目特点
以下是一些falcon项目的显著特点:
- 极致性能:falcon在性能方面做到了极致,它的8微秒RTT测试结果在行业内是非常出色的。
- 简洁的API设计:falcon提供了简洁易用的API,使得开发人员可以快速集成并使用。
- 高度可定制性:falcon允许用户根据具体需求定制和优化其性能,以满足不同场景的需求。
以下是一个使用falcon发送100000条NewOrderSingle消息的示例:
import static java.net.StandardSocketOptions.*;
import java.nio.channels.*;
import java.net.*;
import java.nio.*;
import static falcon.fix.MessageTypes.*;
import static falcon.fix.Versions.*;
import static falcon.fix.Tags.*;
import falcon.fix.*;
public class Example {
public static void main(String[] args) throws Exception {
SocketChannel socket = connect("localhost", 7070);
Session session = new Session(socket, FIX_4_2, "HERMES", "INET");
session.updateTime();
session.send(new Message.Builder(Logon)
.add(new Field(EncryptMethod, "0" ))
.add(new Field(HeartBtInt, "30"))
.build());
Message newOrder =
new Message.Builder(NewOrderSingle)
.add(new Field(EncryptMethod, "0" ))
.add(new Field(HeartBtInt, "30"))
.build();
for (int i = 0; i < 100000; i++) {
if ((i % 10000) == 0) {
session.updateTime();
}
session.send(newOrder);
}
session.updateTime();
session.send(new Message.Builder(Logout).build());
socket.close();
}
private static SocketChannel connect(String host, int port) throws Exception {
InetSocketAddress addr = new InetSocketAddress(host, port);
SocketChannel socket = SocketChannel.open();
socket.configureBlocking(false);
socket.setOption(TCP_NODELAY, true);
socket.connect(addr);
socket.finishConnect();
return socket;
}
}
在性能测试中,falcon表现出了惊人的速度。以下是一个测试结果:
$ ./falcon-perf-test/bin/falcon-perf-test 1000000
87693.5 messages/second
min/avg/max = 9.8/11.4/19935.3 µs
Percentiles:
1.00%: 10.15 µs
5.00%: 10.51 µs
10.00%: 10.61 µs
50.00%: 11.12 µs
90.00%: 11.90 µs
95.00%: 13.27 µs
99.00%: 14.53 µs
总结来说,falcon是一个值得关注的开源项目,特别是在金融交易领域。其高性能、低延迟的特性,以及简洁的API设计,使其成为开发高性能交易系统的理想选择。如果你正在寻找一个高效的FIX引擎,falcon绝对值得一试。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



