Plataforma empresarial baseada em Apache Kafka com ferramentas adicionais para streaming
Confluent Platform é uma distribuição empresarial completa do Apache Kafka, desenvolvida pelos criadores originais do Kafka. A plataforma inclui o Apache Kafka junto com ferramentas adicionais proprietárias e open-source que facilitam a construção, monitoramento e gerenciamento de aplicações de streaming em tempo real.
Fundada em 2014 pelos criadores originais do Apache Kafka no LinkedIn, a Confluent oferece tanto uma versão Community (gratuita) quanto versões Enterprise e Cloud (pagas) com recursos avançados de segurança, monitoramento e gerenciamento.
A Confluent foi fundada em 2014 por Jay Kreps, Neha Narkhede e Jun Rao, os engenheiros originais que criaram o Apache Kafka no LinkedIn. A empresa foi criada com o objetivo de tornar o streaming de dados mais acessível e confiável para empresas de todos os tamanhos.
Desde então, a Confluent se tornou líder no mercado de streaming de dados, oferecendo tanto soluções on-premises quanto cloud-native, e sendo adotada por milhares de empresas globalmente.
A Confluent Platform é construída sobre o Apache Kafka e adiciona componentes essenciais:
Gerenciamento centralizado de schemas com versionamento e compatibilidade
Interface web para monitoramento, alertas e gerenciamento de clusters
Framework robusto com conectores para integração com sistemas externos
Banco de dados de streaming para processamento em tempo real com SQL
Interface REST para produção e consumo de mensagens via HTTP
Replicação de dados entre clusters Kafka para disaster recovery
Versão Atual | 7.5.0 |
Kafka Version | 3.6.0 |
Linguagens Suportadas | Java, Scala, Python, Go, .NET, Node.js |
Protocolos | Kafka Protocol, HTTP/REST, MQTT |
Formatos de Serialização | Avro, JSON, Protobuf, String |
Deployment | On-premises, Cloud, Kubernetes |
Serviço centralizado para gerenciar schemas Avro, JSON Schema e Protobuf. Fornece versionamento, evolução de schema e verificação de compatibilidade.
Banco de dados de streaming que permite processamento de dados em tempo real usando SQL familiar.
Interface web para monitoramento, gerenciamento e troubleshooting de clusters Kafka.
Conectar sistemas legados e modernos através de streaming de dados com Schema Registry para governança.
Processamento de eventos em tempo real usando ksqlDB para dashboards e alertas instantâneos.
Implementação de arquiteturas event-driven com versionamento de schemas e auditoria completa.
Comunicação assíncrona entre microserviços com garantias de entrega e monitoramento centralizado.
Migração de ETL batch para streaming ETL com Kafka Connect e processamento contínuo.
Detecção de fraudes em tempo real processando transações com ksqlDB e machine learning.
# Download Confluent Platform
curl -O http://packages.confluent.io/archive/7.5/confluent-7.5.0.tar.gz
tar -xzf confluent-7.5.0.tar.gz
cd confluent-7.5.0
# Iniciar todos os serviços
bin/confluent local services start
# Ou iniciar serviços individuais
bin/confluent local services kafka start
bin/confluent local services schema-registry start
bin/confluent local services ksql-server start
bin/confluent local services control-center start
# schema-registry.properties
listeners=http://0.0.0.0:8081
kafkastore.bootstrap.servers=localhost:9092
kafkastore.topic=_schemas
debug=false
# Registrar schema via API
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
--data '{"schema": "{\"type\":\"record\",\"name\":\"User\",\"fields\":[{\"name\":\"id\",\"type\":\"int\"},{\"name\":\"name\",\"type\":\"string\"}]}"}' \
http://localhost:8081/subjects/user-value/versions
-- Criar stream a partir de tópico Kafka
CREATE STREAM user_events (
user_id INT,
event_type STRING,
timestamp BIGINT
) WITH (
KAFKA_TOPIC='user-events',
VALUE_FORMAT='JSON'
);
-- Criar table agregada
CREATE TABLE user_event_counts AS
SELECT
user_id,
COUNT(*) as event_count,
COLLECT_LIST(event_type) as event_types
FROM user_events
WINDOW TUMBLING (SIZE 1 HOUR)
GROUP BY user_id;
-- Query contínua
SELECT * FROM user_event_counts
WHERE event_count > 100;
{
"name": "jdbc-source-connector",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url": "jdbc:postgresql://localhost:5432/mydb",
"connection.user": "postgres",
"connection.password": "password",
"table.whitelist": "users,orders",
"mode": "incrementing",
"incrementing.column.name": "id",
"topic.prefix": "postgres-",
"key.converter": "io.confluent.connect.avro.AvroConverter",
"key.converter.schema.registry.url": "http://localhost:8081",
"value.converter": "io.confluent.connect.avro.AvroConverter",
"value.converter.schema.registry.url": "http://localhost:8081"
}
}
import io.confluent.kafka.serializers.KafkaAvroSerializer;
import org.apache.kafka.clients.producer.*;
import org.apache.avro.generic.GenericRecord;
import org.apache.avro.generic.GenericData;
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", KafkaAvroSerializer.class);
props.put("value.serializer", KafkaAvroSerializer.class);
props.put("schema.registry.url", "http://localhost:8081");
Producer producer = new KafkaProducer<>(props);
// Criar record Avro
GenericRecord user = new GenericData.Record(userSchema);
user.put("id", 123);
user.put("name", "John Doe");
ProducerRecord record =
new ProducerRecord<>("users", "user-123", user);
producer.send(record, (metadata, exception) -> {
if (exception != null) {
exception.printStackTrace();
} else {
System.out.println("Message sent to " + metadata.topic() +
" partition " + metadata.partition() +
" offset " + metadata.offset());
}
});
producer.close();
# Gerenciar serviços Confluent
confluent local services start
confluent local services stop
confluent local services status
# Schema Registry CLI
kafka-avro-console-producer --broker-list localhost:9092 \
--topic users --property schema.registry.url=http://localhost:8081 \
--property value.schema.id=1
# ksqlDB CLI
ksql http://localhost:8088
# Control Center
# Acesse http://localhost:9021
# Kafka Connect
curl -X GET http://localhost:8083/connectors
curl -X POST -H "Content-Type: application/json" \
--data @connector-config.json \
http://localhost:8083/connectors
Aspecto | Apache Kafka | Confluent Platform |
---|---|---|
Licença | Apache 2.0 | Community + Commercial |
Schema Management | Não incluído | Schema Registry |
Monitoramento | JMX básico | Control Center |
Stream Processing | Kafka Streams | ksqlDB + Kafka Streams |
Conectores | Kafka Connect | 200+ Conectores |
Suporte | Comunidade | Comercial 24/7 |
Plataforma | Throughput | Facilidade de Uso | Ecossistema | Custo |
---|---|---|---|---|
Confluent Platform | Muito Alto | Excelente | Rico | Alto |
Apache Pulsar | Alto | Boa | Crescendo | Baixo |
Amazon Kinesis | Moderado | Excelente | AWS Only | Moderado |
Google Pub/Sub | Alto | Excelente | GCP Only | Moderado |