Uvod u Red kronika

1. Pregled

Chronicle Queens nastavlja svaku pojedinu poruku koristeći memoriranu datoteku. To nam omogućuje dijeljenje poruka između procesa.

Stoga podatke pohranjuje izravno u memoriju izvan gomile, što ga čini slobodnim za GC. Dizajniran je za pružanje okvira za poruke s malim kašnjenjem za aplikacije visokih performansi.

U ovom kratkom članku proučit ćemo osnovni skup operacija.

2. Ovisnosti Mavena

Moramo dodati sljedeću ovisnost:

 net.openhft kronika 3.6.4 

Uvijek možemo provjeriti najnovije verzije koje je domaćin Maven Central s vezom pruženom prije.

3. Građevinski blokovi

Tri su koncepta karakteristična za Chronicle Queue:

  • Isječak - je spremnik podataka
  • Napadač - dodatak se koristi za upisivanje podataka
  • Najava - koristi se za uzastopno čitanje podataka

Rezervirat ćemo dio memorije za čitati-pisati operacije pomoću Kronika sučelje.

Evo primjera koda za stvaranje instance:

Datoteka queueDir = Files.createTempDirectory ("chronicle-queue"). ToFile (); Kronika kronika = ChronicleQueueBuilder.indexed (queueDir) .build ();

Trebat će nam osnovni direktorij u kojem će red zadržati zapise u mapama preslikanim datotekama.

ChronicleQueueBuilder klasa pruža različite vrste redova. U ovom smo slučaju koristili IndexedChronicleQueue kojih koristi sekvencijalni indeks za održavanje pomicanja memorije zapisa u redu.

4. Pisanje u red čekanja

Da bismo stavke zapisali u red, trebamo stvoriti objekt od IsječakAppender razred koristeći Kronika primjer. Evo primjera koda za upisivanje poruka u red čekanja:

Evo primjera koda za upisivanje poruka u red čekanja:

ExcerptAppender appender = chronicle.createAppender (); appender.startExcerpt (); String stringVal = "Pozdrav svijetu"; int intVal = 101; long longVal = System.currentTimeMillis (); dvostruki doubleVal = 90,00192091d; appender.writeUTF (stringValue); appender.writeInt (intValue); appender.writeLong (longValue); appender.writeDouble (doubleValue); appender.finish ();

Nakon stvaranja dodatka, pokrenut ćemo dodavač pomoću a startIsječak metoda. Počinje Izvod sa zadanim kapacitetom poruke 128.000. Možemo koristiti preopterećenu verziju startIsječak pružiti prilagođeni kapacitet.

Jednom započeti, možemo upisati bilo koju doslovnu vrijednost ili vrijednost objekta u red koristeći širok raspon metoda pisanja koje nudi knjižnica.

Napokon, kada završimo s pisanjem, dovršit ćemo isječak, spremiti podatke u red i kasnije na disk.

5. Čitanje iz reda

Čitanje vrijednosti iz red se lako može izvršiti pomoću ExcerptTrailer primjer.

Baš je poput iteratora kojim se krećemo po zbirci na Javi.

Pročitajmo vrijednosti iz reda:

ExcerptTailer tailer = chronicle.createTailer (); while (tailer.nextIndex ()) {tailer.readUTF (); tailer.readInt (); tailer.readLong (); tailer.readDouble (); } tailer.finish ();

Nakon stvaranja prikolice koristimo nextIndex metoda za provjeru postoji li novi ulomak za čitanje.

Jednom ExcerptTailer ima novu Izvod za čitanje možemo čitati poruke s njega pomoću niza čitati metode za doslovne i vrijednosti tipa objekta.

Konačno, čitanje završavamo s Završi API.

6. Zaključak

U ovom uputstvu dali smo kratki uvod u Ljetopisni red i njegove blokove. Vidjeli smo kako stvoriti red, pisati i čitati podatke. Korištenje nudi brojne pogodnosti, uključujući nisku latenciju, trajnu međuprocesnu komunikaciju (IPC), kao i odsustvo troškova odvoza smeća.

Rješenje omogućuje postojanost podataka kroz datoteke preslikane u memoriju - bez gubitka podataka. Također omogućuje istodobno čitanje-upisivanje iz više procesa; međutim, zapisi se obrađuju sinkrono.

Kao i uvijek, sve isječke koda možete pronaći na GitHubu.


$config[zx-auto] not found$config[zx-overlay] not found