falcon, 猎鹰,开源超低延迟修复引擎

分享于 

4分钟阅读

GitHub

  繁體 雙語
Falcon, the open source ultra low-latency FIX engine for Java
  • 源代码名称:falcon
  • 源代码网址:http://www.github.com/penberg/falcon
  • falcon源代码文档
  • falcon源代码下载
  • Git URL:
    git://www.github.com/penberg/falcon.git
    Git Clone代码到本地:
    git clone http://www.github.com/penberg/falcon
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/penberg/falcon
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    Falcon是一个高性能的。低延迟的用于JVM的修复引擎。 它为购买方和销售方应用程序( 如交易系统和订单管理系统) 提供了一个 API,从而。

    引擎设计用于避免TX和RX路径上的堆分配,以避免低延迟应用程序的GC暂停。 引擎包装它的他优化,例如,避免查询每个消息和开放的编码格式以及JRE分配内存的函数。

    特性

    • 零拷贝,非阻塞,低延迟NIO网络
    • 修复引擎内核中的低堆分配率
    • 用于会话和消息数据结构的小内存占用

    示例

    发送 100000 NewOrderSingle 消息的示例应用程序如下所示:

    import staticjava.net.StandardSocketOptions.*;importjava.nio.channels.*;importjava.net.*;importjava.nio.*;import staticfalcon.fix.MessageTypes.*;import staticfalcon.fix.Versions.*;import staticfalcon.fix.Tags.*;importfalcon.fix.*;publicclassExample {
     publicstaticvoidmain(String[] args) throwsException {
     SocketChannel socket = connect("localhost", 7070);
     Session session =newSession(socket, FIX_4_2, "HERMES", "INET");
     session.updateTime();
     session.send(newMessage.Builder(Logon)
    . add(newField(EncryptMethod, "0" ))
    . add(newField(HeartBtInt, "30"))
    . build());
     Message newOrder =newMessage.Builder(NewOrderSingle)
    . add(newField(EncryptMethod, "0" ))
    . add(newField(HeartBtInt, "30"))
    . build();
     for (int i =0; i <100000; i++) {
     if ((i %10000) ==0) {
     session.updateTime();
     }
     session.send(newOrder);
     }
     session.updateTime();
     session.send(newMessage.Builder(Logout).build());
     socket.close();
     }
     privatestaticSocketChannelconnect(Stringhost, intport) throwsException {
     InetSocketAddress addr =newInetSocketAddress(host, port);
     SocketChannel socket =SocketChannel.open();
     socket.configureBlocking(false);
     socket.setOption(TCP_NODELAY, true);
     socket.connect(addr);
     socket.finishConnect();
     return socket;
     }
    }

    性能

    这些数字包括在 Linux tcp/ip栈和环回设备中花费的时间。

    要重新生成结果,首先下载并构建 Libtrading插件。 然后启动修复性能测试服务器:

    
    $ taskset -c 0 tools/fix/fix_server -m 1 -p 7070
    
    
    
    

    finally,运行猎鹰潜伏期测试:

    
    $./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
    
    
    
    

    许可证

    版权所有 © 2013 -2015 Pekka Enberg和贡献者

    猎鹰在 2-clause BSD许可下发布。


    JAVA  Source  开源  FIX  fal  Latency  
    相关文章