הקמת קלאסטר Apache Kafka ליישומי אינטרנט

יישום האינטרנט שלך גדל, ועיבוד אירועים סינכרוני מתחיל להאט את העסק שלך: השרתים עמוסים, והנתונים בסיכון בזמן תקלות. אנו מקימים קלאסטר Apache Kafka במפתח מלא—מבחירת המצב ועד לניטור, ומבטיחים תשתית אמינה וניתנת להרחבה. הצוות שלנו מטפל בכל המחזור, כך שאתה מקבל פתרון יציב עם תמיכה מתמשכת.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הקמת קלאסטר Apache Kafka ליישומי אינטרנט
מורכב
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

הגדרת אשכול Apache Kafka עבור יישום Web

דמיינו שיישום ה-Web שלכם מעבד אלפי הזמנות בדקה. כל אירוע — שליחת דוא"ל, עדכון אינדקס חיפוש, סנכרון נתונים — מתרחש באופן סינכרוני. השרתים נחנקים, זמן האחזור גדל, וכשלים גורמים לאובדן נתונים. Apache Kafka פותר בעיות אלה, אך הגדרת אשכול שגויה (למשל, broker יחיד עם replication factor = 1) מובילה לאסון. אחד הלקוחות שלנו — פלטפורמת מסחר אלקטרוני המטפלת ב-500,000 אירועים בשנייה — עבר ל-Kafka לאחר ש-RabbitMQ נכשל תחת עומס שיא.

Kafka הוא לוג מבוזר עם ערבויות סדר ושכפול. הוא מנתק שירותים, מספק לוג ביקורת, ומאפשר אנליטיקה בזמן אמת. אשכול production דורש הגדרה קפדנית: בחירת מצב, הגדרת broker, אבטחה וניטור. הצוות שלנו פרס למעלה מ-30 אשכולות לפרויקטים בעלי עומס גבוה — מפינטק ועד מסחר אלקטרוני. הגדרה נכונה יכולה להפחית עלויות תשתית בעד 40% בהשוואה לחלופות, עם החזר השקעה תוך שישה חודשים.

כיצד להגדיר אשכול Apache Kafka: KRaft או ZooKeeper?

לפרויקטים חדשים, השתמשו רק ב-KRaft (ללא ZooKeeper). מאז ש-KRaft הפך למוכן ל-production בגרסה 3.3, הוא מפשט את הארכיטקטורה, מפחית נקודות כשל, ומאיץ שחזור. ZooKeeper נשאר עבור הגדרות legacy, אך אנו לא ממליצים להתחיל איתו.

פרמטר KRaft ZooKeeper
רכיבים Kafka בלבד Kafka + ZooKeeper (3-5 צמתים)
פשטות קובץ בינארי יחיד, פחות הגדרות שני אשכולות, תיאום
שחזור מהיר יותר עם quorum פנימי תלוי ב-ZooKeeper
מדרגיות קלה יותר, ללא תלות חיצונית קשה יותר (ZooKeeper יכול להפוך לצוואר בקבוק)
מוכן ל-production מאז גרסה 3.3 (מומלץ הגרסה היציבה הנוכחית) יציב אך legacy

מקור: תיעוד רשמי של Kafka

התקנה והגדרה על Ubuntu

התקינו את הגרסה היציבה העדכנית ביותר, הגדירו את שירות systemd, ואתחלו את האחסון:

apt install -y openjdk-21-jdk-headless
KAFKA_VERSION=3.7.0
SCALA_VERSION=2.13
wget https://downloads.apache.org/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz
tar -xzf kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt/
ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka
useradd -r -s /bin/false kafka
chown -R kafka:kafka /opt/kafka
mkdir -p /var/log/kafka /data/kafka
chown kafka:kafka /var/log/kafka /data/kafka
cat > /etc/systemd/system/kafka.service << 'EOF'
[Unit]
Description=Apache Kafka
After=network.target

[Service]
Type=simple
User=kafka
Environment="KAFKA_HEAP_OPTS=-Xmx4g -Xms4g"
Environment="KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF
CLUSTER_UUID=$(kafka-storage.sh random-uuid)
kafka-storage.sh format -t $CLUSTER_UUID -c /opt/kafka/config/kraft/server.properties

כדי להתאים את ההגדרה לפרויקט שלכם, צרו קשר.

הגדרת KRaft על כל צומת (דוגמה לצומת 1; עבור צמתים 2 ו-3 שנו את apt install -y openjdk-21-jdk-headless KAFKA_VERSION=3.7.0 SCALA_VERSION=2.13 wget https://downloads.apache.org/kafka/${KAFKA_VERSION}/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz tar -xzf kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt/ ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka useradd -r -s /bin/false kafka chown -R kafka:kafka /opt/kafka mkdir -p /var/log/kafka /data/kafka chown kafka:kafka /var/log/kafka /data/kafka cat > /etc/systemd/system/kafka.service << 'EOF' [Unit] Description=Apache Kafka After=network.target [Service] Type=simple User=kafka Environment="KAFKA_HEAP_OPTS=-Xmx4g -Xms4g" Environment="KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true" ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties ExecStop=/opt/kafka/bin/kafka-server-stop.sh Restart=on-failure RestartSec=5 LimitNOFILE=65536 [Install] WantedBy=multi-user.target EOF CLUSTER_UUID=$(kafka-storage.sh random-uuid) kafka-storage.sh format -t $CLUSTER_UUID -c /opt/kafka/config/kraft/server.properties ו-node.id):

node.id=1
process.roles=broker,controller
controller.quorum.voters=1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
advertised.listeners=PLAINTEXT://kafka-1.internal:9092
inter.broker.listener.name=PLAINTEXT
controller.listener.names=CONTROLLER
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
log.dirs=/data/kafka
num.recovery.threads.per.data.dir=4
num.io.threads=16
num.network.threads=8
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
default.replication.factor=3
min.insync.replicas=2
num.partitions=6
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
compression.type=lz4

הגדרת TLS בין Brokers

ללא TLS, התעבורה מועברת בטקסט פשוט. להגנה, השתמשו ב-CA משלכם ובתעודות עבור כל broker. הוראות מפורטות ליצירת תעודות יסופקו כחלק מהפרויקט.

הוסיפו ל-advertised.listeners על כל broker:

listeners=PLAINTEXT://0.0.0.0:9092,SSL://0.0.0.0:9094,CONTROLLER://0.0.0.0:9093
ssl.keystore.location=/etc/kafka/ssl/kafka-1.keystore.jks
ssl.keystore.password=changeit
ssl.key.password=changeit
ssl.truststore.location=/etc/kafka/ssl/kafka.truststore.jks
ssl.truststore.password=changeit
ssl.client.auth=required
ssl.enabled.protocols=TLSv1.3,TLSv1.2

ניטור: מדדים והתראות מרכזיים

עקבו אחר מחיצות משוכפלות חלקית, פעילות controller, זמן אחזור p99 של יצרן/צרכן, ופיגור צרכן. השתמשו ב-JMX Exporter + Prometheus לאיסוף, וב-Grafana להדמיה. דוגמה להגדרת JMX Exporter:

---
startDelaySeconds: 0
hostPort: 127.0.0.1:9999
lowercaseOutputName: true
rules:
  - pattern: kafka.server<type=BrokerTopicMetrics, name=MessagesInPerSec><>OneMinuteRate
    name: kafka_server_broker_topic_messages_in_per_sec
  - pattern: kafka.server<type=ReplicaManager, name=UnderReplicatedPartitions><>Value
    name: kafka_server_under_replicated_partitions
  - pattern: kafka.controller<type=KafkaController, name=ActiveControllerCount><>Value
    name: kafka_controller_active_count
  - pattern: kafka.network<type=RequestMetrics, name=TotalTimeMs, request=Produce><>99thPercentile
    name: kafka_network_produce_total_time_ms_p99
---

התראות מרכזיות: node.id=1 process.roles=broker,controller controller.quorum.voters=1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093 listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 advertised.listeners=PLAINTEXT://kafka-1.internal:9092 inter.broker.listener.name=PLAINTEXT controller.listener.names=CONTROLLER listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT log.dirs=/data/kafka num.recovery.threads.per.data.dir=4 num.io.threads=16 num.network.threads=8 socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 default.replication.factor=3 min.insync.replicas=2 num.partitions=6 offsets.topic.replication.factor=3 transaction.state.log.replication.factor=3 transaction.state.log.min.isr=2 log.retention.hours=168 log.segment.bytes=1073741824 log.retention.check.interval.ms=300000 compression.type=lz4 , server.properties, פיגור צרכן מעל סף. צרו קשר כדי ליישם ניטור ולקבל לוחות מחוונים מוכנים לעומס שלכם.

כיצד להבטיח סובלנות לתקלות?

  1. צרו topic לבדיקה עם replication factor 3.
  2. כבו broker אחד וודאו שיצרנים לא מאבדים נתונים (עם acks=all ו-min.insync.replicas=2).
  3. החזירו את ה-broker וודאו שהעותקים מסונכרנים.
  4. בדקו פיגור צרכן — הוא אמור לחזור לאפס.
  5. חזרו על התהליך עבור כל broker.
kafka-topics.sh --bootstrap-server kafka-1:9092 --create --topic test-topic --partitions 6 --replication-factor 3
kafka-producer-perf-test.sh --topic test-topic --num-records 1000000 --record-size 1024 --throughput -1 --producer-props bootstrap.servers=kafka-1:9092,kafka-2:9092,kafka-3:9092 acks=all compression.type=lz4
kafka-consumer-perf-test.sh --bootstrap-server kafka-1:9092 --topic test-topic --messages 1000000 --group perf-test-group

אנו מבטיחים SLA 99.99% עבור האשכול שלכם. הזמינו פריסה — צרו קשר לייעוץ. קבלו הערכת עלות וזמנים ראשונית.

תהליך ולוחות זמנים

שלב משך
ניתוח דרישות ועיצוב ארכיטקטורה 1-2 ימים
התקנה והגדרה (3 צמתים) 2-3 ימים
הגדרת TLS ואבטחה יום אחד
שילוב ניטור (Prometheus + Grafana) יום אחד
בדיקות סובלנות לתקלות ועומס 1-2 ימים
תיעוד והדרכת צוות יום אחד

סה"כ: 5-7 ימי עבודה עבור אשכול בסיסי. העלות מחושבת באופן אישי.

מה כלול

  • עיצוב ארכיטקטורת אשכול (תפקידים, מחיצות, שכפול)
  • התקנה והגדרה במצב KRaft
  • הגדרת TLS בין brokers ולקוחות
  • יישום ניטור (JMX Exporter + Prometheus + Grafana)
  • יצירת topics ל-production עם פרמטרים אופטימליים
  • בדיקות עומס ואימות סובלנות לתקלות
  • תיעוד (דיאגרמת אשכול, הוראות, runbook)
  • הדרכת צוות (ניהול בסיסי, שימוש ב-CLI)
  • תמיכה טכנית למשך שבועיים לאחר ההשקה

תוצאות וערבויות

יותר מ-30 אשכולות פרוסים עם עומסים של עד מיליון הודעות בשנייה. הפחתת עלויות תשתית ממוצעת — 35%. זמן החזר השקעה — עד 6 חודשים. צרו קשר עם המהנדסים שלנו — נעזור להגדיר אשכול לעומס שלכם.