Participe da Maratona Behind the Code! Prêmios e desafios incríveis te esperam, não perca! Inscreva-se aqui

Implemente funções sem servidor que respondem a mensagens e processam fluxos

Resumo

Em muitos aplicativos nativos da nuvem modernos, dados gerados em grandes volumes são usados para ligar serviços altamente distribuídos. O Apache Kafka é um sistema para streaming de mensagens em escala, mas os sistemas que recebem as mensagens precisam processar e responder a registros individuais também.

Com uma arquitetura de eventos criada no OpenWhisk, você pode criar funções que respondem a mensagens de filas e executam lógica para processar ou enviar dados a outros sistemas em uma arquitetura distribuída. E você paga apenas pelos recursos consumidos pelas funções de análise de dados durante as frações de segundos em que elas operam. Com essa abordagem, você tem a combinação perfeita entre o processamento de transações e o uso de recursos da nuvem.

A abordagem é a promessa de uma arquitetura sem servidor conduzida por eventos para novos aplicativos nativos da nuvem, como aqueles que suportam o processamento de um alto volume de mensagens em fluxo. Você pode começar a processar as mensagens em escala, sem se preocupar se você terá servidores suficientes para gerenciar o volume.

Descrição

Este padrão de código é um exemplo de como implementar uma arquitetura de referência com o Cloud Functions para executar código em resposta a mensagens ou para lidar com fluxos de registros de dados. O código não é executado até que as mensagens cheguem por meio do serviço Event Streams (desenvolvido com o Apache Kafka). Quando isso acontece, são iniciadas instâncias de função que são dimensionadas automaticamente de acordo com a carga necessária, para processar o fluxo de mensagens.

Você implementa a arquitetura de referência por meio da interface com o usuário do Cloud Functions ou de ferramentas da linha de comando no seu próprio sistema.

Se você ainda não o fez, crie uma conta do IBM Cloud e acesse o painel do Cloud Functions para explorar outros modelos de arquitetura de referência e fazer download de ferramentas da linha de comando, se necessário.

Os seguintes componentes são usados neste padrão de código:

O aplicativo implementa dois IBM Cloud Functions (baseados no Apache OpenWhisk) que leem e gravam mensagens no IBM Event Streams (baseado no Apache Kafka). Vamos demonstrar como trabalhar com os serviços de dados e como executar lógica em resposta a eventos de mensagem.

Uma função, ou ação, é acionada por fluxos de mensagens de um ou mais registros de dados. Os registros são encaminhados a outra ação em uma sequência (uma forma de vincular as ações em uma cadeia de forma declarativa). A segunda ação agrega a mensagem e publica uma mensagem resumida transformada em outro tópico.

Ao usar este padrão de código, você aprende as seguintes habilidades:

  • Computação sem servidor: Implemente uma arquitetura de referência com o Cloud Functions para executar código em resposta a mensagens.
  • Kafka: Trabalhe com serviços de dados e execute lógica em resposta a eventos de mensagem.

Fluxo

fluxo

  1. O desenvolvedor simula a publicação de um aplicativo por um cliente e insere uma nova matriz de objetos JSON no tópico do Apache Kafka.
  2. A mensagem aciona um evento chamado acionador, que monitora as mensagens enviadas ao tópico.
  3. O acionador é associado à primeira ação por uma regra, que faz download da matriz de mensagens e a analisa.
  4. A matriz de mensagens é enviada a outra ação em uma sequência para agregar, ou reduzir, os dados a uma única mensagem.
  5. A ação nova publica a nova mensagem em outra fila do Event Streams para que outro aplicativo processe.

Instruções

Consulte as instruções técnicas detalhadas do padrão de código no arquivo README no repositório do GitHub.

  1. Implemente por meio da interface com o usuário do Cloud Functions.
  2. Implemente usando a ferramenta de linha de comando wskdeploy.
  3. Use métodos alternativos de implementação