Saturday, 13 July 2019

Zeromq trading system


AVISO: Este texto está obsoleto e se refere a uma versão antiga do MQ. Ele permanece aqui para interesse histórico. NÃO USE ESTE PARA APRENDER MQ. Introdução Como a MQ destina-se principalmente a impulsionar negócios de negociação de ações, criamos um aplicativo de exemplo que simula o funcionamento interno de uma bolsa de valores. O foco principal deste exemplo é mostrar como o MQ perfroms em cenário real-mundo. O diagrama abaixo mostra a arquitetura do aplicativo: o componente Gateway deve receber ordens de comerciantes na rede (usando o protocolo FIX ou um protocolo proprietário específico) e enviar respostas de volta aos comerciantes. No entanto, como o exemplo do aplicativo se destina a mostrar quais são as possíveis características de throughput de tal sistema, o gateway gera ordens aleatórias em vez de recebê-las dos comerciantes. Ao iniciar o gateway, você pode especificar o número de pedidos por segundo a serem gerados. A unidade correspondente contém o núcleo da lógica comercial da bolsa de valores. Ele coincide com os pedidos uns com os outros e produz trades e citações. Nossa implementação é minimalista, com base no algoritmo de correspondência de tempo (a implementação do algoritmo pro rata é deixada como um exercício para o leitor). Ainda assim, o algoritmo tem complexidade de O (1) e é fortemente otimizado. Vimos isso processar cerca de 18 milhões de pedidos por segundo. O componente de estatísticas recebe informações de desempenho geradas pelo motor de entrada e correspondente e o exibe em forma legível por humanos. Para tornar a leitura das estatísticas ainda mais conveniente, a ferramenta gráfica simples está incluída no exemplo. A tela de acompanhamento de desempenho mostra exemplos de desempenho em duas caixas high-end de 8 núcleos (3GHz) cada uma com 2 NIC dedicadas 1GbE. Tenha em mente que, se você executá-lo no hardware subestimado ou não conectado, pode ser ainda muito rápido, no entanto, você experimentará menores débitos de mensagens e mais picos de latência. Se você definir a taxa de mensagem muito alta, você pode até mesmo ter uma falha de segurança, pois o componente ticker usado para enviar ordens na taxa estável não conseguirá manter o ritmo. A linha amarela mostra latência de ida e volta, ou seja, quanto tempo demorou para passar da ordem do gateway para o mecanismo correspondente, processá-lo e enviar a confirmação do pedido de volta ao gateway. Na nossa latência de teste, oscilou em torno de 200 microssegundos. A linha de menor débito (900,000 messagessecond) é a taxa de pedidos passados ​​do gateway para o motor correspondente. A linha de transferência superior (2.300.000 mensagens) é a taxa de confirmações de pedidos, trocas e cotações de ações passadas do motor correspondente para o gateway. No total, observamos aproximadamente 3.200.000 mensagens por segundo passando pela rede. Construindo-o Para construir o exemplo, use a opção - with-exchange com configure: Para poder executar a ferramenta gráfica, você deve ter o Perl-Tk instalado (embalado como perl-tk no Debian), bem como Tk :: Graph from CPAN . Executando-o Por exemplo, temos a seguinte topologia de rede para executar o exemplo. As caixas representam máquinas individuais, as setas representam cabos físicos entre as interfaces de rede individuais (marcadas pelos respectivos endereços IP): existem 3 caixas (test01, test02 e test03) conectadas à rede comutada com respectivos endereços IP de 192.168.0.1, 192.168.0.2 E 192.168.0.3. Além disso, existem duas conexões diretas entre test02 e test03. Uma conexão conecta a interface de rede 10.0.0.1 no test02 com a interface de rede 10.0.0.2 no teste03. Outro conecta a interface de rede 10.1.0.1 no test02 com a interface de rede 10.1.0.2 no test03. Bem, execute o zmqserver e o componente estatístico no test01, combinando o motor no test02 e o gateway no test03. Bem, use uma das conexões diretas entre test02 e test03 para passar as ordens de gatway ao motor correspondente e a outra para passar confirmações, trocas e citações do mecanismo correspondente ao gateway. Primeiro, comece o zmqserver no teste01: depois, comece o componente estatístico no teste01. Os parâmetros são a caixa onde o zmqserver está sendo executado e a interface de rede para receber informações estatísticas: Alternativamente, você pode canalizar os dados estatísticos para a ferramenta gráfica: agora comece o mecanismo correspondente. Forneça o nome do host do zmqserver, interface para receber mensagens e interface para enviar mensagens como parâmetros: Finalmente, execute o gateway. Forneça o local do zmqserver e o número de pedidos a serem enviados por segundo como parâmetros: Conclusão O exemplo de troca permite testar o desempenho do MQs em cenário real. No entanto, obter uma latência estável em altos débitos é uma questão complicada dependente da sintonia geral do seu hardware, sistema operacional, ambiente de execução, etc. Se você é sério sobre testes de desempenho, entre em contato conosco para ajudá-lo na tarefa. Escrito: 1218019882.M. e Revisado: 1286694428.j. Se você encontrou esta página útil, avalie-a para que outros a encontrem. Introdução O setor financeiro vive com tecnologia de mensagens. No quot Wall Streetquot (o negócio global de ações), a capacidade e a latência são tudo. A infra-estrutura atual, altamente sintonizada para obter milhões de mensagens por segundo, e latências sub-milissegundos, ainda falha quando o comércio fica frenético. Enormes quantidades de dinheiro dependem de ser o primeiro a obter dados e o primeiro a negociar. O negócio de negociação de ações está evoluindo drasticamente. O preço Penny gera mais dados. Novos regulamentos dos EUA e da UE aumentam o número de partes envolvidas nos mercados financeiros. As novas tecnologias de negociação algorítmica aumentam a demanda por dados de estoque atualizados e números de ordens iguais. Embora a infra-estrutura existente possa dobrar em capacidade ou velocidade por 18 meses, espera-se que o tráfego cresça em 20 vezes nos próximos três anos 1. Ao mesmo tempo, os preços da tecnologia de mensagens estão aumentando constantemente. O middleware de mensagens - software que conecta aplicativos ou peças de aplicativos em uma forma de plug-and-play generalizada - é um dos últimos itens de grande bilhete ainda não transformados em uma commodity pela era da Internet de software barato. Os mainframes obtiveram o máximo de poder de mensagens inteligentes, sistemas de processamento de transações como o IBM CICS. Mas, hoje mesmo, o middleware padrão - ao contrário de bancos de dados, sistemas operacionais, compiladores, editores, GUIs e assim por diante - ainda não está amplamente disponível para desenvolvedores comuns. A indústria de software está produzindo várias aplicações de negócios e peças de aplicativos, e as ferramentas para fazer isso, em quantidades cada vez maiores, e preços cada vez mais baixos, mas o bit de mensagens ainda está faltando. A falta de uma maneira de conectar essas aplicações tornou-se não apenas um terreno não conquistado, mas também um sério obstáculo para o crescimento, especialmente para novas empresas que, em teoria, poderiam competir de forma agressiva com empresas maiores e mais antigas, se fossem capazes de combinar barato Blocos existentes de software. Essa frustração é visível em muitos mercados e levou ao crescimento de mensagens-sobre-HTTP (SOAP) e outros compromissos. Arquiteturas como o SOAP funcionam, mas não resolvem os dois principais problemas de uma mensagem de nível corporativo, nomeadamente o roteamento e a fila. Assim, as empresas que usam essas tecnologias não podem escalar e não podem competir em mercados realmente grandes, a menos que escrevam seu próprio software de mensagens ou compram um produto comercial. Várias outras tentativas de padronização foram feitas para commoditise o mercado: CORBA, JMS e ultimamente AMQP, CORBA sendo infrutífero por causa da metáfora RPC que não se adequa às necessidades dos mercados financeiros, JMS tendo sucesso no mundo Java, mas incapaz de expandir ainda mais e AMQP ainda sendo Um grande desconhecido. A demanda crescente e a falta de concorrência real mostram nas demonstrações financeiras de fornecedores de mensagens de ponta como o Tibco Software Inc: a receita total no primeiro trimestre do ano fiscal de 2007 em comparação com o mesmo trimestre do ano passado aumentou 11,0 milhões ou 10. A O aumento foi composto por um aumento de 7.0 milhões ou 11 na receita de serviços e manutenção e por um aumento de 4,0 milhões ou 8 na receita de licenças. Dois clientes da Tibco informam que as taxas de licença estão aumentando ano a ano. O mercado O mercado global de negociação de ações é foco primário do MQ, porque isso é onde a maior ênfase é colocada em mensagens, a maioria dos recursos são acumulados e a maioria das tecnologias de corte de ponta são usadas. A principal característica do mercado é a fome de entrega rápida. Em cada milissegundo, a cotação da bolsa ou a ordem comercial é mais rápida do que a concorrente se traduz em lucro financeiro direto, então as empresas envolvidas estão naturalmente ansiosas por qualquer vantagem que possam obter. Atualmente, no estoque de negociação, a carga de tráfego é tão alta e latência tão crítica, que o middleware precisa ser altamente otimizado. As latências são dadas em microssegundos e throughput em milhões de mensagens por segundo8230. Apesar disso, o comércio geralmente experimenta problemas quando a carga da mensagem atinge o pico. A latência pode de repente cair para segundos (ou mesmo dezenas de segundos) e grandes quantidades de dinheiro podem ser perdidas à medida que os negócios são atrasados ​​ou falham. 3 A situação está piorando por vários motivos: em 2001, a NYSE e o NASDAQ passaram do preço de suas ações em unidades de 116 dólares para unidades de centavo único. Este chamado quotpenny pricingquot significa que os mercados de ações produzem mais dados e esses dados devem ser deslocados em todas as redes. Tanto nos EUA como na UE, os reguladores estão obrigando os mercados financeiros a competir de forma mais aberta e agressiva, no interesse dos consumidores. Por exemplo, as mudanças regulatórias da SEC dos EUA permitem que novas empresas atuem como intermediários no setor de comércio de ações, enquanto a EUs Markets in Financial Instruments Directive (MiFID) 4 deverá aumentar as taxas de tráfego de ações na UE para corresponder aos volumes vistos nos EUA após Reg NMS 5. Muitas empresas novas e agressivas estão entrando no mercado, especialmente construindo ou usando plataformas de negociação algorítmicas. A negociação algorítmica executa grande quantidade de pedidos de baixo volume em oposição a uma pequena quantidade de ordens de alto volume executadas por comerciantes humanos tradicionais. Portanto, aumentamos os fluxos de dados, para mais participantes, que estão empurrando para desenvolver novos modelos de negócios que dependem de obter esses dados rapidamente, detectando anomalias temporárias do mercado e respondendo (com trades) antes de seus concorrentes. Um ambiente regulatório mais flexível está abrindo mercados previamente protegidos para uma nova competição. No geral, vemos uma corrida de armamentos para largura de banda e latência em que melhor tecnologia se traduz diretamente em mais lucros. 6 O tráfego de mensagens deverá crescer significativamente no curto prazo - ouvimos números diferentes de até 30 vezes nos próximos três anos - e os sistemas existentes só podem duplicar a capacidade a cada 18 meses. Há muitas tentativas para resolver esse problema emergente. As melhorias mais dramáticas no desempenho provêm da substituição do intermediário central clássico por uma arquitetura peer-to-peer, na qual as mensagens podem fluir diretamente na rede sem saltos extras. Nem todos os sistemas de mensagens podem adaptar sua arquitetura dessa maneira. Além da arquitetura, o lugar óbvio para otimizar mensagens é no quotstackquot, ou seja, as camadas que separam o programa aplicativo da rede física. O software em si já está muito otimizado na maioria dos casos, então os fornecedores estão mudando para outras opções, tais como: Otimizando a arquitetura de rede por provedores de conectividade para obter melhores latências, incluindo a mudança de clientes de mensagens fechados (em termos de rede) para os produtores de mensagens 7. 8 . Clientes que se deslocam de feeds citados de ações consolidadas para conectividade direta com as trocas 9 Otimizando formatos em que os dados são passados ​​(FIXFAST 10) Fornecer soluções de hardware completas (Tervela, Exegy, etc.) Substituindo a camada de transporte físico (Infiniband 11. Ethernet de 10GB ) Otimizando hardware de rede existente. TCP offload engines, Intel IOAT technology 12. etc. Modificando o sistema operacional para lidar com as mensagens em tempo real. Vários sistemas operacionais em tempo real, como Novells SLERT 13 Modificando o sistema operacional para usar uma pilha de mensagens mais eficiente: IO assíncrono, SDP, várias técnicas de cópia zero etc. Usando multicast para distribuir cotações de ações na LAN dos clientes Além dessas otimizações, que se concentram Em aspectos individuais da pilha ou arquitetura de mensagens, também vemos tentativas que analisam o problema como um todo: Intels Low Latency Lab 14 Centro de Análise de Tecnologia de Valores (STAC) 15 Várias soluções de monitoramento de ampliação de medição (Endace, etc.) Produtos altamente otimizados com Suporte de hardware extensivo torna-se muito caro. Somente as maiores empresas comerciais podem pagar toda a gama de produtos e mesmo para essas empresas, os custos continuam a ser uma preocupação persistente. Para as pequenas empresas, muitas das soluções simplesmente não são uma opção. Oportunidades Nesta seção, analisamos as oportunidades para novos produtos de mensagens de alto desempenho, como os que estamos construindo. Apresento de alto desempenho O primeiro e mais óbvio alvo é qualquer empresa que use middleware comercial high-end para negociação de ações, onde podemos fornecer um equivalente mais barato. Este mercado é sensível ao custo e, na nossa experiência, está disposto a absorver mudanças e riscos para obter um preço atraente e uma vantagem de desempenho em relação aos seus concorrentes. Além disso, existem muitas empresas que não podem pagar esses produtos, mas os usariam se o custo fosse menor. Zipfs Law (geralmente usado para linguagem, mas também aplicável aos tamanhos de negócios) sugere que o número de empresas e seu tamanho seguem um índice inverso de energia, de modo que oferecer um produto a 20 o preço dos líderes de mercado de alto custo deve abrir um mercado cinco vezes Tão grande. (Na verdade, provavelmente não é tão grande, porque as pequenas empresas vão comprar ou alugar plataformas de negociação ao invés de tentar construir suas próprias.) Plataformas de negociação As plataformas de negociação são aplicações de software que as empresas comerciais podem comprar pronto, em vez de se construir usando middleware de mensagens . Dada a demanda por operações mais baratas e rápidas, existe um grande mercado para essas plataformas. Obviamente, uma empresa que constrói uma plataforma de negociação é sensível ao custo da mensagem que ela usa e essas empresas fornecem um mercado para nossos produtos planejados. Bancos de investimento Os bancos de investimento criam seus próprios sistemas de negociação e (da nossa experiência limitada) gostam de ter controle sobre a tecnologia que usam. Os sistemas baseados em padrões são altamente atraentes aqui. O cálculo é que uma tecnologia padrão é mais fácil de controlar e é servida por um mercado maior de especialistas mais baratos. Qualquer solução AMQP tem atração imediata. O custo também é um motorista, mas para as empresas que desenvolvem desenvolvimento significativo em torno da mensagem, a redução dos custos secundários (como o número e o custo dos consultores internos) é um aspecto importante. Ficou claro por que a JPMorganChase foi motivada a empurrar e investir no processo AMQP, mesmo tendo riscos consideráveis ​​na época: o AMQP permite economias muito grandes em despesas de TI, para licenças de mensagens, desenvolvimento personalizado, controle operacional e assim por diante. Podemos entregar uma proposta de risco muito menor para outros bancos de investimento, mas com os mesmos tipos de benefícios. Consolidadores de dados O mundo das ações comercialmente conecta muitas bolsas (NASDAQ, NYSE, etc.) a muitos clientes. Os grandes clientes fazem conexões separadas para cada troca, mas a maioria trabalha através de consolidadores de dados, empresas como a Reuters que fornecem fluxos unificados de várias fontes. Os consolidadores de hoje executam software de mensagens personalizadas altamente personalizadas, não é baseado em padrões e tem pouca margem para se tornar mais barato e mais rápido. Pode ser mais rápido, mas apenas a um custo elevado, que punha as empresas que ficam com mensagens personalizadas, e oferece uma vantagem para as empresas que utilizam mensagens baseadas em padrões, que distribuem os custos e aproveitam muito mais o desempenho. Há uma oportunidade definitiva para abrir esse mercado e permitir que novas empresas compitam como consolidadores de dados, usando nossos produtos de alto desempenho para levar cotações aos clientes. Novas regulamentações dos EUA estão abrindo esse mercado para uma concorrência real. As trocas (bolsas de valores, câmbios, commodities, etc.) são fortemente impactadas pelo crescimento da demanda por seus serviços. Parece inevitável que os padrões nas bordas irão forçar seu caminho para o centro, e devemos ser capazes de acompanhar as ofertas de produtos. Além disso, estão surgindo novos tipos de mercados de negociação (ATSs, MTFs e pools escuros 16) que gradualmente adquirem ainda maior participação do mercado nas trocas tradicionais. Dado que essa tendência é bastante nova e ainda ganha impulso, esperamos ver crescente demanda por sistemas de mensagens de ponta neste mercado. Movendo o valor para diferentes mercados Um dos objetivos do MQ é usar o dinheiro, os recursos e a experiência acumulados durante a corrida de armas de baixa latência no negócio de negociação de ações para oferecer soluções de mensagens de uso geral de ponta de alta qualidade para o resto do setor de TI. Algumas das áreas onde MQ pode ser útil seguem. Mensagens empresariais e institucionais O envio de pagamentos, a comunicação entre empresas, a transmissão de documentos dentro de organizações governamentais, etc., é o principal mercado a se concentrar, além da negociação de ações. A razão é que este é o campo onde a mensagem é usada tradicionalmente, com muitos especialistas em TI experientes conscientes de mensagens e usando isso por muito tempo. Também deve ser levado em consideração que mesmo as aplicações que não usam mensagens adequadas podem ainda estar enviando mensagens por diferentes meios. Considere um aplicativo localizado no local A, escrevendo um registro para o servidor de banco de dados remoto e outro no lugar B, lendo o registro. Na verdade, houve uma mensagem enviada de A para B, mesmo que o programador possa não estar ciente disso. Mesmo a comunicação inter-processo e inter-thread pode ser considerada mensagens. Sincronizar diferentes aplicativos, copiando arquivos para destinos remotos, uma vez por dia, também pode ser considerado mensagem (embora seja um caso de latência espetacularmente baixa). Basicamente qualquer aplicação feita para o setor financeiro ou institucional precisa de algum tipo de mensagem e o custo da implementação varia entre 10 e 30 por cento do custo total do projeto, de modo que usar a implementação de middleware baseada em padrões atual parece ser um investimento bastante bom. Embora a baixa latência não seja um requisito fundamental nesta esfera, esperamos que as taxas de transação crescentes (considere regulamentos como SEPA 17 da UE e esforços de padronização como o TWIST 18) forçará lentamente as instituições financeiras a adotar soluções de mensagens de alto desempenho, causando a atual pequena A fatia do mercado de mensagens abordado por soluções de alto desempenho crescerá de forma constante até chegar em 100. Sistemas embutidos Os sistemas embutidos geralmente possuem requisitos em tempo real semelhantes aos observados no negócio de negociação de ações. Considere, por exemplo, um equipamento que mede algum valor crítico em um processo tecnológico. Os dados devem ser entregues à unidade que controla o processo dentro de 1160ms, caso contrário, todo o processo será prejudicado. Os sistemas embutidos geralmente não precisam da taxa de transferência fornecida por pilhas de estoque de negociação, no entanto, se a latência, a confiabilidade e os tempos de entrega deterministas forem garantidos, eles podem aproveitar isso, mesmo que ele não use toda a capacidade de banda disponível. Multimídia A mesma observação sobre os requisitos em tempo real aplica-se a multimídia (transmissão de áudio e vídeo, teleconferência, etc.). Em oposição aos sistemas incorporados, a latência não é tão crítica, sendo o primordial o tempo de entrega determinista e o alto rendimento. No futuro, podemos descobrir que o modelo de pequenas e pequenas mensagens de aplicativos de estoque comercial é incompatível com a abordagem multimídia baseada em fluxo. No entanto, não acreditamos que este seja o caso. Para testar a hipótese, nós construímos um aplicativo de teleconferência de prova de conceito em relação à AMQP e consideramos que ele funciona sem problemas. Computação em grade Tendo quase os mesmos requisitos que a negociação de estoque, os sistemas de grade são áreas naturais para empregar pilha do MQ. As grelhas são icreasingly usadas nas finanças 19 e - não surpreendentemente - na negociação de ações propriamente dita, fornecendo uma solução para problemas computacionalmente caros, como gerenciamento de riscos e negociação algorítmica 20. A bolha de baixa latência O mercado para soluções de baixa latência é muito animado e está expandindo estes dias. No entanto, alguns têm a sensação de que o valor do mercado é superestimado e que as corridas de latência de baixa latência continuam provocando o estourar da bolha, semelhante ao crash do ponto-com do início dos anos 2000. Vamos examinar possíveis causas da quebra do mercado: existem leis da física que colocam o limite inferior na latência. Especificamente, a velocidade da luz não pode ser excedida e, uma vez que a mensagem atinge esse limite, não haverá muito espaço para competição e a corrida de armas de baixa latência chegará ao fim. Os custos de mensagens rápidas estão crescendo constantemente. Uma vez que atingimos o ponto em que a melhoria da latência exigirá investimentos que excedam os lucros que possivelmente possam render, o fluxo de dinheiro no mercado acabará. Os gastos não razoáveis ​​em soluções de baixa latência podem resultar em histeria, uma vez que o mercado ainda em crescimento de baixa latência começa a diminuir. A histeria pode fazer o mercado cair mesmo abaixo do seu valor real. Nossa visão dos problemas acima é a seguinte: a velocidade da luz é certamente uma barreira final, no entanto, como pode ser visto com os microprocessadores, as barreiras vistas como definitivas são bastante propensas a serem cruzadas uma e outra vez. No negócio de mensagens, por exemplo, vemos soluções de proximidade emergentes (velocidade de processamento do problema da luz, colocando as aplicações interdependentes fisicamente fechadas uma à outra) ou a tendência de otimizar a parte do software da pilha de mensagens, removendo assim a latência do ponto final em vez da latência no fio . Na verdade, não acreditamos que existam barreiras reais e impenetráveis ​​para impedir a corrida de armas de baixa latência pelo menos nos próximos anos. Embora o custo da mensagem de baixa latência cresça de forma constante, deve ser levado em consideração que o preço da tecnologia - hardware e software - está diminuindo constantemente ao mesmo tempo. O que custou 100 no ano passado, custa 50 hoje. Assim, mesmo em um mercado estável e não expansível, onde os gastos com TI se mantêm constantes, haverá uma demanda por novas soluções para acompanhar as novas tecnologias. A histeria pode acontecer a qualquer momento e não há como evitar isso completamente. No entanto, como as mensagens de troca de estoque são, de certa forma, um mundo para si, esperamos que a histeria seja restrita a este pequeno mercado turbulento, deixando o restante do mercado de mensagens intacto. Assim, as principais vítimas serão as empresas que fornecem soluções especializadas de negociação de ações em vez de mensagens de propósito geral. Especificamente, o projeto do MQ, aproveitando os recursos acumulados no mercado de TI focado na negociação de estoque para desenvolver uma solução de mensagens de propósito geral, pode sobreviver à quebra do mercado, confiando em sua presença em diferentes setores do mercado de mensagens. Conclusão O foco principal do MQ começa com a negociação de ações, porque esse mercado possui uma demanda bem definida e crescente de soluções high-end, e as opções para colaborações e retorno sobre o investimento são abundantes. No entanto, a construção de um sistema de mensagens de baixo custo baseado em padrões que pode competir de frente com o melhor do mundo abre portas para muitos outros domínios também. Comentários: 0

No comments:

Post a Comment