Skip to content

Node.js Kafka 高级 — 集群

搭建 Kafka 集群

拷贝多份 Kafka 目录,修改各自 server.properties

配置Broker 1Broker 2Broker 3
broker.id123
listenersPLAINTEXT://:9092PLAINTEXT://:9093PLAINTEXT://:9094
log.dirs/tmp/kafka-logs-1/tmp/kafka-logs-2/tmp/kafka-logs-3

相同 zookeeper.connect,分别启动:

bash
bin/kafka-server-start.sh config/server.properties

Node.js 连接集群

js
const kafka = new Kafka({
  brokers: ['localhost:9092', 'localhost:9093', 'localhost:9094']
})

创建副本主题

js
await admin.createTopics({
  topics: [{
    topic: 'critical-topic',
    numPartitions: 3,
    replicationFactor: 3   // 3 副本
  }]
})

集群架构

  ┌─────────────────────────────┐
  │       Zookeeper             │
  │  (集群协调 / 元数据管理)        │
  └─────────────────────────────┘

  ┌──────────┬──────────┬──────────┐
  │ Broker 1 │ Broker 2 │ Broker 3 │
  │ 9092     │ 9093     │ 9094     │
  │ Leader   │ Follower │ Follower │
  └──────────┴──────────┴──────────┘
       ↓ (Producer)
       ↓ (Consumer Group)

一个 Partition 有 1 个 Leader(负责读写)和多个 Follower(仅同步备份)。