Com as arquiteturas tradicionais de Chamada de Procedimento Remoto (RPC), existe um desafio central: produtores e consumidores devem se alinhar em escala e em tempo. Se seus produtores enviarem muitos dados para seus consumidores lidarem ou se seus consumidores ou serviços downstream ficarem indisponíveis, os eventos são descartados. Esse problema é agravado com vários consumidores que precisam processar os dados de forma independente. Por exemplo, um backend de comércio eletrônico pode emitir eventos quando as transações são concluídas, que precisam ser lidos por um sistema de análise e um serviço de detecção de fraude. Podemos resolver isso desacoplando nossos produtores e consumidores — inserindo um serviço no meio que absorve as gravações enquanto permite que leitores independentes consumam em seu próprio ritmo.
Hoje estamos lançando Cloudflare K2 em beta público para resolver esse problema. K2 é uma primitiva de fluxo de eventos durável na Plataforma de Desenvolvedores. Você envia eventos para um fluxo K2, que os armazena como um log ordenado. Os consumidores podem lê-los de várias maneiras, por exemplo, dividindo as leituras entre um conjunto de consumidores ou entregando todas as mensagens a todos os consumidores. É totalmente sem servidor, escala para grandes quantidades de dados e suporta retenção de longo prazo, para que mesmo longos períodos de inatividade do consumidor não percam dados.
Sob o capô, o K2 implementa um log durável particionado sobre o armazenamento de objetos R2, o que permite escalar para enormes volumes de armazenamento. Se você estiver pronto para começar, pode criar seu primeiro fluxo em segundos seguindo o guia aqui. Construímos o K2 primeiro porque precisávamos de um buffer durável na borda, inicialmente para servir como camada de ingestão para o Basin Pipelines. Nossa arquitetura única significa que muitas vezes não podemos executar software de sistemas distribuídos tradicionais como Apache Kafka, e precisamos repensar como esses sistemas são construídos e operados.
Ao projetar o sistema de buffer durável que se tornou K2, decidimos confiar na poderosa primitiva de estado que já temos: R2. Sistemas de armazenamento de objetos como R2 combinam armazenamento extremamente durável (11 noves!) com APIs fortemente consistentes. Um benefício secundário é que ele separa computação e armazenamento, o que significa que cada um pode ser dimensionado independentemente. Isso nos permite armazenar grandes quantidades de dados históricos a baixo custo.
Fonte: Hacker News · Resumido por HeadlinesBriefing