Sistema de negociação clojure


Sistema de negociação Clojure
Alguém está usando o fechamento para desenvolver estratégias de negociação automatizadas? Quais são suas experiências? Estou antecipando o aprendizado do clojure e queria saber se eu poderia usá-lo neste contexto, se existem recursos para usá-lo neste contexto, os pls fornecem um link. Atualmente, estou usando apenas o ruby ​​e o javascript para desenvolvimento da web.
Eu não vi nenhum trabalho específico de clojure nesta área, embora isso provavelmente tenha mais a ver com o clojure ser uma linguagem nova em folha do que qualquer outra coisa. Certamente, as capacidades quantitativas do clojure estão crescendo - dê uma olhada no incanter se você ainda não o fez.
Se é negociação de baixa latência / alta velocidade, então eu tenho minhas dúvidas sobre se o clojure seria apropriado (apesar de o clojure ser meu idioma favorito). C ++ realmente parece ser a melhor opção a esse respeito.
O Clojure pode ser útil devido ao seu:
Recursos de programação funcional Tolerância a falhas.

Desenvolvedor Clojure.
Dean & amp; Empresa
Desenvolvedor Full Stack.
Energia & amp; Commodities, Futures Trading.
Descrição do trabalho.
A Dean and Company está à procura de um desenvolvedor do Clojure para desenvolver sistemas financeiros em colaboração com empresas de comércio afiliadas e fundos de hedge. O sistema está sendo desenvolvido tanto para esses afiliados como para um produto comercial. Você estará envolvido com o desenvolvimento desde o início.
Habilidades e Requisitos
- 1-2 anos de experiência prática, idealmente com uma linguagem funcional (por exemplo, Clojure, Scala, Lisp, Scheme)
- Bacharel ou mestrado em Ciência da Computação, Engenharia ou área afim.
- Experiência de desenvolvimento com Clojure é o preferido.
- Experiência em programação estatística (por exemplo, R, SPlus, Matlab, Python)
- Experiência de desenvolvedor com um moderno RDBMS.
- Emprego anterior no setor financeiro.
- Experiência com a AWS.
Sobre o Dean & amp; Empresa
Dean & amp; A Company é uma empresa de consultoria com sede em Viena, VA, nos arredores de Washington, DC, que fornece serviços de suporte a empresas de comércio e investimento, incluindo a DC Energy, a Dean Ventures e outras.

US Search Desktop.
Agradecemos seus comentários sobre como melhorar a Pesquisa do Yahoo. Este fórum é para você fazer sugestões de produtos e fornecer feedback atencioso. Estamos sempre tentando melhorar nossos produtos e podemos usar o feedback mais popular para fazer uma mudança positiva!
Se você precisar de assistência de qualquer tipo, visite nosso fórum de suporte à comunidade ou encontre ajuda individualizada em nosso site de ajuda. Este fórum não é monitorado por nenhum problema relacionado a suporte.
O fórum de comentários do produto do Yahoo agora exige um ID e uma senha válidos do Yahoo para participar.
Agora você precisa fazer login usando sua conta de e-mail do Yahoo para nos fornecer feedback e enviar votos e comentários para as ideias existentes. Se você não tiver um ID do Yahoo ou a senha do seu ID do Yahoo, inscreva-se para obter uma nova conta.
Se você tiver um ID e uma senha do Yahoo válidos, siga estas etapas se quiser remover suas postagens, comentários, votos e / ou perfil do fórum de comentários do produto do Yahoo.
Vote em uma ideia existente () ou publique uma nova ideia…
Idéias quentes Idéias superiores Novas ideias Categoria Status Meu feedback.
Xnxx vedios.
Trazer de volta o layout antigo com pesquisa de imagens.
sim: a única possibilidade (eu acho) enviar todas as informações para (alienvault.
Desinformação na ordem DVD.
Eu pedi DVD / Blueray "AL. A confidencial" tudo que eu consegui foi Blue ray & amp; um contato # para obter o DVD que não funcionou. Eu encomendo minha semana com Marilyn ____DVD / blue ray & amp; Eu peguei os dois - tolamente, assumi que o mesmo se aplicaria a L. A. ___ETC não. Eu não tenho uma máquina de raio azul ----- Eu não quero uma máquina de raio azul Eu não quero filmes blueray. Como obtenho minha cópia de DVD de L. A. Confidential?
yahoo, pare de bloquear email.
Passados ​​vários meses agora, o Yahoo tem bloqueado um servidor que pára nosso e-mail.
O Yahoo foi contatado pelo dono do servidor e o Yahoo alegou que ele não bloquearia o servidor, mas ainda está sendo bloqueado. CEASE & amp; DESISTIR.
Não consigo usar os idiomas ingleses no e-mail do Yahoo.
Por favor, me dê a sugestão sobre isso.
Motor de busca no Yahoo Finance.
Um conteúdo que está no Yahoo Finance não aparece nos resultados de pesquisa do Yahoo ao pesquisar por título / título da matéria.
Existe uma razão para isso, ou uma maneira de reindexar?
Procure por "turkey ******" imagens sem ser avisado de conteúdo adulto ou que o mostre.
O Yahoo está tão empenhado em atender os gostos lascivos das pessoas que nem posso procurar imagens de uma marca de "peitos de peru" sem ser avisado sobre conteúdo adulto? Apenas usando a palavra "******" em QUALQUER contexto significa que eu vou pegar seios humanos em toda a página e ter que ser avisado - e passar por etapas para evitá-lo?
Aqui está minha sugestão Yahoo:
Invente um programa de computador que reconheça palavras como "câncer" ou "peru" ou "galinha" em uma frase que inclua a palavra "******" e não assuma automaticamente a digitação "***** * "significa que estou procurando por ***********.
Descobrir uma maneira de fazer com que as pessoas que ESTÃO procurando *********** busquem ativamente por si mesmas, sem assumir que o resto de nós deve querer *********** se digitarmos uma palavra comum - ****** - que qualquer um pode ver qualquer dia em qualquer seção de carne em qualquer supermercado em todo o país. :(
O Yahoo está tão empenhado em atender os gostos lascivos das pessoas que nem posso procurar imagens de uma marca de "peitos de peru" sem ser avisado sobre conteúdo adulto? Apenas usando a palavra "******" em QUALQUER contexto significa que eu vou pegar seios humanos em toda a página e ter que ser avisado - e passar por etapas para evitá-lo?
Aqui está minha sugestão Yahoo:
Invente um programa de computador que reconheça palavras como "câncer" ou "peru" ou "galinha" em uma frase que inclua a palavra "******" e não assuma automaticamente a digitação "***** * "significa que estou procurando por mais ...
Por que, quando eu faço login no YahooGroups, todos os grupos aparecem em francês ?!
Quando entro no YahooGroups e ligo para um grupo, de repente tudo começa a aparecer em francês? O que diabos está acontecendo lá ?! Por alguma razão, o sistema está automaticamente me transferindo para o fr. groups. yahoo. Alguma ideia?
consertar o que está quebrado.
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que como ele não faz e agora eu obter a nova política aparecer em cada turno - as empresas costumam pagar muito caro pela demografia que os usuários fornecem para você, sem custo, pois não sabem o que você está fazendo - está lá, mas não está bem escrito - e ninguém pode responder a menos que concordem com a política. Já é ruim o suficiente você empilhar o baralho, mas depois não fornece nenhuma opção de lidar com ele - o velho era bom o suficiente - todas essas mudanças para o pod de maré comendo mofos não corta - vou relutantemente estar ativamente olhando - estou cansado do mudanças em cada turno e mesmo aqueles que não funcionam direito, eu posso apreciar o seu negócio, mas o Ameri O homem de negócios pode vender-nos ao licitante mais alto por muito tempo - desejo-lhe boa sorte com sua nova safra de guppies - tente fazer algo realmente construtivo para aqueles a quem você serve - a cauda está abanando o cachorro novamente - isso é como um replay de Washington d c
Eu não deveria ter que concordar com coisas que eu não concordo com a fim de dizer o que eu acho - eu não tive nenhum problema resolvido desde que comecei a usar o Yahoo - fui forçado a jogar meu antigo mensageiro, trocar senhas, obter novas messenger, disse para usar o meu número de telefone para alertar as pessoas que era o meu código de segurança, receber mensagens diárias sobre o bloqueio de yahoo tentativas de uso (por mim) para quem sabe por que isso acontece e agora eu recebo a nova política em cada turno - as empresas costumam pagar muito pela demografia que os usuários fornecem para você ... mais.

Sistema de negociação Clojure
Há muitos tópicos antigos (em HN [1] ou Quora [2]) que perguntam isso - mas nenhum deles parece refletir mais sobre quem está usando o Clojure em produção no final de 2014. O recente estado de Clojure dados [3] não capturam isso também.
Somos principalmente uma loja de Java e o Clojure foi atraente porque nos permitiu aproveitar o ecossistema existente, ferramentas e bibliotecas que já estávamos usando. Com o Clojure, conseguimos desenvolver aplicativos com muito mais rapidez do que com o Java e descobrimos que os aplicativos eram mais fáceis de manter. Este último vem principalmente da imutabilidade generalizada e da vasta redução geral no código.
No momento, estamos explorando o ClojureScript para o lado do cliente e já implantamos um pequeno aplicativo em produção usando o Reagent (http: & # x2F; & # x2F; reagent-project. github. io & # x2F;). Funcionou muito bem para as nossas necessidades até agora.
Também consegui liberar várias bibliotecas que desenvolvi para o trabalho como fonte aberta:
O ThreatGRID, agora parte da Cisco, usa clojure em nossa plataforma de análise de malware e inteligência contra ameaças. É uma parte essencial do nosso mecanismo de análise, que examina todas as coisas que o malware faz e como detectá-lo no resto de seus sistemas. Nós construímos um "sistema especialista" dos anos 80 & quot; inicialização usando core. logic.
Também é o núcleo do nosso serviço de API, e a interface do usuário é construída sobre isso. Usamos o clojurescript extensivamente na interface do usuário e movemos grandes partes dele para o Om.
É uma tecnologia fundamental para nós, permitindo-nos construir ferramentas de análise melhores, mais rápidas e com melhor desempenho que outras linguagens. Temos código de clojure em produção, tanto em nossa oferta de SaaS, quanto enviado para muitos grandes clientes de finanças, governamentais e corporativos em todo o mundo.

Histórias de sucesso do Clojure.
Como é frequentemente o caso com os idiomas jovens, a pergunta foi feita à comunidade Clojure & quot; Quem está usando o Clojure? & Quot;
Esta página pretende responder a essa pergunta!
A Akamai criou um ambiente operacional digital para a Web. Nossa plataforma global de milhares de servidores especialmente equipados ajuda a Internet a suportar as solicitações diárias de conteúdo, transações e aplicativos ricos, dinâmicos e interativos. Ao atender a essas solicitações, a Akamai detecta e evita pontos problemáticos da Internet e vulnerabilidades, para garantir que os sites tenham um desempenho ideal, o download de mídia e software na perfeição e que os aplicativos funcionem de maneira confiável.
Appvise appvise. me foi fundado em dezembro de 2010. Seu objetivo é conectar seu smartphone com os aplicativos que você vai adorar. É um mercado onde você recebe listas personalizadas com base em quem você é, em que você está interessado, onde você mora e como seus amigos são.
A BackType é uma empresa de inteligência de marketing que desenvolve produtos e serviços que ajudam as empresas a entender seu impacto social. O BackType construiu o sistema mais poderoso do mundo para analisar dados sociais. Também fornecemos recursos sociais para mais de 100 empresas, incluindo o The New York Times, o SlideShare, a Automattic (criadores do WordPress), o Bitly e muito mais.
A missão da marca Karma é proteger o valor e cultivar o potencial das marcas. Fornecemos as tecnologias mais inteligentes para interpretar dados de marca e consultores especializados para orientar os executivos de hospitalidade no mundo das novas mídias. Os clientes da Brand Karma são capazes de competir analiticamente e obter um retorno superior sobre seus investimentos em marca, aumentando a conscientização, a satisfação, a lealdade e a lucratividade.
O Citigroup, empresa líder global em serviços financeiros, tem aproximadamente 200 milhões de contas de clientes e faz negócios em mais de 140 países. Por meio do Citicorp e do Citi Holdings, o Citi oferece aos consumidores, corporações, governos e instituições uma ampla gama de produtos e serviços financeiros, incluindo serviços bancários e de crédito ao consumidor, serviços bancários corporativos e de investimento, corretagem de valores mobiliários, serviços de transações e gestão de patrimônio.
O Compass Labs permite que os anunciantes alcancem, envolvam e convertam usuários no Facebook, Twitter e outras redes sociais na web, incluindo dispositivos móveis, usando nossa otimização inteligente e direcionada com precisão.
A Factual, Inc. é uma plataforma de dados aberta para desenvolvedores de aplicativos que aproveita a agregação em larga escala e a troca de comunidades. Por exemplo, você encontrará conjuntos de dados para milhões de empresas e pontos de interesse locais dos EUA e internacionais, além de conjuntos de dados sobre entretenimento, saúde e educação. Estamos usando o Clojure há mais de um ano como parte de nossa agregação em tempo real e pilha de consultas. Começamos a usá-lo de forma mais agressiva para nos ajudar a resolver problemas de dados em grande escala, incluindo o aproveitamento do poder do projeto Cascalog.
O FlightCaster prevê atrasos de voo. Usamos um algoritmo avançado que analisa dados em todos os voos domésticos nos últimos 10 anos e os associa às condições em tempo real. Ajudamos você a avaliar opções alternativas e ajudar a conectar você à pessoa certa para fazer a alteração.
Geni está resolvendo o problema da genealogia, convidando o mundo a construir a árvore genealógica online definitiva. Usando o serviço gratuito básico da Geni, os usuários adicionam e convidam seus parentes para se juntarem à sua árvore genealógica, o que Geni compara a outras árvores. As árvores correspondentes são então mescladas na árvore genealógica do mundo único, que atualmente contém cerca de 50 milhões de usuários vivos e seus ancestrais. Os serviços de pagamento incluem ferramentas aprimoradas de pesquisa, bem como produtos de lembranças criados a partir de dados da árvore genealógica. Geni recebe genealogistas casuais e especialistas que desejam descobrir novos parentes e manter contato com a família. Geni é uma empresa privada e sediada em Los Angeles, Califórnia.
O Higiebus é uma solução que aborda a necessidade de substituir o manuseio de papel por conteúdo eletrônico entre organizações médicas. É um ponto focal para o tráfego interno entre os serviços nos hospitais e também é projetado como uma interconexão remota entre diferentes organizações.
Ele é baseado em um design de barramento de mensagens com interfaces prontas para vários equipamentos médicos / sistemas de computador. Totalmente redundante e voltado para entregar mensagens em tempo real. Ele é usado na produção desde janeiro de 2009, inicialmente com um tempo de execução pré-v1.0 Clojure.
Infinitamente Beta é uma equipe muito apaixonada de hackers e designers de produtos que acreditam que os melhores produtos compartilham o DNA da simplicidade, estética e função. Aplicamos uma ótima tecnologia para oferecer experiências de produtos simples e fáceis de usar. Somos focados em laser nos aspectos menos óbvios de ótimos produtos, como desempenho, baixa latência e escalabilidade.
KamaGames é um desenvolvedor de sucesso e editor de software de entretenimento para o MacOS, Android, Samsung Bada, Facebook e outras redes sociais desde 2009.
Trabalhamos com desenvolvedores da China, Índia, Rússia, Estados Unidos, Canadá e Nova Zelândia. Organizando o caos, conseguimos resultados indevidos no desenvolvimento de jogos. Dando momentos brilhantes aos nossos clientes em tempo compartilhado com produtos do nosso gênio.
Hoje nos conectamos com 8 milhões de pessoas. Amanhã nossa família cresce pelo menos 10 vezes.
A LeadTune fabrica produtos que ajudam a reduzir o desperdício de chumbo e a extrair mais dos seus leads.
O Grupo de Biologia Computacional do Instituto Max Planck de Biomedicina Molecular está desenvolvendo ferramentas computacionais para entender o mecanismo subjacente às redes de regulação genética de células-tronco pluripotenciais e totis e de células reprogramadas.
Empregamos o Clojure para analisar e visualizar gigabytes de dados genômicos.
A Pico Quantitative Trading é uma corretora somente de agências especializada na prestação de serviços a clientes de comércio eletrônico de ativos múltiplos.
A equipe da PQT oferece assistência especializada em necessidades de negociação de baixa latência, desde a cobertura do cliente até o desenvolvimento de tecnologia, juntamente com a estrutura do mercado, empréstimo de ações, compensação e negociação de co-localização.
O Platogo fornece ferramentas e APIs para desenvolvedores de jogos para trazer seus jogos para o Facebook e outras redes sociais com facilidade. Nosso último produto, o social. io ajuda os desenvolvedores de aplicativos sociais a maximizar sua receita, integrando as redes sociais mais relevantes do mundo por meio de uma interface de gráfico social unificada. A partir de hoje (jul / 2011) estamos usando o clojure 1.3.0.
A Cognitect (anteriormente Relevance) está usando o Clojure para ajudar nossos clientes a resolver problemas difíceis. Nós implantamos soluções baseadas em Clojure para startups, empresas de médio porte e clientes da Fortune 50. Criamos ferramentas de monitoramento de integridade doméstica, análise de segurança de rede em tempo real e mecanismos de jogos on-line. Usamos o Clojure para promover pesquisas acadêmicas e criar um aplicativo do Facebook. O Clojure representa uma parte considerável e crescente da equipe e do pipeline do nosso projeto.
A Cognitect também é a empresa por trás da Datomic, um banco de dados de fatos flexíveis baseados em tempo, suportando consultas e junções, com escalabilidade elástica e transações ACID. A Datomic pode alavancar serviços de armazenamento distribuídos altamente disponíveis e coloca o poder declarativo nas mãos dos desenvolvedores de aplicativos.
Revelytix usa tecnologias web semânticas para construir produtos para integração de dados e análises emergentes em empresas e sistemas federais. O principal projeto da empresa utiliza as tecnologias Revelytix para integrar muitas fontes de dados em um dos maiores domínios federais e fornecer análises para os principais tomadores de decisão. Revelytix tem três produtos construídos inteiramente em Clojure: Spyder (para SPARQL dinâmico para tradução SQL usando mapeamentos R2RML), Spinner (para federação SPARQL) e Rex (para execução de regras baseada em RIF). Esses três produtos estão no centro da manipulação simbólica de consultas, ontologias ou regras e descobrimos que o Clojure é uma excelente combinação para esses problemas. O Clojure nos permite construir abstrações de alto nível que funcionam no nível do problema. Também obtivemos ganhos tremendos de podermos integrar e reutilizar a vasta riqueza de bibliotecas Java disponíveis na JVM.
A Runa ajuda a oferecer incentivos de preço de venda personalizados mais eficazes em tempo real.
A Setere oferece dois tipos básicos de soluções - soluções para empresas e organizações, garante eficiência de segurança de informações e soluções para empresas de software associadas à SI, permitindo que essas empresas apliquem empresas de tecnologia inovadora Security Technology Research em seus produtos.
A Sonian é uma plataforma de tecnologia e empresa de serviços hospedados com a missão de ajudar milhões de organizações em todo o mundo a gerenciar suas funções críticas de TI, como arquivamento, pesquisa, conformidade, e-discovery e gerenciamento de armazenamento. A Sonian implanta grandes clusters que executam o Clojure para executar a análise, o arquivamento e a indexação de muitos terabytes de e-mail e outros documentos.
TheDeadline fornece uma nova maneira de compartilhar todos os trabalhos de forma rápida e fácil com colegas de trabalho para colaborar em projetos pequenos e grandes. Um sistema integrado de Inteligência Artificial fornece atualizações de status, solicita decisões e fornece um sistema inteligente para reenviar todos os atrasados ​​sem incomodar o usuário. A ferramenta não apenas armazena todos, mas na verdade ajuda os usuários a fazerem seus tarefas: Adicionar e marcar um todo é tão fácil quanto escrever um post no Twitter.
Tianya é o maior fórum da China. Nós desenvolvemos um sistema de integração de dados com o uso do Clojure. Em virtude do poderoso recurso de construção de DSL do Clojure, a base de código para o sistema de integração de dados é muito pequena em comparação com suas funcionalidades.
O Typewire é um serviço de blog ao vivo que permite que você se comunique com todo o público instantaneamente enquanto você cobre eventos ao vivo.
Nós usamos uma combinação de Clojure, ClojureQL e Vaadin para criar nosso site em youcaneat. at. Descobrimos que podemos desenvolver muito mais rápido do que usar Java, JSP e Servlets tradicionais, em parte porque o Vaadin é um framework web tão bom, mas também em grande parte devido à interoperabilidade contínua do Clojure com o Java. O aspecto mais benéfico para nós é, no entanto, as abstrações STM e Lisp do Clojure.
A World Singles é uma empresa dedicada a ajudar pessoas a conhecer, conectar e encontrar o amor. Nós operamos um portfólio coeso de marcas de namoro com foco cultural, atendendo a várias comunidades étnicas e de estilo de vida, bem como àquelas que buscam uma experiência de namoro mais diversificada e centrada no mundo.
O Wusoup é um aplicativo de reunião baseado na web que está sendo construído inteiramente em Clojure: front e back ends. O Nginx atua como um proxy reverso, passando solicitações para o aplicativo que está executando um servidor Jetty (Ring) incorporado. O roteamento é feito pela Compojure; Geração de HTML por Hiccup. O material algorítmico é principalmente reduções de mapa em cache sobre perfis de usuários e estatísticas coletadas do comportamento do usuário.
O AltLaw foi um dos primeiros sites de produção criados no Clojure. Foi também um dos primeiros bancos de dados de pesquisa legal de código aberto, relatado no New York Times. O AltLaw usou o Clojure para aproveitar grandes bibliotecas Java de código aberto, como o Hadoop, o Lucene e o Solr. Desde então, o AltLaw foi desativado, mas ajudou a inspirar outras organizações, como o Google Scholar, a disponibilizar mais documentos legais gratuitamente e pesquisáveis.

Teste contínuo em Clojure como.
Se o comportamento persistir, por favor entre em contato.
Bill Caputo discute a adoção de testes contínuos para Clojure, quais são os objetivos de tal prática, como ela difere de outras linguagens, considerações práticas (ferramentas, configuração) e uma demonstração.
Bill Caputo é engenheiro de software sênior na DRW Trading, onde lidera uma equipe usando Clojure, Ruby, JavaScript e Python para fornecer ferramentas de visualização e monitoramento para sistemas de negociação. Anteriormente, Bill foi diretor de segurança e diretor de engenharia de software da Redbox Automated Retail (agora Coinstar) e, antes disso, consultor da ThoughtWorks.
Clojure / West é uma nova conferência que reúne a comunidade Clojure para discutir técnicas, ferramentas e o estado do ecossistema Clojure, de 16 a 17 de março, para três faixas de sessões. Antes da conferência, registre-se por três dias de treinamento pelos especialistas da Clojure.

Engenheiro de Sistemas de Negociação.
A DRW é uma empresa de comércio principal diversificada e liderada pela tecnologia. Negociámos o nosso próprio capital por nossa conta e risco, através de uma ampla gama de classes de ativos, instrumentos e estratégias, em mercados em todo o mundo. Como os mercados evoluíram nos últimos 25 anos, a DRW também cresceu, incluindo imóveis, criptomoedas, capital de risco e várias aquisições no setor. Com mais de 800 funcionários em nossa sede em Chicago e seis escritórios globais, trabalhamos juntos para resolver problemas interessantes e capturar oportunidades. É um local de grandes expectativas, profunda curiosidade e colaboração constante, com algumas das pessoas mais inteligentes e mais apaixonadas que você conhecerá.
Nossa equipe de suporte de aplicativos fornece suporte de missão crítica para nossos principais sistemas de negociação proprietários. Eles gerenciam uma ampla variedade de suporte técnico e funções de engenharia, incluindo suporte a aplicativos em ambientes de teste e produção, implementação e configuração de software e monitoramento do sistema. É um ambiente dinâmico e de ritmo acelerado que oferece constantemente novos desafios técnicos e exige que você aprenda coisas novas diariamente.
O que você fará nessa função:
Trabalhar como parte de uma equipe para estabelecer os melhores processos de suporte para garantir a operação perfeita de tecnologias de produção, processos de implantação e configuração de software impecáveis ​​e monitoramento e suporte proativos para antecipar e evitar problemas antes que eles ocorram. evite perder oportunidades comerciais chave Forneça suporte a vários sistemas de produção de grupos comerciais em uma variedade de classes de ativos e localizações geográficas Desenvolva ferramentas proprietárias de automação e monitoramento de processos e aproveite as tecnologias de terceiros conforme apropriado Forneça suporte para sistemas de negociação proprietários implantados em ambiente de produção de plataforma (principalmente Linux com um pouco de Windows) Solucionar incidentes de produção do sistema comercial resultantes de sistemas internos (software / sistemas proprietários) ou externos (mercados, feeds de dados, linhas de telecomunicação) Automatizar a configuração de software e rollout para reduzir a configuração manual rative erros e busque gerenciamento de mudanças impecável Suporte a conectividade de mercado e corresponda a trocas relacionadas a atividades de pedidos, conectividade e outros problemas de suporte técnico relacionados Trabalhe interativamente com DBAs, equipes de desenvolvimento, sistemas de back office, engenheiros de QA, infra-estrutura e equipes de gerenciamento implantação de releases de produção e solução de problemas técnicos.

Impacto Social da Engenharia.
Impacto Social da Engenharia.
Máquina de estados finitos acionada por eventos para um sistema comercial distribuído.
Um problema que tive ao criar meu sistema comercial distribuído é gerenciar estados de forma assíncrona a partir de vários gatilhos. Por exemplo, quando o mecanismo alfa diz comprar, ele precisa da confirmação do mecanismo de posição para ver se é seguro entrar em uma nova posição. Eu poderia encadear um cheque após o outro de forma imperativa ou por meio de retornos de chamada. No entanto, a restrição subjacente é que esses gatilhos:
são intensivos em recursos para gerar, podem precisar compor muitos deles, não sequenciais ou ter uma dependência individual e, o mais importante, estão em programas separados ou em máquinas diferentes.
Assim, optei por abstrair esse problema em seu próprio módulo do sistema como uma máquina de estados finitos (FSM) acionada por eventos para acompanhar as transições de estado. Termo intimidante, mas a minha primeira implementação foi apenas if-else declarações para se qualificar como tal. O benefício é que cada um dos componentes do meu sistema só precisa enviar sinais e puxar estados de uma interface central sem ter que se preocupar com o que deve chamar em seguida ou pesquisar qualquer outra coisa para ver se as estrelas estão alinhadas. Isso simplificou drasticamente o desenvolvimento e a manutenção.
As responsabilidades do meu módulo FSM são:
ouça todos os sinais, descubra todas as transições e publique os estados mais recentes para o resto do sistema.
Manipulando eventos assíncronos.
Eu uso o Rabbit como a camada de transporte de mensagens entre os módulos do meu sistema. Tudo o que preciso fazer aqui é associar um manipulador de mensagens apropriado a cada entrada de acionamento do FSM. Aqui está um exemplo dos manipuladores de eventos usando a biblioteca Clojure Rabbit, Langohr. O resto desta parte é apenas coisa padrão de publicação / assinatura do Rabbit.
Isso é chamado quando um evento de posição é recebido com informações como usuário, instrumento e quantidade. Esse manipulador iria encadear essas informações, buscando estados atuais para esse usuário, avaliar o próximo estado com entrada e, em seguida, armazenar em cache os novos estados para o usuário.
Transições de estado.
Abaixo está um dos diagramas de transição de estado do meu sistema.
Existem 4 estados representados por 4 cores com 4 triggers que sinalizam a transição de estado. Espera-se que o programa manipule até centenas de estados independentes concomitantemente com gatilhos de eventos que chegam em algumas vezes por segundo.
Como eu estava dizendo, minha primeira implementação é apenas um conjunto de métodos if-else. Por exemplo, um acionador de ativação chamaria o método de engate para determinar o próximo estado, dado o envolvimento implícito da entrada e o estado atual.
Havia um punhado desses códigos clichê. Então, depois que implantei meu sistema, voltei para refatorá-los. Eu estive querendo dar core. logic uma tentativa por um tempo, então isso parece ser um bom lugar para começar a usá-lo.
Antes de podermos fazer a pergunta do solucionador lógico, precisamos definir relações. Aqui eu defino uma relação de transição para especificar toda a definição de transição de estado convenientemente em um lugar.
E os métodos manipuladores de eventos são apenas invólucros para uma expressão lógica de uma linha perguntando a questão - dado estágio atual, estado-final, e acionador de entrada, entrada, qual estado pode q tomar para satisfazer essa restrição?
Não é o exemplo mais ilustrativo de core. logic, mas faz o trabalho.
Começar com o core. logic é surpreendentemente fácil. Eu passei pelo Primer e tutorial e comecei a trabalhar em uma tentativa.
Estado de cache e compartilhamento.
Agora que a transição de estado foi resolvida, os estados são armazenados em cache e servidos no Redis para outras partes do sistema. Eu uso o Redis para isso porque é rápido e fácil. Os valores são armazenados no formato edn em vez de algo mais popular, como o JSON, para manter a estrutura de dados por meio do fio.
Esta é a primeira vez que uso o edn em produção. Todas as mensagens entre processos neste sistema de negociação são formatadas edn. Ele funciona perfeitamente com o Clojure simplesmente usando str para escrever e clojure. edn / read-string para leitura. Além dos meus outros componentes do Clojure no sistema, minha interface de agente de negociação é escrita em Java. Meu programa Java usa o edn-java para analisar e unparar estruturas de dados complexas do Clojure (por exemplo, mapas aninhados com palavras-chave).
Acho que o acoplamento com o Redis é uma escolha fantástica, pois é quase como trabalhar com estruturas de dados de concorrência nativa do Clojure, como o atom, mas também permitir que programas externos acessem os dados.
Simples e rápido
Todo o programa FSM orientado a eventos tem menos de 200 linhas de código Clojure e não levou mais do que algumas horas para fazer. No entanto, eu dei algum tempo ponderando por alguns dias. Eu não fiz nenhum benchmark para estimar o resultado de desempenho. Então, tudo o que posso dizer é que essa configuração pode lidar com meu caso de uso simplista com quase nenhuma carga no servidor, então estou feliz com isso.
Alguns anos atrás, eu teria definido um monte de bandeiras para mudar de estado. Na verdade, foi o que eu fiz. A maior satisfação aqui para mim não é a implementação ou tecnologias, é ver através do problema subjacente e resolvê-lo com um padrão comum que tornou o meu trabalho mais simples.

Комментарии