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:
- IBM Cloud Functions (desenvolvido com Apache OpenWhisk)
- IBM Event Streams (desenvolvido com Apache Kafka)
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
- 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.
- A mensagem aciona um evento chamado acionador, que monitora as mensagens enviadas ao tópico.
- O acionador é associado à primeira ação por uma regra, que faz download da matriz de mensagens e a analisa.
- A matriz de mensagens é enviada a outra ação em uma sequência para agregar, ou reduzir, os dados a uma única mensagem.
- 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.
- Implemente por meio da interface com o usuário do Cloud Functions.
- Implemente usando a ferramenta de linha de comando wskdeploy.
- Use métodos alternativos de implementação