RabbitMQ - Quorum Queue optimalizacia
Raft log
je zoradeny zoznam prikazov co sa ma stat (pridat sprava do fronty/..) kazdy zaznam v raft logu ma
- term - prakticky to znamena kolko krat sa menilo zostavenie leader/follower, a je to cislo definujuce aktualny vhlasovanie leader/follower
- index - cislo sa stale zvacsuje, kazdy zaznam ma svoje (64bit unsigned integer)
- command - co sa stalo (pridala sa sprava/odobrala sa) a aj so samotnou spravou
- CRC
indexy
- kazdy node indexy ktora ukazuju na raft log
- last_index - ake je cislo aktualne posledneho pridaneho zaznamu do raft logu
- commit_index - posledne cislo raft zaznamu ktore je oznacene ako comitnute a bezpecne prijate v ramci clustru - klient dostal ack
- last_applied - posledne cislo raft zaznamu ktore je aplikovane na tomto node
- match_index - leader si sleduje ake je posledne cislo zaznamu ktore follower spracoval
- first_index - najstarsi index ktory je stale uchovany
snapshot
raz za cas sa spusti "comapction" ktory zmaze vsetky zaznamy z raft logu, aby sme zbytocne neuchovavali tieto zaznamy, spravi sa snapshot v zlozke napriklad
/var/lib/rabbitmq/mnesia/
kde to cislo v nazve suboru oznacuje posledne cislo komitu ktore to obsahuje
snpashot sa spravi iba na zaznamoch ktore su komitnute/spracovane
snapshot sa robi na zaklade hodnoty, pocet zaznamov jak casto sa spusti raft.snapshot_interval = 10000
Write ahead log
WAL subor je subor kde sa ukladaji samotne komity nieje to ale jeden subor ale uklada sa to do segmentov WAL file je teda tvoreny segment subormi velkost jedneho segment suboru na velkost v MB a pocet komitov, aplikuje sa ten co je prvy
raft.segment_max_entries = 4096
raft.wal_max_size_bytes = 16MB
kolko segment suborov nechavat aj ked sme uz spravili snapshot
raft.max_deleted_segments
kolko kazdych komitov sa snapshotovanie spusti
raft.snapshot_interval
fsync je systemove volanie, kedy appka caka az kym sa data naozaj nevlozia na disk, pri normalnom (write() sa necaka). synchronne vs asynchronne.
kolko dat sa moze do WAL zapisat nez sa zavola volanie na zapis do disku
raft.wal_max_batch_bytes
setri miesto na disku, snapshoty sa komprimuju
raft.snapshot_compression
zavola sa snapshotovanie, nemusi snapshotnut nic..
raft.max_open_segments
spusti snapshotovanie na zaklade casu aj ked este nemusi
raft.force_log_compaction
Príspevok pridaný dňa: 11.11.2025 od užívatela: Dodoslav.