GH GambleHub

Mesaj brokerleri

1) Neden mesaj brokerleri

Komisyoncu üreticileri ve tüketicileri zamana/hıza/güvenilirliğe göre ayırır:
  • Tepe tamponlama ve yumuşatma, backprescher.
  • Ölçeklemeyi bağımsız olarak okuma/yazma.
  • Gözlemlenebilirlik ve olayların tekrarı.
  • Mimari desenler: olay odaklı, CQRS, olay kaynağı, giden kutusu/gelen kutusu.

2) Temel modeller ve terimler

2. 1 Kafka (günlük modeli)

Konu - taraflar (sipariş edilen günlükler) - tüketicilerden gelen ofsetler.
Tüketici Grubu: Paralellik, parti dengeleme okuyun.
Zamana/hacme göre tutma; Anahtar sıkıştırma.
Semantik: minimum - en az bir kez, ayarlarla - etkili bir şekilde tam bir kez (idempotent üreticiler + işlemler).
Sipariş: Parti içinde garanti edilir.

2. 2 NATS (konular, düşük gecikme süresi)

Hiyerarşi ve joker karakterler içeren konu (tema) ('foo. ',' foo. >`).
Modlar: pub/sub, kuyruk grupları (iş dağıtımı ile fan çıkışı), istek-cevap (hızlı RPC).
Çekirdek NATS - geçici, ultra düşük gecikme; JetStream - kalıcılık/tutma/tekrarlar.
Sipariş: en iyi çaba, güçlü bir küresel garanti yok; JetStream ile - akışta sipariş, ancak arıza durumunda nadir yeniden sıralama mümkündür.

3) Teslimat semantiği ve tutarlılık

SemantikKafkaNATS ÇekirdeğiNATS JetStream
En fazla bir kezNadir (genellikle gereksiz)varsayılan (onay yok)Yapabilir miyim
En az bir kezStandart (işlendikten sonra işlem ofset)ack politikası ilestandart (ack policy, redelivery)
Tam bir kez (etkili)idempotent üretici + işlemleri; idempotent lavabolarn/aTüketici düzeyinde (idempotency) elde edilen broker, Kafka'da olduğu gibi işlem vermez

İdempotans ve dedup, Kafka'da "tam olarak bir kez" olsa bile, uygulamanın/çürüğün sorumluluğundadır.

4) Sipariş, bölümleme ve anahtarlar

Kafka

Mesaj anahtarının seçimi partiyi belirler - güçlü yerel düzen.
Ключи: 'aggregate _ id', 'tenant _ id', 'order _ id'. Sıcak tuşlardan kaçının.
Denge: N taraf ≈ okuma paralellik düzeyi.

NATS

Core'da sıra grubu dengeyi sağlar.
JetStream Stream denekler tarafından karıştırılır; Düşük gecikmeyle geniş fan çıkışı/fanı üzerine vurgu.

5) Tutma, tekrarlama ve sıkıştırma

Kafka

Alıkoyma: 'alıkoyma. ms/bytes '.
Sıkıştırma: "son değeri anahtara göre" saklar (anlık görüntüler/önbellekler/sagalar için uygundur).
Replay: Herhangi bir tüketici ofsetleri "geri sarabilir".

JetStream

Akışlar: dosya/not arka uçları, zamana/bayta/mesaj sayısına göre depolama politikası.
Tüketiciler: çekme/itme, dayanıklı/geçici, konu öneklerine göre filtreleme.
Yeniden oynatma: yeniden teslim etme veya başlangıçtan/ofset benzeri (sıra) okuma.

6) İşlemler, giden kutusu ve tutarlılık

Kafka

Idempotent Producer ('etkinleştir. Idempotence = true '): kopyalara karşı koruma.
İşlemler: Birkaç partinin atomik kaydı + tüketici-ofsetleri işlemek - "delikler" olmadan okuma-süreç-yazma modeli.
İşlemsel Giden Kutusu (Transactional Outbox): Bir iş etkinliğinin kaydı ve bir veritabanı işleminde bir giden kutusu satırı, işçi Kafka'da yayınlar.

NATS

Kafka'da olduğu gibi "çapraz akış" işlemleri yoktur; Giden kutusu/gelen kutusu ve idempotent tüketiciler (anahtarlar, deadstore) kullanın.

7) RPC ve istek-yanıt

Kafka RPC için uygun değildir (yüksek yük, sipariş/cevaplar daha zordur). Eşzamansız komutlar/olaylar kullanın.
NATS: İstek-yanıt (milisaniye, korelasyon, zaman aşımları) için idealdir.

Örnek (Git, NATS request-reply):
go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) Operasyon ve topolojiler

8. 1 Kafka

Küme: brokerler + ZooKeeper (eski sürümlerden önce) veya KRaft (yeni meta veriler).

Çoğaltma - Bölge RF≥3, ISR/Denetleyiciler

Çok bölgeli: MirrorMaker 2/Cluster Bağlama; Varlık-borç/varlık-varlık çatışma politikaları ile.
Disk/ağ kapasitesi: 'throughput × retention × replicas' bölümünden okunabilir.

8. 2 NATS

Küme: birçok düğüm, süper küme (coğrafi dağılım), çevre birimleri/kenar için broşürler.
JetStream: akışların düğüm kümelerine göre yerleştirilmesi (yerleştirme), çoğaltma (R = 1.. 5).
WAN: tahmin edilebileceği gibi düşük gecikme süresi, kolay federasyon.

9) Güvenlik

Kafka

TLS (mTLS), SASL: SCRAM, OAuthBearer.
Konular/gruplar/işlemler hakkında ACL.
Şifreleme "dinlenme" (OS/diskler) + ağ politikaları.

NATS

Nkey/JWT kimlikleri, operatör hesapları, özne başına ACL.
Düğümler ve istemciler arasında mTLS.
Kiracı izolasyonu (hesaplar) + limitler.

10) Gözlemlenebilirlik ve performans ölçümleri

Kafka

Брокер: 'BytesIn/Out', 'RequestQueue', 'UnderReplicedPartitions', GC/FS istatistikleri.
Konu/bölüm: 'logEndOffset', tüketici gecikmesi (kritik).
Üretici/tüketici: retrai, 'toplu. Boyut ',' oyalanmak. ms ',' getir. min. bytes ', hatalar.
Araçlar: JMX, Cruise Control (yeniden dengeleme), Schema Registry.

NATS/JetStream

Sunucu: Conn/msgs/sn, RTT, CPU/mem, yavaş tüketici algılama.
JetStream: akış/tüketici başına - lag, redeliveries, acks, storage bytes.
İzleme: dahili uç nokta, nsc/adm-CLI, panolar.

11) Performans ve ayarlama

Kafka

Büyük butches ve 'oyalanmak. ms 'improve işlem hacmi ve sıkıştırma p99.
Sıkıştırma (lz4/zstd) ağ/disk tasarrufu sağlar.
Numara. tüketici/çekirdek sayısına göre bölümler, ancak havai değil.
Sürücüler: NVMe tercih edilir, 'noatime'ile XFS/EXT4.

NATS

Küçük mesajlar, birçok bağlantı normdur; Kuyruk gruplarını "geniş" tutun.
JetStream: 'max _ ack _ pending' ayarını yapın, çekme ve itme, partilerin boyutu.
Backpressure: 'FlowControl', 'IdleHeartbeat', sunucu tarafı sınırları.

12) Entegrasyon kalıpları

Giden Kutusu/Gelen Kutusu (hem Kafka hem de NATS'de).
SAGA: olay orkestrasyonu; 'saga _ id + step'ile büyükbaba.
Değişim Veri Yakalama (CDC): Debezium Kafka; NATS'de - "veritabanından yayıncı tetikleyicileri/günlükleri" deseni.
Akış işleme: Kafka Akışları/Flink/Spark; NATS'ta - üçüncü taraf işlemciler/özellikler, JetStream tüketicileri.
Ölü Harf Kuyruğu (DLQ) ve yeniden deneme politikaları (üstel geri alma + jitter).

13) Yapılandırma örnekleri

13. 1 Kafka: Konu ve Yapımcı Olmak

bash kafka-topics. sh --create --topic orders \
--partitions 12 --replication-factor 3 \
--config cleanup. policy=delete \
--config retention. ms=604800000 # 7d
properties producer. properties bootstrap. servers=broker:9092 acks=all enable. idempotence=true batch. size=65536 linger. ms=10 compression. type=zstd

13. 2 Kafka Akışları: idempotent işleme (eskiz)

java builder. <String, Order>stream("orders")
.groupByKey()
.aggregate(/... /)
.toStream()
.to("orders-agg");

13. 3 NATS JetStream: akış + tüketici (nats CLI)

bash nats stream add ORDERS --subjects "orders. " --retention limits \
--storage file --max-bytes 100GB --replicas 3 --discard old

nats consumer add ORDERS ORDERS-WORKERS --filter "orders. created" \
--deliver pull --ack explicit --max-deliver 6 --backoff "1s,5s,30s,2m"

13. 4 NATS İstek-Yanıt (Git)

go nc, _:= nats. Connect("tls://nats:4222", nats. Secure(tlsConf))
sub, _:= nc. QueueSubscribe("calc. sum", "workers", func(m nats. Msg) {
//... process...
m. Respond([]byte("42"))
})

14) Kafka vs NATS seçimi: Hızlı bir rehber

Yeniden oynatma, uzun süreli tutma, sıkıştırma, ağır akış süreçlerine ihtiyacımız var - Kafka.
Hızlı RPC, mikro gecikme, basit işlem, kenar/IoT ™ NATS (Çekirdek) ile fan çıkışı/fan girişi gerekir.
Kalıcılık + fan-out'a ihtiyacımız var, ancak ağır "günlük" platformu olmadan NATS JetStream.
Sıkı anahtar ve işlem emri - Kafka.

15) Kapasite planlaması (basitleştirilmiş)

Kafka

1. İşlem hacmi: 'Inbound _ MBps × RF × retention_days × 86400' diskler.
2. Gruplar: 'target _ concurrency' × stok 1. 5-2 ×.
3. Ağ: p99 + çoğaltma + üretici sıkıştırması.

NATS/JetStream

1. Mesajlar/sn ve ortalama - verim.
2. Replikalar × saklama - depolama.
3. Tüketici sınırları (ack-pending, redeliveries), serileştirme için CPU.

16) Güvenli çalışma: kontrol listesi

  • TLS/mTLS etkin, sırlar döndürüldü.
  • ACL/hesaplar/kotalar (kiracı başına).
  • Tüketiciler, DLQ ve jitter geri çekilmeleri üzerinde idempotency.
  • Lag/throughput/error monitoring; URP (Kafka), yeniden teslim fırtına (NATS) uyarıları.
  • Kapasite panoları: bölümler, depolama, p99.
  • Düğüm/bölge hatası testleri, oyun günleri, tekrar oynatma/geri doldurma.
  • Schema Registry/JSON Schema anahtarları belgelenmiştir.
  • Saklama/sıkıştırma/TTL politikaları uyumlulukla uyumludur.
  • Broker/istemci sürümleri düzenli olarak güncellenir; Tel protokolü uyumluluğu doğrulandı.

17) Anti-desenler

Sıcak anahtar (aynı kimliğin tüm olayları) - bir "kaynama" akışı. Shardy/arabellek.
Idempotency olmadan Retreats - çift etkileri.
Büyük mesajlar (MB-tens) - GC parçalanması/duraklamaları. Yükü nesnede sakla, bağlantı gönder.
Kafka'da RPC ve akışın karıştırılması - karmaşık bir yaşam döngüsü/sırası.
"Uzun vadeli DWH'olarak JetStream - etiket dışı; Nesne/sütun yataklarında uzun süre saklayın.
DLQ yok - "zehirli" mesajlar durmadan dönüyor.
Forgotten retention - diskler dolu, cluster stop.

18) SSS

S: Boru hattının sonunda "tam olarak bir kez" yapabilir miyim?
C: Pratikte - etkili bir şekilde evet: Kafka (idempotent üretici + işlemler) ve idempotent lavabolar (anahtar, uppert). NATS'de - uygulamada idempotence/dedup aracılığıyla.

S: Bir milyon küçük RPC/sn için ne seçilir?
A: NATS Core: Mikro gecikme, istek-cevap, hafif bağlantılar ve kuyruk grupları.

S: Sıkıştırmaya ve servet enstantanelerine mi ihtiyacınız var?
A: Kafka с temizliği. policy = compact ', key = aggregate/resource.

S: Gecikme ile nasıl başa çıkılır?
C: Parti/işçi sayısını artırın, işlem süresini azaltın, parti ve ön etch yapın, çölleşmeyi optimize edin, brokerleri/sürücüleri dikey olarak güçlendirin.

S: Çok bölgeli ve DR?
A: Kafka - MirrorMaker 2/Cluster Bağlama, RPO≈sekundy ile varlık-sorumluluk. NATS - süperküme/yaprak düğümleri; Bölgeye göre JetStream yansıtma/çoğaltma.

19) Toplam

Kafka ve NATS farklı modları kapatır: Kafka - dayanıklı olay günlükleri, yüksek verim, işlemsellik ve tekrar oynatma; NATS, düşük gecikme süresi, RPC ve basit fan çıkışı için JetStream ile dayanıklılık için ultra hafif bir veri yoludur. Teslimat semantiği, sipariş ve saklama, gecikme ve işletme maliyetleri arasından seçiminizi yapın. Tasarım anahtarları/partileri, saklama, DLQ ve gözlemlenebilirlik - ve etkinlik mimariniz öngörülebilir, ölçeklenebilir ve güvenilir olacaktır.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.