رویدادها، ماندگار و قابل بازخوانی
Kafka برای جریان پیوستهی رویداد ساخته شده است: لاگ تغییرات، کلیکاستریم، دادهی سنسور و ارتباط سرویسها در معماری رویدادمحور. پیامها پس از مصرف حذف نمیشوند و هر consumer group از جای خودش میخواند.
اتصال با SASL/PLAIN احراز هویت میشود. میزبان، نام کاربری و رمز را از sakoocloud db credentials بردارید و به اپ بدهید؛ کلاینتهایی مثل kafkajs، confluent-kafka و franz-go با همین سه مقدار وصل میشوند.
مناسب برای
- معماری رویدادمحور
- پایپلاین داده و ETL
- لاگ تغییرات و audit
- کلیکاستریم و تحلیل بلادرنگ
از ساخت تا اتصال
ساخت
نسخه را انتخاب کنید.
--type kafka --version 4.3.0اطلاعات اتصال
میزبان، نام کاربری و رمز SASL را بگیرید.
db credentialsتعریف متغیرها
مقدارها را بهصورت متغیر محیطی به اپ بدهید.
env set KAFKA_HOST=…
خروجی ساخت سرویس
sakoocloud db create --name events --type kafka --version 4.3.0 ✔ Provisioning events · db_4n8x2p sakoocloud db credentials db_4n8x2p sakoocloud env set KAFKA_HOST=… KAFKA_USER=… KAFKA_PASSWORD=•••• --app my-api
ساخت کلاستر
با CLI یا از کنسول.
sakoocloud db create --name events --type kafka --version 4.3.0
تنظیمات
متغیرهایی که تعریف میکنید
اپ و سرویس را در یک پروژه بگذارید، مقدارها را از sakoocloud db credentials بردارید و با sakoocloud env set تعریف کنید. نام متغیرها دلخواه است.
| متغیر پیشنهادی | مقدار |
|---|---|
KAFKA_HOST | آدرس broker (پورت 9092) |
KAFKA_USER | نام کاربری SASL |
KAFKA_PASSWORD | رمز SASL |
اتصال از اپ
میزبان و اطلاعات SASL را از متغیرها بخوانید.
import { Kafka } from "kafkajs";
const kafka = new Kafka({
brokers: [`${process.env.KAFKA_HOST}:9092`],
sasl: {
mechanism: "plain",
username: process.env.KAFKA_USER,
password: process.env.KAFKA_PASSWORD,
},
});
import os
from confluent_kafka import Producer
p = Producer({
"bootstrap.servers": os.environ["KAFKA_HOST"] + ":9092",
"security.protocol": "SASL_PLAINTEXT",
"sasl.mechanism": "PLAIN",
"sasl.username": os.environ["KAFKA_USER"],
"sasl.password": os.environ["KAFKA_PASSWORD"],
})
خطاهای رایج
خطای احراز هویت SASL
علتمکانیزم یا اطلاعات ورود اشتباه است.
راهحلمکانیزم را PLAIN بگذارید و نام کاربری و رمز را دوباره از sakoocloud db credentials بردارید.
Topic not found
علتتاپیک هنوز ساخته نشده است.
راهحلتاپیک را با ابزار ادمین کلاینت یا از کد بسازید.
broker با کمبود حافظه متوقف میشود
علتحجم پیام یا تعداد پارتیشن از منابع انتخابی بیشتر است.
راهحلبا sakoocloud db resize حافظه را افزایش دهید.
پرسشهای متداول
ZooKeeper لازم است؟
نه. Kafka 4 با KRaft اجرا میشود و ZooKeeper ندارد.
پیامها تا کی نگهداری میشوند؟
طبق retention هر تاپیک که خودتان تنظیم میکنید؛ داده روی دیسک ماندگار است.
Kafka Connect و Schema Registry دارید؟
این سرویس خود broker است. ابزارهای جانبی را میتوانید بهعنوان اپ Docker کنارش اجرا کنید.
جزئیات بیشتر در راهنمای Kafka در مستندات و مرجع CLI.