本站总访问量 kafka数据库搭建 - Jerry的小站

Jerry Gao

上帝就是真理,真理就是上帝

Kafka 不是一个传统的关系型数据库,而是一个分布式的流式事件流平台。它由Apache软件基金会开发,用于构建实时数据流应用程序和数据管道。以下是 Kafka 的一些主要特性和概念:

  1. 发布-订阅模型: Kafka采用了发布-订阅模型,其中数据生产者(发布者)将消息发送到主题(Topic),而数据消费者(订阅者)从主题中读取消息。

  2. 分布式系统: Kafka是一个分布式系统,可以横向扩展以处理大规模数据。它可以在多个节点上分布数据,提供高可用性和容错性。

  3. 主题(Topic): 主题是消息的逻辑容器,生产者将消息发布到主题,而消费者从主题中读取消息。主题可以分为多个分区,每个分区都是一个有序的消息队列。

  4. 分区(Partition): 主题可以分为多个分区,每个分区是一个独立的消息队列。分区允许水平扩展,提高并发性和吞吐量。

  5. 生产者(Producer): 生产者是将消息发布到 Kafka 主题的应用程序。生产者负责将消息发送到特定的主题和分区。

  6. 消费者(Consumer): 消费者是从 Kafka 主题中读取消息的应用程序。消费者可以以不同的方式订阅主题,例如从头开始消费或从特定的偏移量开始。

  7. 偏移量(Offset): 每个分区中的消息都有一个唯一的偏移量,表示消息在分区中的位置。消费者通过偏移量来跟踪已经消费的消息位置。

  8. 持久性: Kafka 提供持久性存储,确保消息在发布后可靠地保存,即使消费者尚未消费。

  9. 水平扩展: Kafka可以通过添加更多的代理节点来实现水平扩展,以处理更大的负载和提高性能。

  10. 流处理: Kafka支持实时流处理,允许开发者构建复杂的实时数据流应用程序。

总体而言,Kafka被设计用于高吞吐量、可扩展性和容错性,并广泛用于构建实时数据管道、事件驱动的微服务架构和大数据处理系统。

helm && kubernetes 部署

1
2
3
4
5
6
7
helm install kafka-colony bitnami/kafka \
--set zookeeper.enabled=true --set "externalAccess.service.loadBalancerIPs[0]"="34.96.213.48" --set "externalAccess.service.loadBalancerIPs[1]"="34.149.99.8" --set "externalAccess.service.loadBalancerIPs[2]"="34.111.31.218" \
--set kraft.enabled=false \
--set replicaCount=3 --set externalAccess.enabled=true --set externalAccess.controller.forceExpose=true \
--set externalZookeeper.servers=zookeeper.stable-db.svc.cluster.local \
-n stable-db \
--version=22.1.2

docker-compose 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
version: "3"
services:
zookeeper:
image: 'bitnami/zookeeper:latest'
ports:
- '2181:2181'
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
deploy:
resources:
reservations:
cpus: "1"
memory: 1G
limits:
cpus: "1"
memory: 1G
kafka:
image: 'bitnami/kafka:3.3.2-debian-11-r183'
ports:
- "9092:9092"
- "29092:29092"
deploy:
resources:
reservations:
cpus: "1"
memory: 1G
limits:
cpus: "1"
memory: 1G
volumes:
- /data/kafka:/bitnami/kafka
- /log/kafka:/opt/bitnami/kafka/logs
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ADVERTISED_HOST=localhost
healthcheck:
test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --list"]
interval: 5s
retries: 10
depends_on:
- zookeeper

评论