Ask me anything
Ithy Logo
Sign in to save

Tehosta Datavirtojasi: PostgreSQL-muutokset NATS.io:hon Debezium Serverillä – Ilman Kafkaa!

Kattava opas reaaliaikaiseen datastriimaukseen PostgreSQL-tietokannasta NATS.io-viestijärjestelmään hyödyntäen Debezium Serveriä.

debezium-server-nats-postgresql-ilman-kafkaa-121xvrq6

Tämä opas näyttää, kuinka voit ottaa käyttöön tehokkaan muutosdatan kaappausjärjestelmän (Change Data Capture, CDC) PostgreSQL-tietokannallesi ja striimata muutokset suoraan NATS.io-viestijärjestelmään käyttämällä Debezium Serveriä. Tämä ratkaisu tarjoaa kevyemmän vaihtoehdon perinteiselle Kafka-pohjaiselle arkkitehtuurille, vähentäen infrastruktuurin monimutkaisuutta ja hallinnointitaakkaa.

Keskeiset Oivallukset

  • Debezium Server mahdollistaa CDC:n ilman Kafkaa: Voit striimata tietokantamuutokset suoraan NATS.io:n kaltaisiin viestijärjestelmiin.
  • PostgreSQL:n looginen replikointi on ytimessä: Debezium hyödyntää PostgreSQL:n sisäänrakennettua loogista replikointia muutosten tehokkaaseen kaappaamiseen.
  • Helppo konfiguraatio: Debezium Serverin asetukset määritellään selkeästi application.properties-tiedostossa, mikä tekee käyttöönotosta suoraviivaista.
  • NATS JetStream takaa kestävyyden: Käyttämällä NATS JetStreamiä varmistat viestien pysyvyyden ja luotettavan toimituksen.

Johdanto: Debezium Server ja NATS.io Yhdistelmä

Debezium on avoimen lähdekoodin hajautettu alusta muutosdatan kaappaamiseen. Perinteisesti se on vahvasti yhdistetty Apache Kafkaan, mutta Debezium Server -komponentti laajentaa sen käyttömahdollisuuksia. Debezium Server on itsenäinen sovellus, joka pystyy lukemaan tietokantamuutoksia Debezium-liittimien avulla ja lähettämään ne useisiin eri viestinvälitysjärjestelmiin, kuten NATS.io, Google Cloud Pub/Sub, Amazon Kinesis ja muihin.

NATS.io on kevyt, suorituskykyinen ja skaalautuva avoimen lähdekoodin viestijärjestelmä. Sen JetStream-ominaisuus lisää NATS:iin pysyvän tallennuksen, mikä tekee siitä erinomaisen valinnan CDC-tapahtumien käsittelyyn. Yhdistämällä Debezium Serverin NATS JetStreamiin voit rakentaa ketterän ja tehokkaan järjestelmän tietokantamuutosten reaaliaikaiseen välittämiseen ilman tarvetta ylläpitää monimutkaista Kafka-klusteria.

Debezium Server Arkkitehtuuri

Debezium Serverin arkkitehtuuri, joka mahdollistaa yhteydet eri kohdejärjestelmiin.


Edellytykset ja Ympäristön Valmistelu

Ennen kuin aloitat, varmista että seuraavat edellytykset täyttyvät:

  • PostgreSQL-tietokanta: Versio, joka tukee loogista replikointia (yleensä PostgreSQL 9.6 tai uudempi, suositeltavaa käyttää versiota 10+).
  • NATS.io-palvelin: Asennettuna ja käynnissä, JetStream-ominaisuus aktivoituna. Docker on kätevä tapa NATS:n pystyttämiseen.
  • Debezium Server: Uusin vakaa versio, joka tukee NATS JetStream -kohdetta (esim. Debezium 2.1.0.Final tai uudempi). Tämäkin voidaan ajaa Docker-kontissa.
  • Työkalut: Docker ja Docker Compose ovat suositeltavia ympäristön hallintaan. Jos ajat Debezium Serveriä suoraan, tarvitset Javan (JDK 11 tai uudempi).

PostgreSQL:n Konfigurointi Loogista Replikointia Varten

Debezium käyttää PostgreSQL:n loogista replikointia muutosten seuraamiseen. Tämä vaatii muutamia asetuksia tietokannassasi.

1. Muokkaa postgresql.conf-tiedostoa:

Varmista, että seuraavat asetukset ovat voimassa (yleensä vaatii palvelimen uudelleenkäynnistyksen):


# TÄRKEÄÄ: Varmista, että wal_level on asetettu oikein
wal_level = logical

# Muita suositeltavia asetuksia replikointia varten (säädä tarpeen mukaan)
max_wal_senders = 10 # Vähintään yhtä monta kuin replikointiyhteyksiä
max_replication_slots = 10 # Vähintään yhtä monta kuin Debezium-instansseja
    

2. Luo Replikointikäyttäjä ja Anna Oikeudet:

Yhdistä PostgreSQL-tietokantaasi (esim. psql-työkalulla) ja suorita seuraavat komennot:


-- Luo dedikoitu käyttäjä Debeziumille replikointia varten
CREATE USER debezium_user WITH REPLICATION LOGIN PASSWORD 'salasana_tahan';

-- Anna tarvittavat oikeudet seurattaviin tauluihin (esimerkkinä public-skeema)
-- Jos haluat seurata kaikkia tauluja tietyssä skeemassa:
GRANT SELECT ON ALL TABLES IN SCHEMA public TO debezium_user;
-- Tai yksittäiselle taululle:
-- GRANT SELECT ON public.oma_taulu TO debezium_user;

-- (PostgreSQL 10+): Anna käyttäjälle oikeus luoda replikointislotteja, jos tarpeen (tai luo slotit manuaalisesti superuserina)
-- Tämä ei ole aina välttämätöntä, jos Debeziumilla on riittävät oikeudet slotin luontiin itse.
    

Huom: Tuotantoympäristössä käytä vahvaa salasanaa ja rajoita oikeudet vain tarvittaviin skeemoihin ja tauluihin.

3. Luo Julkaisu (Publication) (PostgreSQL 10+):

Debeziumin PostgreSQL-liitin käyttää julkaisua (publication) määrittämään, mitkä taulut sisällytetään replikointiin. Jos et käytä `publication.autocreate.mode=all_tables` -asetusta Debeziumissa, sinun tulee luoda julkaisu manuaalisesti.


-- Luo julkaisu kaikille tauluille (varovaisuutta tämän kanssa tuotannossa)
-- CREATE PUBLICATION dbz_publication FOR ALL TABLES;

-- Tai suositellumpi tapa: luo julkaisu vain tietyille tauluille
CREATE PUBLICATION dbz_publication FOR TABLE public.asiakkaat, public.tilaukset;
-- Lisää olemassa olevaan julkaisuun tauluja:
-- ALTER PUBLICATION dbz_publication ADD TABLE public.uusi_taulu;
    

Debeziumin konfiguraatiossa viitataan tähän julkaisun nimeen (esim. `debezium.source.publication.name=dbz_publication`).


Käyttöönotto Vaihe Vaiheelta

Seuraavassa kuvataan, miten pystytät järjestelmän Docker Compose -työkalulla. Tämä yksinkertaistaa PostgreSQL:n, NATS:n ja Debezium Serverin ajamista ja linkittämistä.

1. Docker Compose -tiedoston Luonti

Luo docker-compose.yml-tiedosto projektiisi seuraavalla sisällöllä:


version: '3.8'

services:
  postgres:
    image: postgres:15 # Käytä haluamaasi PostgreSQL-versiota
    container_name: postgres_db
    environment:
      POSTGRES_USER: kayttaja
      POSTGRES_PASSWORD: salasana
      POSTGRES_DB: tietokanta
    ports:
      - "5432:5432"
    volumes:
      - ./pg_data:/var/lib/postgresql/data
      # Lisää oma postgresql.conf tarvittaessa, esim. loogisen replikoinnin asetuksille:
      # - ./custom-postgresql.conf:/etc/postgresql/postgresql.conf 
      # Komento käynnistämään Postgres custom-konfiguraatiolla:
      # command: postgres -c config_file=/etc/postgresql/postgresql.conf
    # Varmista, että `wal_level = logical` on asetettu joko kuvassa oletuksena tai custom-konfiguraatiossa.

  nats:
    image: nats:latest # Uusin NATS-kuva
    container_name: nats_server
    ports:
      - "4222:4222" # NATS client port
      - "8222:8222" # NATS HTTP monitoring port
    command: 
      - "--js" # Aktivoi JetStream
      - "--http_port=8222" # Määritä monitorointiportti

  debezium:
    image: debezium/server:2.6 # Käytä uusinta vakaata Debezium Server -versiota
    container_name: debezium_server
    ports:
      - "8080:8080" # Debezium Serverin portti (jos tarjoaa REST API:n tms.)
    volumes:
      - ./debezium_conf:/debezium/conf # Debeziumin konfiguraatiotiedostot
      - ./debezium_data:/debezium/data # Debeziumin offset-tiedot
    depends_on:
      - postgres
      - nats
    environment:
      # Voit asettaa konfiguraatioita myös ympäristömuuttujina, jos haluat.
      # Esim. DEBEZIUM_SINK_NATS_JETSTREAM_URL: nats://nats:4222
      QUARKUS_LOG_CONSOLE_JSON: "false" # Selkeämmät lokit konsolissa

Huomioitavaa:

  • Luo hakemistot ./pg_data, ./debezium_conf ja ./debezium_data projektisi juureen.
  • Jos käytät omaa postgresql.conf-tiedostoa, varmista, että se on oikein määritetty ja linkitetty Docker Compose -tiedostossa.

2. Debezium Serverin Konfigurointi

Luo application.properties-tiedosto ./debezium_conf-hakemistoon. Tämä tiedosto sisältää Debezium Serverin asetukset.


# Debezium Serverin yleiset asetukset
quarkus.http.port=8080 # Ei välttämätön NATS-striimaukselle, mutta hyvä olla olemassa

# Lähdekonfiguraatio (PostgreSQL)
debezium.source.connector.class=io.debezium.connector.postgresql.PostgresConnector
debezium.source.database.hostname=postgres # Docker Compose -palvelun nimi
debezium.source.database.port=5432
debezium.source.database.user=kayttaja # Sama kuin postgres-ympäristömuuttujissa
debezium.source.database.password=salasana
debezium.source.database.dbname=tietokanta
debezium.source.database.server.name=pgserver1 # Looginen nimi palvelimelle, käytetään aiheiden muodostukseen
debezium.source.topic.prefix=pgserver1 # Vaihtoehtoisesti, jos haluat kontrolloida etuliitettä

debezium.source.plugin.name=pgoutput # Suositeltu plugin PostgreSQL 10+
debezium.source.publication.name=dbz_publication # PostgreSQL:ssä luodun julkaisun nimi
debezium.source.publication.autocreate.mode=disabled # (disabled, filtered, all_tables) Jos julkaisu luodaan manuaalisesti, käytä disabled.
                                                # 'filtered' luo julkaisun table.include.list perusteella.
                                                # 'all_tables' luo julkaisun kaikille tauluille (vaatii superuser-oikeudet).

debezium.source.schema.include.list=public # Seurattavat skeemat (pilkulla erotettu)
debezium.source.table.include.list=public.asiakkaat,public.tilaukset # Seurattavat taulut (pilkulla erotettu)
# Voit myös käyttää table.exclude.list poissulkemaan tauluja.

# Offset-tietojen tallennus (Debezium Server käyttää tätä muistamaan, mihin asti on luettu)
debezium.source.offset.storage=org.apache.kafka.connect.storage.FileOffsetBackingStore
debezium.source.offset.storage.file.filename=/debezium/data/offsets.dat
debezium.source.offset.flush.interval.ms=10000 # Kuinka usein offset-tiedot tallennetaan (ms)

# Kohdekonfiguraatio (NATS JetStream Sink)
debezium.sink.type=nats-jetstream
debezium.sink.nats-jetstream.url=nats://nats:4222 # Docker Compose -palvelun nimi ja portti
debezium.sink.nats-jetstream.stream.name=DEBEZIUM_STREAM # NATS JetStream -streamin nimi, johon data julkaistaan.
                                                      # Jos streamia ei ole, se yritetään luoda (jos oikeudet riittävät).
# Voit myös määrittää käyttäjätunnistuksen NATS:lle tarvittaessa:
# debezium.sink.nats-jetstream.auth.token=your_nats_token
# debezium.sink.nats-jetstream.auth.username=your_nats_user
# debezium.sink.nats-jetstream.auth.password=your_nats_password

# Muotoilijat (Converters) - oletuksena JSON
debezium.format.key=json
debezium.format.value=json

# Valinnaiset muunnokset (Transformations)
# Esimerkiksi UnwrapFromEnvelope poistaa Debeziumin ulkoisen kääreen ja välittää vain datan:
# debezium.transforms=unwrap
# debezium.transforms.unwrap.type=io.debezium.transforms.ExtractNewRecordState
# debezium.transforms.unwrap.drop.tombstones=false
# debezium.transforms.unwrap.delete.handling.mode=rewrite
# debezium.transforms.unwrap.add.fields=op,table,source.ts_ms
# debezium.transforms.unwrap.add.headers=db,op # Lisää metatietoa NATS-viestin headereihin
    

Varmista, että korvaat placeholder-arvot (kuten käyttäjätunnukset, salasanat, tietokannan nimet, taulujen nimet) omilla asetuksillasi.

3. Palveluiden Käynnistäminen

Kun docker-compose.yml ja application.properties ovat valmiina, käynnistä palvelut komennolla projektisi juurihakemistossa:

docker-compose up -d

Tämä komento käynnistää PostgreSQL:n, NATS:n ja Debezium Serverin taustalla (-d).

Voit seurata lokia komennolla:

docker-compose logs -f debezium

Lokeista näet, onnistuuko Debezium Server yhdistämään PostgreSQL:ään ja NATS:iin, sekä mahdolliset virheilmoitukset.

4. Testaus: Tietokantamuutosten Striimaus

Kun kaikki palvelut ovat käynnissä ja Debezium Server on yhdistänyt onnistuneesti PostgreSQL:ään:

a) Tee muutoksia PostgreSQL-tietokantaan:

Yhdistä PostgreSQL-tietokantaasi (esim. psql tai muu SQL-työkalu) ja tee muutoksia seurattavaan tauluun (esim. public.asiakkaat):


-- Olettaen, että 'asiakkaat'-taulu on olemassa ja määritelty seurattavaksi
INSERT INTO public.asiakkaat (nimi, sahkoposti) VALUES ('Testi Kayttaja', 'testi@example.com');
UPDATE public.asiakkaat SET sahkoposti = 'uusi.testi@example.com' WHERE nimi = 'Testi Kayttaja';
DELETE FROM public.asiakkaat WHERE nimi = 'Testi Kayttaja';
    

b) Tarkkaile NATS JetStream -virtaa:

Voit käyttää NATS CLI -työkalua (nats) kuuntelemaan viestejä NATS JetStream -virrasta. Jos sinulla ei ole NATS CLI:tä asennettuna paikallisesti, voit ajaa sen Docker-kontissa tai käyttää NATS-palvelimen monitorointi-UI:ta (http://localhost:8222 jos käytit yllä olevaa Docker Composea).

NATS CLI:n käyttäminen kuunteluun (oletetaan, että stream on DEBEZIUM_STREAM ja aiheet ovat muotoa pgserver1.public.asiakkaat):


# Yhdistä NATS-palvelimeen (jos ajat ulkopuolelta Docker-verkkoa, käytä localhost:4222)
# Kuuntele kaikkia viestejä pgserver1.public.asiakkaat -aiheesta streamissa DEBEZIUM_STREAM
nats sub --server localhost:4222 --stream DEBEZIUM_STREAM pgserver1.public.asiakkaat --ack --deliver all
    

Sinun pitäisi nähdä JSON-muotoisia viestejä, jotka vastaavat PostgreSQL:ssä tekemiäsi muutoksia.

PostgreSQL Debezium NATS arkkitehtuuri

Yksinkertaistettu kaavio datavirrasta: PostgreSQL -> Debezium Server -> NATS -> Mikropalvelut.


Debezium Server + NATS vs. Perinteinen Kafka-ratkaisu

Tämä osio vertailee Debezium Serverin käyttöä NATS:n kanssa perinteisempään Debezium + Kafka Connect + Kafka -arkkitehtuuriin eri näkökulmista. Arviot ovat suuntaa-antavia ja voivat vaihdella käyttökohteen mukaan.

Kaavio havainnollistaa, että Debezium Server + NATS -ratkaisu on tyypillisesti yksinkertaisempi ottaa käyttöön, vaatii kevyemmän infrastruktuurin ja on helpompi ylläpitää kuin täysi Kafka-pohjainen ratkaisu. Kafka tarjoaa edelleen erinomaista skaalautuvuutta erittäin suuriin datamääriin, mutta NATS pärjää hyvin monissa käyttötapauksissa ja Debezium Server tarjoaa joustavuutta integroitua myös muihin järjestelmiin.


Arkkitehtuurin Visualisointi

Alla oleva mindmap-kaavio kuvaa PostgreSQL:n, Debezium Serverin ja NATS.io:n välistä arkkitehtuuria ja datavirtaa ilman Kafkaa.

mindmap root["PostgreSQL CDC NATS.io:lla Debezium Serverin avulla (ilman Kafkaa)"] ["Pääkomponentit"] id_postgres["PostgreSQL-tietokanta"] sub_pg_lr["Looginen replikointi (Logical Replication)"] sub_pg_slot["Replikointislotti (Replication Slot)"] sub_pg_pub["Julkaisu (Publication)"] id_debezium["Debezium Server"] sub_dbz_pgconn["PostgreSQL-liitin (Connector)"] sub_dbz_natssink["NATS JetStream Sink"] sub_dbz_props["Konfiguraatio (application.properties)"] id_nats["NATS.io"] sub_nats_js["NATS JetStream"] sub_nats_streams["Streamit (Streams)"] sub_nats_subjects["Aiheet (Subjects)"] ["Prosessiaskeleet"] id_step1["1. PostgreSQL:n Alustus"] sub_s1_wal["wal_level = logical"] sub_s1_user["Luo replikointikäyttäjä + oikeudet"] sub_s1_pub["Luo julkaisu (Publication)"] id_step2["2. NATS JetStreamin Käynnistys"] sub_s2_docker["Dockerilla tai natiivisti"] sub_s2_jsenabled["JetStream aktivoitu"] id_step3["3. Debezium Serverin Konfigurointi"] sub_s3_source["Lähde (PostgreSQL-asetukset)"] sub_s3_sink["Kohde (NATS JetStream -asetukset)"] sub_s3_offset["Offset-tallennus"] id_step4["4. Palveluiden Käynnistys"] sub_s4_compose["docker-compose up"] id_step5["5. Testaus ja Varmennus"] sub_s5_dbchanges["Tee tietokantamuutoksia"] sub_s5_natslistener["Kuuntele NATS-aiheita"] ["Keskeiset Hyödyt"] id_benefit1["Ei Kafka-riippuvuutta"] id_benefit2["Yksinkertaisempi arkkitehtuuri"] id_benefit3["Vähemmän infrastruktuuria"] id_benefit4["Joustavuus (useita sink-vaihtoehtoja)"] id_benefit5["Suora kulutus NATS:sta sovelluksissa"]

Tämä kaavio auttaa ymmärtämään, miten eri osat liittyvät toisiinsa ja miten data virtaa järjestelmän läpi reaaliajassa.


Debezium Serverin Avainparametrit

Seuraava taulukko kokoaa yhteen tärkeimpiä Debezium Serverin application.properties-tiedoston konfiguraatioavaimia PostgreSQL-lähteelle ja NATS JetStream -kohteelle.

Ominaisuus (Property) Kuvaus Esimerkkiarvo
debezium.source.connector.class Määrittää käytettävän Debezium-liittimen luokan. io.debezium.connector.postgresql.PostgresConnector
debezium.source.database.hostname PostgreSQL-palvelimen isäntänimi tai IP-osoite. postgres (Docker-verkossa) tai localhost
debezium.source.database.port PostgreSQL-palvelimen portti. 5432
debezium.source.database.user PostgreSQL-replikointikäyttäjän tunnus. debezium_user
debezium.source.database.password PostgreSQL-replikointikäyttäjän salasana. your_secure_password
debezium.source.database.dbname Seurattavan tietokannan nimi. your_database_name
debezium.source.database.server.name Looginen nimi tietokantapalvelimelle. Käytetään NATS-aiheiden etuliitteenä. pgserver1
debezium.source.plugin.name Käytettävä PostgreSQL loogisen dekoodauksen plugin (yleensä pgoutput tai wal2json). pgoutput
debezium.source.publication.name PostgreSQL:ssä luodun julkaisun (publication) nimi. dbz_publication
debezium.source.schema.include.list Pilkulla erotettu lista seurattavista skeemoista. public
debezium.source.table.include.list Pilkulla erotettu lista seurattavista tauluista (muodossa skeema.taulu). public.customers,public.orders
debezium.source.offset.storage.file.filename Tiedoston polku, johon Debezium tallentaa lukukohdan (offset). /debezium/data/offsets.dat
debezium.sink.type Määrittää kohdejärjestelmän tyypin. nats-jetstream
debezium.sink.nats-jetstream.url NATS-palvelimen URL-osoite. nats://nats:4222
debezium.sink.nats-jetstream.stream.name NATS JetStream -streamin nimi, johon viestit julkaistaan. Jos streamia ei ole, Debezium yrittää luoda sen. DEBEZIUM_EVENTS

Tämä taulukko ei kata kaikkia mahdollisia asetuksia, mutta antaa hyvän lähtökohdan peruskonfiguraatiolle. Tarkemmat tiedot löytyvät Debeziumin virallisesta dokumentaatiosta.


Video: Debeziumin Perusteet

Vaikka tämä video ei käsittele suoraan NATS-integraatiota, se antaa erinomaisen yleiskuvan Debeziumista ja muutosdatan kaappauksen (CDC) periaatteista. Nämä konseptit ovat keskeisiä myös käytettäessä Debezium Serveriä NATS:n kanssa.

Johdatus Debeziumiin ja CDC-konsepteihin. Lähde: YouTube / Jordan has no life.

Videolla käsitellään Debeziumin arkkitehtuuria, toimintaperiaatteita ja etuja, jotka pätevät laajasti riippumatta siitä, käytetäänkö Kafkaa vai NATS:ia kohdejärjestelmänä. Ymmärtämällä Debeziumin ydinominaisuudet voit paremmin hyödyntää sen potentiaalia datastriimausratkaisuissasi.


Usein Kysytyt Kysymykset (UKK)

Miksi käyttää Debezium Serveriä NATS:n kanssa Kafkan sijaan? +

Pääsyitä ovat yksinkertaisuus ja kevyempi infrastruktuuri. NATS on usein helpompi pystyttää ja hallinnoida kuin täysi Kafka- ja Kafka Connect -klusteri, erityisesti pienemmissä tai keskisuurissa projekteissa. Tämä voi johtaa nopeampaan kehitykseen ja alempiin ylläpitokustannuksiin ilman, että CDC-toiminnallisuudesta tarvitsee tinkiä merkittävästi.

Mitä PostgreSQL-versiota tarvitaan? +

Debezium vaatii PostgreSQL-version, joka tukee loogista replikointia. Yleensä tämä tarkoittaa PostgreSQL 9.6:a tai uudempaa. Suositeltavaa on käyttää PostgreSQL 10:tä tai uudempaa, sillä ne tarjoavat paremman tuen ja suorituskyvyn loogiselle replikoinnille, erityisesti pgoutput-pluginin myötä.

Voinko käyttää NATS Streamingia (STAN) JetStreamin sijaan? +

Kyllä, vanhemmat Debezium Server -versiot tukivat NATS Streamingia (STAN). NATS JetStream on kuitenkin NATS:n uudempi ja kehittyneempi striimausratkaisu, joka on korvannut STAN:in. Debeziumin uudemmat versiot keskittyvät JetStream-tukeen. On suositeltavaa käyttää JetStreamiä sen parempien ominaisuuksien, kuten yksinkertaisemman hallinnan ja paremman suorituskyvyn, vuoksi.

Miten Debezium Server käsittelee skeemamuutoksia? +

Debezium kaappaa myös skeemamuutokset (kuten taulun sarakkeiden lisäykset tai poistot) ja välittää ne eteenpäin. Kohdejärjestelmän ja kuluttajasovellusten on oltava valmiita käsittelemään näitä muutoksia. NATS-viesteissä skeematieto on tyypillisesti osa viestin payloadia, jolloin kuluttajat voivat mukautua muuttuneeseen rakenteeseen.

Miten varmistan tietojen kestävyyden NATS JetStreamissa? +

NATS JetStream on suunniteltu viestien pysyvään tallennukseen ja kestävyyteen. Voit konfiguroida JetStream-streameja eri tallennusvaihtoehdoilla (esim. tiedostopohjainen tai muistipohjainen) ja replikointiasetuksilla. Varmista, että streamisi on konfiguroitu käyttämään pysyvää tallennusta (esim. `storage: file`) ja tarvittaessa replikointia klusteroidussa NATS-ympäristössä, jotta data säilyy myös palvelinongelmien sattuessa.


Suositellut Lisäkysymykset


Viitteet


Last updated May 18, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI