Prečo má Apache Kafka vysoký výkon?
sobes.tech AI
Odpoveď od AI
Kafka dosahuje vysoký výkon vďaka niekoľkým kľúčovým mechanizmom:
-
Sekvenciálne zapisovanie na disk: Kafka brokeri zapisujú dáta do logov (segmentových súborov) sekvenciuálne. Sekvenciálny zápis je oveľa rýchlejší ako náhodný, najmä na tradičných diskoch (HDD).
-
Žiadne medzikusové vyrovnávanie: Kafka nevyrovnáva správy v pamäti pred zápisom na disk. Správy sa zapisujú ihneď po prijatí, čo znižuje oneskorenie a spotrebu pamäti.
-
Využitie Page Cache OS: Brokeri aktívne využívajú cache stránok operačného systému (Page Cache) na čítanie dát. To umožňuje vyhnúť sa opakovanému čítaniu z disku a výrazne zrýchľuje doručenie správ odberateľom. Dáta zapísané na disk brokerom sa automaticky umiestňujú do Page Cache.
-
Zero-copy (Nulové kopírovanie): Pri odosielaní dát odberateľom Kafka využíva techniku "nulového kopírovania" (realizuje sa cez
sendfilev Linuxe). To umožňuje vyhnúť sa medziúrovňovému kopírovaniu dát medzi jadrovými a používateľskými buffermi, priamo prenášajúc dáta z Page Cache brokera do sieťového soketu odberateľa.// Príklad pseudokódu ilustrujúci koncept sendfile // (Nie je to skutočný kód Kafka, len demonštrácia nápadu) FileChannel fileChannel = ...; // Kanál na čítanie zo súboru (Kafka log) SocketChannel socketChannel = ...; // Kanál na odosielanie dát cez sieť fileChannel.transferTo(0, fileChannel.size(), socketChannel); // Zero-copy operácia -
Paketová spracovanie (Batching): Kafka umožňuje odosielať a prijímať správy v balíkoch. To znižuje náklady na sieťové požiadavky a operácie na disku. Producenti môžu skupinovať viac správ pred odoslaním, a odberatelia môžu čítať viac správ naraz.
-
Particionovanie: Témy sa delia na partície. Každá partícia sa spracováva nezávisle, čo umožňuje rozloženie záťaže medzi viacerými brokermi a paralelné čítanie/zapisovanie dát. To zabezpečuje horizontálne škálovanie.
-
Jednoduchý formát správ: Správy majú relatívne jednoduchú štruktúru, čo minimalizuje náklady na serializáciu a deserializáciu.
Tieto mechanizmy spoločne umožňujú Kafka spracovávať veľmi veľké objemy správ s nízkym oneskorením.