AiHummer
Lietuvių
PrisijungtiPaskyra
v1.2.x
{ }Swagger

Daugiabūtiškumas ir nepakartojamumas

v1.2.x · atnaujinta 2026-06-26

AiHummer yra daugiaaukštis naudojimas: viena vartai gali aptarnauti daug darbo sričių iš vienos duomenų bazės, tuo pačiu laikydama jų duomenis atskirai. Du mechanizmai tai užtikrina — Postgres eilutės lygio saugumas (RLS) skaitymo/rašymo izoliacijai ir idempotentiškumo sluoksnis kad pakartojimai ir posūkio atkūrimas niekada nekartotų realaus pasaulio šalutinio poveikio.

Lygis: Daugiavartotojiškos eilutės lygio saugumo izoliacija yra prieinama tik mokamiems naudotojams Įmonė lygmuo — nepriklauso nemokamai/Bendruomenės platformai; idempotencijos sluoksnis yra pagrindinės dalies dalis.

Nuomininko izoliacija naudojant eilutės lygio saugumą

Izoliacija vykdoma duomenų bazėje, ne tik programos kode. AiHummer vykdo užklausas per apribota Postgres rolė (aihummer_app) kuriame taikomos RLS politikos, todėl pati duomenų bazė atmeta eiles, priklausančias neaktyviam nuomininkui.

RLS yra prisijungti. Jūs jį suaktyvinate suteikdami vartams antrą prisijungimo eilutę ribotai rolę turinčiam naudotojui:

# 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] Kiekvienai šeimininko-gimtosios įdiegimui diegimo programa nustato AIHUMMER_DB_APP_URL automatiškai, todėl RLS pagal numatytuosius nustatymus įjungtas standartiniame diegime. Jei kintamasis neegzistuoja, vartai veikia tik savininko baseine ir RLS neveikia aktyvus.

Nuomininko aprėpties nustatymas

Apribotoje rolėje kiekvienas prašymas yra susijęs su savo nuomininku: vartai nustato dabartinį nuomininko kontekstą ryšyje, kad RLS politikos būtų taikomos tinkamai darbo vietai. WHERE tenant_id = … Filtrai nėra ranka pritaikomi visur; politika tai įgyvendina centralizuotai, o tai reiškia, kad praleistas filtras negali nutekinti kito nuomininko eilučių.

Sistemos / apeiti režimas

Kai kurie darbai yra teisėtai tarpnuomininkų — fono darbiniai procesai, planuotojai ir priežiūros užduotys, veikiančios visoje instancijoje. Jie veikia sistema / apeidimo režimas taip jie gali matyti, ką reikia. Apėjimas skirtas tik patikimiems vidiniams darbuotojams, o ne užklausų tvarkymo keliams.

[!WARNING] Migracijos visada vykdomos savininko grupėje, niekada ne su ribota rolė. Savininko ryšys turi teises keisti schemą ir taikyti RLS politikos; ribota rolė tyčia to nedaro. Laikykite dvi jungtis skirtingos eilutės ir suteikti aihummer_app vaidmuo tik tai, ko jam reikia.

Idempotentiniai šalutiniai poveikiai

Vaidmuo gali sukelti realaus pasaulio šalutinius poveikius: siųsti laišką, paskelbti pranešimą atgal į kanalą. Jei vaidmuo bandomas iš naujo — dėl laikino klaidos arba dėl to, kad vartai perkrauti per vidurį vaidmens ir atkūrimas jį atkartoja — šie šalutiniai poveikiai turi ne įvykti du kartus. AiHummer tai garantuoja su dviem bendradarbiaujančiais komponentais.

Atnaujinamas stabilus knygos raktas

Kiekvienas šalutinis poveikis užregistruojamas prieš tęsti-stabilų knygos raktą: raktas, kuris deterministiškai gaunamas iš ėjimo, todėl to paties ėjimo pakartojimas sugeneruoja tą patį raktą, o ne naują. Žurnalas įsimena, kurie raktai jau buvo panaudoti.

Šalutinio poveikio barjeras

Prieš efektą, tokį kaip paštas arba kanalo-siuntimas atliekamas, jis praeina per pokalbinė kliūtis tikrina apskaitos knygą. Jei šis raktas jau buvo aktyvuotas, barjeras trumpai uždaromas ir efektas praleidžiamas; jei ne, efektas vykdomas ir raktas įforminamas.

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

Rezultatas yra tiksliai vienąkart išorinė elgsena, net jei pristatymas viduje yra bent kartą. Pakartotiniai bandymai pagal konstrukciją yra saugūs, tai leidžia įgyvendinti atkūrimą (žr. Patikimas pristatymas ir atkūrimas) pakartokite nutrauktą atsakymą, kad klientas ne gautų tą patį el. laišką ar tą patį atsakymą du kartus.

[!TIP] Štai kodėl AiHummer gali pasiūlyti garantuotą pristatymą ir automatinį posūkio atstatymą be įprastos dubliuotų žinučių rizikos — idempotentiškumas yra pagrindas pristatymo garantijos yra pagrįstos.

Kur toliau