GH GambleHub

Брокерҳои паём

1) Чаро брокерҳои паём

Брокер истеҳсолкунандагон ва истеъмолкунандагонро аз рӯи вақт/суръат/эътимоднокӣ мекушояд:
  • Буферкунии қулла ва ҳамворкунӣ, backprescher.
  • Мустақилона миқёсро хонед/нависед.
  • Мушоҳида ва такрори рӯйдодҳо.
  • Намунаҳои меъморӣ: рӯйдодҳо, CQRS, сарчашмаи чорабиниҳо, қуттиҳо/паёмдонҳо.

2) Моделҳо ва истилоҳҳои асосӣ

2. 1 Кафка (модели журнал)

Мавзӯъ → ҳизбҳо (гузоришҳои фармоишӣ) → ҷуброн аз истеъмолкунандагон.
Гурӯҳи истеъмолкунандагон: Параллелизмро хонед, мувозинати ҳизбҳоро.
Нигоҳдорӣ аз рӯи вақт/ҳаҷм; фишурдани калидҳо.
Семантика: ҳадди аққал - ҳадди аққал як маротиба, бо танзимот - ба таври муассир як маротиба (истеҳсолкунандагони idempotent + транзаксияҳо).
Фармоиш: Дар дохили ҳизб кафолат дода мешавад.

2. 2 NATS (фанҳо, таъхири кам)

Мавзӯъ (мавзӯъ) бо зинанизом ва ваҳшӣ ('foo. ',' foo. >`).
Модулҳо: паб/зер, гурӯҳҳои навбатӣ (фанат бо тақсимоти кор), дархост-ҷавоб (RPC зуд).
NATS-и аслӣ - таъхири эфемералӣ, ниҳоят паст; JETStream - истодагарӣ/нигоҳдорӣ/такрорӣ.
Фармоиш: саъю кӯшиши зиёд, кафолати қавии ҷаҳонӣ; бо Jet ​ ​ Stream - фармоиш дар ҷараён, аммо фармоиши нодир дар сурати нокомӣ имконпазир аст.

3) Семантика ва пайдарҳамии таҳвил

СемантикаКафкаNATS CoreNATS Jetstream
At-аксар-якнодир (одатан нолозим)пешфарз (бе тасдиқ)Метавонам
Ақаллан-як борстандарт (пас аз коркард ҷуброн карда мешавад)бо сиёсати ackстандарт (сиёсати ack, redelivery)
Маҳз як маротиба (самаранок)истеҳсолкунандаи idempotent + муомилот; дастгоҳҳои idempotentн/адар сатҳи истеъмолкунандагон ба даст оварда шудааст (idempotency), брокер мисли Кафка муомилот намекунад

Idempotence ва dedup масъулияти татбиқ/кӯфта мебошанд, ҳатто вақте ки "маҳз як маротиба" дар Кафка.

4) Фармоиш, тақсимот ва калидҳо

Кафка

Интихоби калиди паём ҳизб § тартиботи қавии маҳаллиро муайян мекунад.
Ключи: 'агрегат _ ид', 'иҷорагир _ ид', 'фармоиш _ ид'. Аз калидҳои гарм худдорӣ намоед.
Мувозинат: Тарафҳои N ≈ сатҳи мутолиаи параллелизм.

NATS

Дар Core, гурӯҳи навбатӣ мувозинатро иҷро мекунад.
JET Stream аз ҷониби субъектҳо иваз карда мешавад; таъкид ба мухлиси васеъ/мухлиси бо таъхири кам.

5) Нигоҳдорӣ, такрорӣ ва фишурдасозӣ

Кафка

Нигоҳ доштан: 'нигоҳ доштан. мс/байт '.
Фишурдасозӣ: "арзиши охиринро аз рӯи калид" нигоҳ медорад (барои лаҳзаҳо/кэшҳо/сагҳо мувофиқ аст).
Такрори: Ҳар як фурӯшанда метавонад ҷубронро "баргардонад".

Ҷетстрим

Ҷараёнҳо: пушти файл/ёддошт, сиёсати нигаҳдорӣ аз рӯи вақт/байт/шумораи паёмҳо.
Истеъмолкунандагон: кашидан/тела додан, пойдор/эфемералӣ, филтр бо префикси мавзӯъ.
Бозсозӣ: бозсозӣ ё хондан аз ибтидо/офсет-монанд (пайдарпаӣ).

6) Амалиётҳо, қуттиҳо ва пайдарҳамӣ

Кафка

Истеҳсолкунандаи Idempotent ('фаъол кардан. idempotence = true '): муҳофизат аз нусхаҳо.
Амалиётҳо: сабти атомии якчанд маҷмӯа + ба истеъмолкунандагон-ҷубронпулӣ ва шакли хондан-раванд-навиштан бидуни "сӯрохиҳо".
Outbox Transactional: сабти як чорабинии тиҷорӣ ва як хати тасвирӣ дар як транзаксияи пойгоҳи додаҳо, коргар дар Кафка нашр мекунад.

NATS

Мисли Кафка ягон амалиёти "фаромарзӣ" вуҷуд надорад; аз қуттиҳои берунӣ/паёмдони қуттӣ ва истеъмолкунандагони бесифат (калидҳо, дӯконҳо) истифода баред.

7) RPC ва дархост-посух

Кафка барои RPC нороҳат аст (сарбории баланд, фармоиш/ҷавобҳо мушкилтаранд). Фармонҳо/рӯйдодҳои асинхрониро истифода баред.
NATS: беҳтарин барои дархост-ҷавоб (миллисекундҳо, коррелятсия, танаффус).

Мисол (Гузаштан, дархости NATS):
go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) Амалиёт ва топологияҳо

8. 1 Кафка

Кластер: брокерҳо + Zoo-Keeper (пеш аз версияҳои кӯҳна) ё KR 'aft (метамаълумоти нав).

Нусхабардорӣ - Минтақаи RF ≥ 3, ISR/Controllers

Бисёр минтақа: Пайвастшавӣ Mirror 2/Cluster Maker; дороиҳо-масъулият/дороиҳо-дороиҳо бо сиёсати муноқишавӣ.
Иқтидори диск/шабака: аз "нигоҳ доштан нусхабардорӣ" хонед.

8. 2 NATS

Кластер: бисёр гиреҳҳо, супер-кластер (гео-тақсимот), баргҳо барои периферия/канор.
JET Stream: ҷойгиркунии ҷараёнҳо аз рӯи маҷмӯи гиреҳҳо (ҷойгиркунӣ), нусхабардорӣ (R = 1.. 5).
WAN: таъхири пешгӯишаванда паст, федератсияи осон.

9) Бехатарӣ

Кафка

TLS (m

ACL дар мавзӯъҳо/гурӯҳҳо/амалиётҳо.
Рамзгузорӣ "дар истироҳат" (OS/disks) + сиёсати шабака.

NATS

шахсиятҳои nkey/JWT, оператор-ҳисобҳо, ҳар як мавзӯи ACL.
MTLS байни гиреҳҳо ва мизоҷон.
Ҷудокунии иҷорагир (ҳисобҳо) + маҳдудиятҳо.

10) Нишондиҳандаҳои мушоҳида ва иҷро

Кафка

Брокер: 'Байтес/Дар/берун', 'Дархост кардан', 'Статистикаи зери нусхабардорӣ', GC/FS.

Мавзӯъ/қисм: 'log

Истеҳсолкунанда/истеъмолкунанда: ретрай, 'партия. андозаи ',' дароз. хонум ',' овардан. мин. байт ', хатогиҳо.
Воситаҳо: JMX, Назорати Круз (дубора тавозун), Феҳристи схема.

NATS/Jetstream

Сервер: conn/msgs/sec, RTT, CPU/mem, муайянкунии сусти истеъмолкунандагон.
JETStream: дар як ҷараён/истеъмолкунанда - ақибмонӣ, redeliveries, acks, байтҳои нигоҳдорӣ.
Мониторинг: нуқтаи ниҳоӣ, nsc/adm-CLI, панели панелҳо.

11) Иҷро ва танзими

Кафка

Қуттиҳои калон ва 'дароз. гузариши ms 'improve ва фишурдани p99.
Фишурдасозӣ (lz4/zstd) шабака/дискро сарфа мекунад.
адад. қисмҳо аз рӯи шумораи истеъмолкунандагон/ядроҳо, аммо аз ҳад зиёд нестанд.
Дискҳо: NVM je бартарӣ дошт, XFS/EXT4 бо 'noatime'.

NATS

Паёмҳои хурд, бисёр пайвастҳо меъёр мебошанд; гурӯҳҳои навбатиро "васеъ" нигоҳ доред.
JET Stream: оҳанги 'max _ ack _ pending', кашидан vs push, андозаи маҷмӯаҳо.

Backpressure: 'Flow

12) Намунаҳои ҳамгироӣ

Outbox/Inbox (дар ҳарду Кафка ва NATS).
SAGA: оркестри чорабиниҳо; бобои 'saga _ id + қадам'.
Тағйир додани сабти маълумот (CDC): Debezium → Kafka; дар NATS - "ношир аз пойгоҳи додаҳо триггерҳо/гузоришҳо" намуна.

Коркарди ҷараён: ҷараёнҳои Кафка/Флинк/Шарора; дар NATS - коркардкунандагон/хусусиятҳои тарафи сеюм, истеъмолкунандагони Jet

Dead Letter Queue (DLQ) ва сиёсати такрорӣ (пушти экспоненсиалӣ + jitter).

13) Намунаҳои конфигуратсия

13. 1 Кафка: Таҳияи мавзӯъ ва продюсер

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 ҷараёнҳои Кафка: коркарди idempotent (эскиз)

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

13. 3 NATS JET Stream: ҷараён + истеъмолкунанда (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 Дархост-Ҷавоб (Бирав)

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) Кафка vs NATS интихоб: Дастури зуд

Мо ба такрорӣ, нигоҳдории дарозмуддат, фишурдасозӣ, равандҳои вазнин § Кафка ниёз дорем.
RPC-и зуд, мухлиси ашаддӣ/мухлиси-дар бо микроэлементҳо, амалиёти оддӣ, канор/IOT → NATS (Core) лозим аст.
Мо ба истодагарӣ + мухлиси ашаддӣ ниёз дорем, аммо бидуни платформаи вазнин "log" → NATS JET Stream.
Калиди қатъӣ ва тартиби муомилот → Кафка.

15) Банақшагирии иқтидор (соддакардашуда)

Кафка

1. Интиқол: 'inbound _ MB' ps RF 86400 '→ дискҳо.
2. Маҷмӯаҳо: 'target _ concurrency' × саҳҳомии 1. 5-2 ×.
3. Шабака: p99 + нусхабардорӣ + фишурдани истеҳсолкунандагон.

NATS/Jetstream

1. Паёмҳо/сек ва ба ҳисоби миёна → интиқол.
2. Нигоҳдорӣ × нусхаҳои → нигоҳдорӣ.
3. Истеъмолкунандагон маҳдудиятҳои (ack-интизорӣ, redeliveries), CPU-ро барои сериализатсия маҳдуд мекунанд.

16) Амалиёти бехатар: рӯйхати назоратӣ

  • TLS/MTLS фаъол аст, сирри гардиш.
  • ACL/ҳисобҳо/квотаҳо (ба ҳар як иҷорагир).
  • Номутобиқатӣ ба истеъмолкунандагон, DLQ ва ақибнишинӣ.
  • Мониторинги ақибмонӣ/гузариш/хатогӣ; огоҳиҳо дар бораи URP (Кафка), тӯфони дубора (NATS).
  • Панели иқтидор: қисмҳо, анбор, p99.
  • Санҷишҳои нокомии гиреҳ/минтақа, рӯзҳои бозӣ, такрорӣ/бозгашт.
  • Калидҳои сабти схема/JSON Schema ҳуҷҷатгузорӣ карда мешаванд.
  • Сиёсати нигоҳдорӣ/фишурдасозӣ/TTL бо мувофиқат ҳамоҳанг карда шудаанд.
  • Версияҳои брокер/мизоҷ мунтазам нав карда мешаванд; мутобиқати протоколи сим тасдиқ карда шуд.

17) Анти-намунаҳо

Калиди гарм (ҳама рӯйдодҳои ҳамон як ID) → як ҷараёни "ҷӯшон". Шарди/буфер.
Ақибнишинӣ бе номутобиқатӣ → эффектҳои дугона.
Паёмҳои калон (MB-tens) → тақсимоти/таваққуфи GC. Нигоҳ доштани боргирӣ дар объект, фиристодани пайвандҳо.
Омезиши RPC ва ҷараён дар Кафка → давраи мураккаби ҳаёт/тартибот.
JET Stream ҳамчун "DWH дарозмуддат" → off-label; муддати дароз дар катҳои объект/сутун нигоҳ доред.
Ягон DLQ → паёмҳои "заҳролуд" беохир паҳн намешаванд.
Нигоҳдории фаромӯшшуда → дискҳо пуранд, истгоҳи кластер.

18) FAQ

Савол: Оё ман метавонам дар охири лӯла "як маротиба" кор кунам?
A: Дар амал - самаранок ҳа: Кафка (истеҳсолкунандаи idempotent + муомилот) ва дастгоҳҳои idempotent (калид, боло). Дар NATS - тавассути idempotence/dedup дар барнома.

Савол: Барои як миллион RPC/sec хурд чӣ интихоб кардан мумкин аст?
A: NATS Core: Microlatency, дархост-ҷавоб, пайвастҳои сабук ва гурӯҳҳои навбатӣ.

Савол: Ба фишурдасозӣ ва лаҳзаи сарват ниёз доред?
А: тозакунии Кафка с. сиёсат = паймон ', калид = агрегат/манбаъ.

Савол: Чӣ гуна бо ақибмонӣ мубориза бурдан мумкин аст?
Ҷ: Шумораи гурӯҳҳо/коргаронро зиёд кунед, вақти коркард, партия ва префетчро кам кунед, биёбоншавиро оптимизатсия кунед, брокерҳо/дискҳои амудиро мустаҳкам кунед.

Савол: Бисёр минтақа ва ДР?
A: Кафка - Зеркало 2/Cluster Пайвастшавӣ, масъулияти дороиҳо бо RPO ≈ sekundy. NATS - supercluster/leafnodes; Зеркало/нусхабардории JET Stream аз рӯи минтақа.

19) Натиҷаҳо

Кафка ва NATS шеваҳои гуногунро пӯшидаанд: Кафка - гузоришҳои рӯйдодҳои пойдор, интиқоли баланд, транзаксия ва такрорӣ; NATS як автобуси ultralight барои таъхири кам, RPC ва мухлиси оддӣ мебошад, ки бо Jet Интихоби худро аз семантикаи таҳвил, фармоиш ва нигоҳдорӣ, таъхир ва хароҷоти амалиётӣ интихоб кунед. Калидҳои тарроҳӣ/ҳизбҳо, нигоҳдорӣ, DLQ ва мушоҳидаҳо - ва меъмории чорабинии шумо пешгӯишаванда, миқёспазир ва боэътимод хоҳад буд.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.