AiHummer
Suomi
Kirjaudu sisäänTili
v1.2.x
{ }Swagger

Monivuokraisuus ja idempotenssi

v1.2.x · päivitetty 2026-06-26

AiHummer on monivuokralainen: yksi portti voi palvella monia työtiloja yhdestä tietokannasta samalla, kun sen tiedot pidetään erillään. Kaksi mekanismia tekevät siitä turvallista — Postgres-rivitason tietoturva (RLS) lukemisen/kirjoittamisen eristystä varten, ja idempotenssikerros jotta uudelleenyrittämiset ja vuoron palauttaminen eivät koskaan tuottaisi todellisen maailman sivuvaikutusta kahteen kertaan.

Taso: Rivin tason turvallisuuden monivuokralais-eristys on rajoitettu maksulliseen versioon Yritys taso — ei osa ilmaista/Yhteisö-alustaa; idempotenssikerros on osa ydintä.

Vuokralaisen eristäminen rivitason suojauksella

Eristäminen toteutetaan tietokannassa, ei vain sovelluskoodissa. AiHummer suorittaa kyselyt läpi rajoitettu Postgres-rooli (aihummer_app) johon on sovellettu RLS-käytäntöjä, joten itse tietokanta hylkää rivit, jotka eivät kuulu aktiiviselle vuokralaiselle.

RLS on osallistua vapaaehtoisesti. Aktivoi se antamalla yhdyskäytävälle toinen yhteysmerkkijono rajoitetulle roolille:

# gateway.env
# Owner pool — runs migrations and privileged maintenance
AIHUMMER_DATABASE_URL=postgres://aihummer:***@localhost:5432/aihummer?sslmode=disable
# Restricted role — activates RLS for normal request traffic
AIHUMMER_DB_APP_URL=postgres://aihummer_app:***@localhost:5432/aihummer?sslmode=disable

[!NOTE] Isäntäkohtaisissa asennuksissa asennusohjelma asettaa AIHUMMER_DB_APP_URL automaattisesti, joten RLS on oletuksena päällä vakiototeutuksessa. Jos muuttuja puuttuu, portti toimii vain omistajapoolissa eikä RLS ole aktiivinen.

Vuokralaiskohtainen laajuuden määrittely

Rajoitetussa roolissa jokainen pyyntö on kohdistettu sen vuokraajaan: yhdyskäytävä asettaa nykyisen vuokraajakontekstin yhteyteen, jotta RLS-politiikat ratkaistaan oikeaa työtilaa vastaan. WHERE tenant_id = … Suodattimia ei ole käsin tehty kaikkialla; politiikka toteuttaa sen keskitetysti, mikä tarkoittaa, että ohitettu suodatin ei voi vuotaa toisen vuokralaisen rivejä.

Järjestelmä / ohitustila

Joitakin töitä tehdään laillisesti monivuokralaisympäristössä — taustatyöntekijöitä, ajastimia ja ylläpitotehtäviä, jotka toimivat koko instanssin laajuudelta. Nämä ajetaan järjestelmä / ohitustila jotta he voivat nähdä, mitä heidän tarvitsee. Ohitus on varattu luotetuille sisäisille työntekijöille, ei pyyntöjen käsittelyreiteille.

[!WARNING] Migraatiot ajetaan aina omistajapoolilla, ei koskaan rajoitetun roolin alla. Omistajayhteydellä on oikeudet muuttaa skeemaa ja soveltaa RLS:ää politiikat; rajoitettu rooli ei tarkoituksellisesti. Säilytä kaksi yhteyttä merkkijonot erillisiä ja myönnä aihummer_app rooli vain sen mitä se tarvitsee.

Idempotentit sivuvaikutukset

Kierros voi tuottaa todellisen maailman sivuvaikutuksia: lähettää kirjeen, julkaista viesti takaisin kanavalle. Jos kierrosta yritetään uudelleen — tilapäisen virheen vuoksi tai koska portti käynnistyi uudelleen kierroksen aikana ja palautus toistaa sen — näiden sivuvaikutusten on ei tapahtua kahdesti. AiHummer takaa tämän kahdella yhteistyössä toimivalla osalla.

Yhteenvetovakaa pääkirjan avain

Jokainen sivuvaikutus kirjataan vastaan jatka-stabiili pääkirja-avain: avain, joka johdetaan deterministisesti vuorosta, joten saman vuoron uudelleen suorittaminen laskee saman avaimen sen sijaan, että saataisiin uusi. Kirjanpito muistaa, mitkä avaimet on jo otettu käyttöön.

Sivuvaikutuseste

Ennen vaikutusta, kuten posti tai kanava-lähetä suoritettaessa se kulkee läpi sivuvaikutusten este joka tarkistaa kirjanpidon. Jos tätä avainta on jo käytetty, este oikosulkeutuu ja vaikutus ohitetaan; jos ei, vaikutus suoritetaan ja avain vahvistetaan.

side-effect requested
   └─▶ compute resume-stable ledger key
         └─▶ barrier: key already committed?
               ├─ yes ─▶ skip (no double-send)
               └─ no  ─▶ perform effect ─▶ commit key

Tulos on täsmälleen-kerran ulkoinen käyttäytyminen vaikka toimitus on vähintään-kerran sisäisesti. Uudelleenyrittäminen on turvallista rakenteensa vuoksi, mikä mahdollistaa kääntymisen palautuksen (katso Luotettava toimitus ja palautus) toista keskeytetty vuoro ilman, että asiakas saa samaa sähköpostia tai samaa vastausta kahdesti.

[!TIP] Siksi AiHummer voi tarjota takuun toimituksesta ja automaattisesta käännösten palautuksesta ilman tavallista päällekkäisten viestien riskiä — idempotenssi on perusta toimitustakaukset perustuvat.

Minne seuraavaksi