Ciência e Tecnologia

Por que você provavelmente está pensando em sistemas de tempo real da maneira errada

Organizações em vários setores estão cada vez mais interessadas e estão tentando construir sistemas em tempo real que excedem em muito as capacidades limitadas dos sistemas de software do passado recente. As questões que esses sistemas precisam abordar impactam as operações internas e as experiências dos clientes, e também se estendem além dos muros da organização individual para alterar as capacidades esperadas do setor e até mesmo a saúde do planeta.

A próxima geração de sistemas em tempo real entra em jogo em usos extremamente diversos:

  • Segurança e proteção: Entregando novos níveis de saúde e segurança pública em edifícios inteligentes que detectam e impedem automaticamente a propagação de doenças,
  • Varejo: Permitindo novas experiências personalizadas de marketing de proximidade em ambientes físicos de varejo, Emergências: Detecção de inundações e outras situações de emergência e acionamento automático de protocolos de evacuação

    Em todos esses cenários – não pode haver comprometimento em termos de capacidade de resposta, confiabilidade e escalabilidade. Isso exige que os responsáveis ​​pelo desenvolvimento adotem uma maneira mais moderna de pensar sobre como esses sistemas de tempo real de alto desempenho devem ser arquitetados.

    Quando a primeira maneira de criar sistemas em tempo real do banco de dados falha — quantos elevadores você pode realmente monitorar — antes de quebrar?

    Um moderno A super-cidade pode ter prédios com centenas de milhares de elevadores – todos os quais exigem monitoramento constante para detectar situações de interesse, como segurança e preocupações. A melhor maneira de enfrentar esse tipo de desafio de ‘construção inteligente’ é por meio de processamento de fluxo em tempo real que pode lidar com análises de dados em escala e fornecer consciência situacional consistente e oportuna.

    O desenvolvimento provavelmente começaria com informações a partir de um único elevador com análise feita em um banco de dados de séries temporais simples e pequenas consultas em lote. Mas seria incorreto supor que o que funciona para um deve funcionar para centenas e depois milhares.

    A falha nessa suposição é que as consultas de banco de dados serão capazes de lidar com a explosão de dados sem grandes perda de velocidade de desempenho. Essa abordagem funciona conforme o esperado com um pequeno número de elevadores, mas todo o sistema falha quando a quantidade de dados (elevadores) cresce além dos recursos do banco de dados

    Independentemente de colocar outros recursos em tempo real ao redor na periferia do banco de dados tradicional neste sistema, o uso de um banco de dados em si é o que inerentemente quebra o sistema em escala.

    A solução para criar um sistema escalável robusto é realizar a análise de detecção de anomalias na memória e, em seguida, mova as informações para o banco de dados para fins históricos. O banco de dados é a última etapa, não a primeira, em um sistema moderno de tempo real.

    Os três tipos de sistemas de tempo real

    Embora haja um interesse crescente em sistemas de tempo real, há ruído, confusão e desinformação sobre os diferentes tipos e capacidades de sistemas de tempo real, bem como a relevância (ou não) dos bancos de dados para sua capacidade de escalar e executar conforme necessário. Existem três tipos de sistemas de tempo real, cada um dos quais é relevante para resolver uma classe diferente de problemas.

      Sistemas de tempo real ‘hard’ – baseados em hardware,

    1. Sistemas de tempo real de micro-lote – sistemas de tempo real ‘soft’ que usam mais processos e consultas de dados tradicionais,
    2. Sistemas em tempo real orientados a eventos – sistemas em tempo real ‘soft’ que usam processamento de fluxo ou evento.
      1. 1. “Hard’ Real-Time Systems

        Esses tipos de sistemas são necessários para resolver problemas que não podem tolerar a falta de ‘prazos’, com velocidade de desempenho medida em alguns milissegundos. Nenhum banco de dados poderia fornecer esse tipo de desempenho e, além disso, todos os equipamentos de hardware e computação precisam ser feitos no local. Linhas de montagem robótica automatizadas de alta precisão exigem o rigor deste tipo de sistema em tempo real.

        2. Sistemas de tempo real de micro-lote

        Esta abordagem para sistemas de tempo real é mais apropriada para problemas que requerem apenas alguns tempo de processamento com latências na casa das centenas de milissegundos (ou mesmo segundos) e que requerem pouco dimensionamento. Os sistemas de pedidos de comércio eletrônico podem ser uma boa combinação para isso.

        As abordagens tradicionais de processamento de dados são executadas em pequenas quantidades de dados (microlotes) em um ‘ciclo de trabalho’ rápido. O ponto zero para a criação de problemas fatais é encontrado nas tentativas de dimensionar o sistema e diminuir a latência entre os lotes para fazer esses sistemas funcionarem, semelhante aos sistemas de tempo real orientados a eventos.

        À medida que o número de lotes aumenta linearmente, a sobrecarga de computação e o custo para executar continuamente as consultas no volume crescente de micro-lotes aumenta exponencialmente (até o quadrado do tamanho do banco de dados). Em algum momento, a lei da física entra em ação e torna-se impossível fazer a camada de análise de dados do sistema funcionar no ‘ definido em tempo real’ em alto volume. Em última análise, um banco de dados nunca será tão rápido quanto o processamento de eventos.

        3. Sistemas em tempo real orientados a eventos

        Esta é a solução ‘goldilocks’ para aplicativos que exigem ação em um período de tempo muito curto na faixa de 1-10 milissegundos. Um sistema de recomendação é um uso apropriado desse tipo de sistema em tempo real – como no comércio eletrônico ou na automação industrial.

        O processamento em memória, não um banco de dados, é a força motriz desse sistema . As informações (de sensores de IoT, IA incorporada, corretores de eventos etc.) são processadas em voo usando análise de fluxo e podem ser enviadas para um banco de dados para fins históricos.

        Conforme a quantidade de dados aumenta – o trabalho de computação é dimensionado linearmente – não exponencialmente – como no caso da abordagem de microlote.

        Encontrando e evitando o desempenho e Escala de Choke Points em Sistemas de Tempo Real

          A análise dos três tipos de sistemas de tempo real nos mostra que os sistemas que usam um modelo de armazenamento de banco de dados tradicional nunca pode ser escalável em tempo real, mesmo que a ingestão tenha sido em tempo real.

          Leva tempo para realizar consultas, e o desempenho da consulta diminui à medida que um banco de dados cresce – o que é exatamente o que acontece quando você tenta escalar um sistema. Em nosso exemplo anterior de elevador, a ingestão era em tempo real, mas o acesso e a execução de consultas nas informações armazenadas no banco de dados NÃO era em tempo real.

          O desempenho desse sistema foi, em última análise, limitado pelo pior realizando parte de todo o sistema – o banco de dados.

          Ao projetar a próxima geração de sistemas de tempo real, é essencial considerar o período de tempo em que as diferentes informações devem ser acessadas e compreendidas e a escala para o qual você deseja expandir seu sistema.

          Não é uma decisão de ou-ou – os sistemas de tempo real de próxima geração precisarão to Be Hybrid

            Não existe uma abordagem única para sistemas de tempo real. Mas é sempre importante começar entendendo quais informações precisam ser armazenadas por longos períodos de tempo em um banco de dados para relatórios históricos, análises mais profundas e reconhecimento de padrões.

            Em seguida, em oposição às informações que requer ação imediata (na ordem de milissegundos) para processamento de eventos em tempo real. Os melhores sistemas serão aqueles que combinam os diferentes modelos de processamento de dados para aproveitar os benefícios que cada um oferece.

            Crédito da imagem em destaque: Natã Romualdo; Pexels; Obrigada!

            Mark Munro

            Mark tem mais de 35 anos de experiência em TI como Engenheiro de Software, Consultor, Arquiteto Técnico e Arquiteto de Soluções para várias empresas de ferramentas e plataformas de desenvolvimento de 2 e 3 camadas cliente/servidor para SOA e plataformas Event Driven. Mark trabalhou para várias empresas de tecnologia da Digital Equipment Corp, Forté Software, AmberPoint e agora Vantiq. Mark tem ajudado clientes em muitas verticais a desenvolver, projetar, arquitetar aplicativos e sistemas altamente complexos e escaláveis. Mark está atualmente trabalhando como Gerente de Produto de Plataforma e Acelerador trabalhando com clientes, consultores, parceiros e engenharia para entender e ajudar a definir a direção do produto.

        Mostrar mais

        Artigos relacionados

        Deixe um comentário

        O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

        Botão Voltar ao topo