GH GambleHub

Հաղորդագրությունների բրոկերները

1) Ինչո՞ ւ են հաղորդագրությունների բրոկերները

Բրոքերը փակցնում է արտադրողներին և կոնսյուրմերին ժամանակի/արագության/հուսալիության համար

Բուֆերիզացիա և պիկի հարթեցում, բեքսպրեսեր։

Կարդալու/գրելու մեծացումը անկախ է։

Իրադարձությունների դիտարկումը և վերարտադրումը (replay)։

Ճարտարապետական արտոնագրեր ՝ event-driven, CQRS, event sourcing, www.box/inbox։

2) Հիմնական մոդելները և տերմինները

2. 1 Kafka (լոգոն մոդել)

Ռուսական կուսակցության (կարգավորված լոգներ) տոպիկը տեղադրված է կոնսուլների մոտ։

Consumer Group: ընթերցանության զուգահեռ, կուսակցության հավասարակշռությունը։

Retenshn ժամանակի/ծավալի; ընկերակցություն բանալիով։

Սեմանտիկա 'առնվազն at-lement-once, պարամետրերի դեպքում' effectively exactly-once (idempotent արտադրողներ + գործարքներ)։

Կարգը 'երաշխավորված է կուսակցության ներսում։

2. 2 NATS (թեմաներ/www.jects, ցածր ուշացում)

Express (թեման) հիերարխիայի և willdcarts («foo. ',» ֆո. >`).

Ռեժիմները ՝ pub/sub, queue-entups (fan-aut աշխատանքի բաշխմամբ), request-reply (արագ RPC)։

AleksNATS-ը էֆեմեր է, գերձայնային լատենտ; JetStream-ը անձնավորություն/retenshn/կրկնություն է։

Կարգը 'լավագույն ուժ, առանց ուժեղ գլոբալ երաշխիքի։ JetStream-ի հետ 'stream- ի վրա կարգավորում, բայց հնարավոր է հազվագյուտ անկարգություններ։

3) Առաքման և ներդաշնակության սեմանտներ

ՍեմանտիկանKafkaNATS CoreNATS JetStream
At-most-onceհազվադեպ (սովորաբար կարիք չկա)լռելյայն (առանց ապացույցների)կարող եք
At-least-once07 (commit corporset վերամշակումից հետո)ack քաղաքականության հետAck policy, redelivery)
Exactly-once (արդյունավետ)գաղափարական արտադրող + գործարք; idempotent sinksn/dհասնում է սպառողի մակարդակում (idempotention), բրոքերը գործարքներ չի տալիս ինչպես Kafka-ում։

Idempotenty-ը և dedup-ը հավելվածի/սինքի պատասխանատվությունն է, նույնիսկ Kafka-ում «exactly-once» -ի դեպքում։

4) Կարգը, կուսակցությունը և բանալիները

Kafka

Հաղորդագրության բանալին ընտրելը որոշում է կուսակցությանը տեղական ուժեղ կարգը։

Ключи: `aggregate_id`, `tenant_id`, `order_id`. Խուսափիր տաք հետևանքներից։

Հավասարակշռություն ՝ N կուսակցությունները ցույց են տալիս ընթերցանության զուգահեռ մակարդակը։

NATS

Բելգիայում հավասարակշռությունը դարձնում է queue-group։

JetStream Stream-ում շարդինգում է jects-ով։ տեղադրված է լայն ֆան-աութ/ֆան-in 'փոքր ուշացումով։

5) Retenshn, replay և կոմպակտիա

Kafka

Retention: `retention. ms/bytes`.

Compaction: պահպանում է «վերջին արժեքը բանալին» (հարմար է դիպուկահարների/կեշի/սագի համար)։

Replay: Ցանկացած վահանակ կարող է «լվանալ» օֆսետները։

JetStream

Streams: Windows/memori backenda, ժամանակի/baythes/col-vu հաղորդագրությունների պահպանման քաղաքականություն։

Consumers: p.com/push, durable/ephemeral, ֆիլտրը համապատասխան պրեֆիքսների վրա։

Replay: redelivery կամ կարդալ սկզբից/www.set-like (sequence)։

6) Գործարքներ, ֆայլեր և համաձայնություն

Kafka

Idempotent Producer (`enable. idempotence = 105 "), պաշտպանություն դուբլներից։

Transactions: Մի քանի կուսակցությունների ատոմային ձայնագրումը + consumer-intersets-ն է, read-process-write-ը առանց «ծխի»։

Transactional Disbox-ը 'բիզնես իրադարձության ձայնագրումը և BD գործարքների աղյուսակը, գողերը հրապարակում է Kafka-ում։

NATS

Չկա «փոխաբերական» գործարքներ, ինչպես Kafka-ում։ օգտագործեք www.box/inbox և idempototent վահանակներ (բանալիներ, dedup-stor)։

7) RPC-ն և հարցման պատասխանը

Kafka-ի համար անհարմար է (բարձր overhead, կարգը/պատասխանները ավելի բարդ են)։ Օգտագործեք ասինխրոն թիմեր/իրադարձություններ։

NATS: կատարյալ է request-reply-ի համար (milisekunds, կորլացիա, թայմաուտներ)։

Օրինակ (Go, NATS request-reply)

go resp, err:= nc. Request("profile. get", []byte(`{"id":42}`), 200time. Millisecond)

8) Վիրահատություն և տեղաբանություն

8. 1 Kafka

Կլաստեր ՝ բրոկերներ + ZooKeeper (մինչև հին տարբերակները) կամ KRaft (նոր մետադատ)։

Կրկնօրինակումը ՝ RF 353 գոտիներով, ISR/վերահսկիչներով։

MirrorMaker 2/Cluster Linking; 71-լոկոմոտիվ/71-2019 հակամարտական քաղաքական գործիչների հետ։

Սկավառակի/ցանցային հզորությունը 'հաշվել «throughput medretention replicas» -ից։

8. 2 NATS

Cluster: Շատ հանգույցներ, super-cluster (երկրաչափություն), leafnodes ծայրամասի/edge համար։

JetStream-ը հանգույցների (placom), կրկնօրինակումը (R = 1.. 5)։

WAN 'կանխատեսելի ցածր ուշացումներ, թեթև ֆեդեգրաֆիա։

9) Անվտանգություն

Kafka

TLS (mTLS), SASL: SCRAM, OAuthBearer.

ACL-ը տոպիկի/խմբի/գործարքի վրա։

«Հանգստի մեջ» (OS/սկավառակ) + ցանցային քաղաքականության կոդավորումը։

NATS

nkey/JWT ինքնությունը, հաշիվների օպերատորը, ACL-ի 71-ը։

MTRC-ը հանգույցների և հաճախորդների միջև։

Վարձակալների մեկուսացումը (accounts) + limits։

10) Դիտողությունն ու գործառնական չափումները

Kafka

Брокер: `BytesIn/Out`, `RequestQueue`, `UnderReplicatedPartitions`, GC/FS stats.

Տոպիկ/կուսակցություն ՝ «logEndSystet», consumer lag (քննադատական)։

Արտադրողը/կոնսումերը 'retray,' batch։ size`, `linger. ms`, `fetch. min. bytes ', սխալներ։

Գործիքներ ՝ JMX, Cruise Corl (re-հավասարակշռություն), Schema Registry։

NATS/JetStream

Սերվերը 'conn/www.gs/sec, RTT, CPU/mem, slow consumer դետեկտիվ։

JetStream: per stream/consumer — lag, redeliveries, acks, storage bytes.

Մոսկվա 'ներկառուցված endpoint, nsc/adm-CLI, dashbords։

11) Արտադրողականությունը և թյունինգը

Kafka

Մեծ մարտեր և "linger. 24' բարելավում են throughput-ը և սեղմում p99-ը։

Ֆինլանդիան (lz4/zstd) խնայում է ցանցը/սկավառակը։

num. partitions սպառողների/միջուկների քանակով, բայց ոչ թե հատել (overhead)։

Սկավառակներ ՝ NVMe նախընտրելի, XIV/EXT4-ի հետ 'www.atime։

NATS

Փոքր հաղորդագրություններ, շատ կոմպոզիցիաներ 'նորմ։ պահեք queue delups «լայն»։

JetStream: tune `max_ack_pending`, pull vs push, size of batches.
Backpressure: `FlowControl`, `IdleHeartbeat`, server-side limits.

12) Patterns

Medibox/Inbox (Kafka-ում և NATS-ում)։

SAGA 'նվագախումբը իրադարձություններով։ dedup 'saga _ id + step "։

Change Data Capture (CDC): Debezium → Kafka; NATS-ում «publisher» -ը BD-Strigger/logs-ից։

Stream processing: Kafka Streams/Flink/Spark; NATS-ում երրորդ կողմի կոմպոզիցիաներ/գործառույթներ են, JetStream consumers-ը։

Dead Letter Queue (DLQ) և retry քաղաքականությունը (էքսպոնենցիալ backoff + jitter)։

13) Միգրացիայի օրինակներ

13. 1 Kafka 'տոպիկի և արտադրողի ստեղծումը

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 Streams: idempotent (ուրվագիծ)

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

13. 3 NATS JetStream: stream + consumer (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 Request-Reply (Go)

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-ի ընտրությունը արագ ուղեցույց է։

Անհրաժեշտ է replay, երկար retenshn, կոմպակտ, ծանր հոսող գործընթացներ Kafka։

Անհրաժեշտ է արագ RPC, fan-aut/fan-in միկրոլատենցիա, պարզ գործողություն, edge/IoT NATS (Իսպանիա)։

Պետք է անձնավորություն + ֆան-աութ, բայց առանց NATS JetStream-ի կոդավորման ծանր «լոգային» պլատֆորմի։

Kafka-ի բանալիների և գործարքների խիստ կարգը։

15) Տարաների պլանավորումը (պարզեցված)

Kafka

1. Անցնող '"inbound _ MBps 35RF www.retention _ days 2486400' 108 սկավառակ։

2. Կուսակցությունը '«target _ concurrency» ռուսական արգելակ 1։ 5–2×.

3. Ցանցը ՝ p99 + կրկնօրինակումը + ագրեսիայի արտադրողը։

NATS/JetStream

1. Հաղորդագրություններ/վայրկյան և միջին չափսը troughput է։

2. Retention×replicas → storage.

3. Consumers-ը (ack-pending, redeliveries), CPU-ն սերիալիզացիայի վրա։

16) Անվտանգ վիրահատություն 'չեկ թերթ

  • TFC/mTSA-ն միացված է, գաղտնիքները պտտվում են։
  • ACL/հաշիվներ/քվոտաներ (per-tenae)։
  • Idempotenty condumers, DLQ և retrai ջիթերի հետ։
  • Dislag/throughput/սխալ; Alerts URP (Kafka), redelivery փոթորիկ (NATS)։
  • Capacity dashboards: կուսակցություն, storage, p99։
  • Հանգույցների/գոտու մերժման թեստեր, game-days, replay/backfill։
  • Փաստաթղթավորված են կուսակցության և սխեմայի բանալիները (Schema Registry/JSON Schema)։
  • Retenshna/compaction/TTL-ի քաղաքական գործիչները համաձայնեցված են հաճույքի հետ։
  • Բրոկերների/հաճախորդների տարբերակները պարբերաբար նորարարվում են. wire-արձանագրության համատեղելիությունը ստուգված է։

17) Anti-patterna

Տաք բանալին (ID-ի բոլոր իրադարձությունները) մեկ «եռացող» հոսք է։ Chardiruret/wwww.H.

Retrai առանց idempotenty-ը կրկնակի ազդեցություն ունի։

Հսկայական հաղորդագրությունները (MB-տասնյակ) բացատրում են GC-ի հատվածները/դադարները։ Պահեք payload օբյեկտի մեջ, ուղարկեք հղումներ։

RPC-ի խառնուրդը և Kafka-ում սթրիմինգը կանխատեսում են բարդ կյանքի ցիկլ/կարգ։

JetStream-ը որպես «երկարաժամկետ PPH» նախատեսված չէ։ երկար ժամանակ պահեք օբյեկտի/զանգի պատերի մեջ։

Ոչ DLQ-ը «թունավոր» հաղորդագրությունները անվերջ պտտվում են։

Մոռացված ռետենշը ծածկված է, կանգառը։

18) FAQ

Q 'Հնարավո՞ ր է արդյոք «exactly-once» -ի վերջում։

A 'Գործնականում' արդյունավետորեն այո 'Kafka (idempotent արտադրող + գործարք) և idempotent կապեր (բանալին, ups.ru)։ NATS-ում 'idempotenty/dedup-ի միջոցով։

Q 'Ի՞ նչ ընտրել միլիոն փոքր RPC/վրկ համար։

A: NATS Express: միկրոլատենտություն, request-reply, թեթև կոնեկտներ և queue-produps։

Q 'Անհրաժեշտ է կոմպակտացիա և հարմարավետություն։

A: Kafka с `cleanup. policy = compact ", բանալին = ագրեգատ/ռեսուրս։

Q 'Ինչպե՞ ս պայքարել ճամբարի դեմ։

Ա 'Ավելացրեք կուսակցությունների/վորկերների թիվը, նվազեցրեք վերամշակման ժամանակը, մարտերը և www.fetch-ը, օպտիմիզացնել դեսերիալիզացիան, ուղղահայաց ուժեղացնել բրոկերները/սկավառակները։

Q: Molregion և DR։

A: Kafka - MirrorMaker 2/Cluster Linking, RPO-ի 71 վայրկյան։ NATS — supercluster/leafnodes; JetStream-ը զսպում/կրկնօրինակում է գոտիներով։

19) Արդյունքները

Kafka-ը և NATS-ը փակում են տարբեր ռեժիմներ ՝ Kafka-ը իրադարձությունների երկարաժամկետ ամսագրեր են, բարձր throughput, գործարք և reple; NATS-ը գերբնական անվադողեր է ցածր ուշացումների համար, RPC-ը և պարզ ֆան-աուտը, JetStream-ից անձնավորության համար։ Ընտրեք առաքման, կարգուկանոնի, լատենտության և վիրահատական ծախսերի իմաստաբանությունից։ Նախագծեք բանալիներ/կուսակցություններ, retenshn, DLQ և դիտողություններ, և ձեր իրադարձական ճարտարապետությունը կլինի կանխատեսելի, մեծացված և հուսալի։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։