AiHummer
Latviešu
PierakstītiesKonts
v1.2.x
{ }Swagger

Daudzīrīšu vide un idempotence

v1.2.x · atjaunināts 2026-06-26

AiHummer ir multitenantu: viena vārteja var apkalpot daudz darba telpu no vienas datu bāzes, vienlaikus saglabājot to datus atsevišķi. Divi mehānismi padara to drošu — Postgres rindas līmeņa drošība (RLS) lasīšanas/rakstīšanas izolācijai un idempotences slānis tā, lai atkārtotas mēģināšanas un pagrieziena atjaunošana nekad nedublētu reālās pasaules blakusefektu.

Līmenis: Rindas līmeņa drošības vairāku nomnieku izolācija ir atkarīga no apmaksātā Uzņēmums slānis — nav daļa no bezmaksas/Komūnas platformas; idempotences slānis ir daļa no kodola.

Nomnieka izolācija ar rindu līmeņa drošību

Izolācija tiek piemērota datubāzē, ne tikai lietojumprogrammas kodā. AiHummer veic vaicājumus caur ierobežota Postgres loma (aihummer_app) kurām ir piemērotas RLS politikas, tāpēc pati datubāze noraida rindas, kas nepieder aktīvajam nomniekam.

RLS ir piedalīties. Jūs to aktivizējat, piešķirot vārtejai otro savienojuma virkni ierobežotajai lomai:

# 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] Host-datoru instalācijām instalētājs iestata AIHUMMER_DB_APP_URL automātiski, tāpēc RLS ir ieslēgts pēc noklusējuma standarta izvietojumā. Ja ja mainīgais nav klāt, vārteja darbojas tikai uz īpašnieka pulku un RLS nav aktīvs.

Katram nomniekam atsevišķa mērogošana

Ierobežotajā lomā katrs pieprasījums ir piesaistīts tam nomniekam: vārteja iestata pašreizējo nomnieka kontekstu savienojumā, lai RLS politikas tiktu risinātas attiecībā uz pareizo darba vidi. WHERE tenant_id = … filtri nav visur rokas rullēti; politiku centrāli īsteno, kas nozīmē, ka izlaists filtrs nevar noplūdināt cita nomnieka rindas.

Sistēma / apiet režīmu

Daļa darbu pamatoti darbojas starp nomniekiem — fona darbinieki, plānotāji un uzturēšanas darbi, kas darbojas visā instancē. Tie darbojas sistēmas / apiet režīms tāpēc viņi var redzēt, kas viņiem nepieciešams. Apiet ir paredzēts uzticamiem iekšējiem darbiniekiem, nevis pieprasījumu apstrādes ceļiem.

[!WARNING] Migrācijas vienmēr darbojas uz īpašnieka resursu kopas, nekad zem ierobežotās lomas. Īpašnieka savienojumam ir privilēģijas mainīt shēmu un piemērot RLS politikās; ierobežotā loma apzināti ne. Saglabājiet divus savienojumus dažādi virknējumi un piešķir aihummer_app loma tikai to, kas tai nepieciešams.

Idempotentās blakusparādības

Kārtas izpilde var radīt reālās pasaules blakus efektus: sūtīt pastu, nosūtīt ziņu atpakaļ kanālam. Ja kārta tiek mēģināta atkārtoti — pārejošas kļūdas dēļ vai tāpēc, ka vārteja tika restartēta kārtas vidū un atkopšana to atskaņo — šiem blakus efektiem jābūt ne notikt divreiz. AiHummer to garantē ar divām sadarbojošām detaļām.

Atjaunojams stabils virsgrāmatas atslēga

Katrs blakus efekts tiek ierakstīts pret atsākt stabilās virsgrāmatas atslēgu: atslēga, kas tiek deterministiski iegūta no gājiena, tāpēc tā paša gājiena atkārtojums aprēķina to pašu atslēgu, nevis jaunu. Grāmatvedības žurnāls atceras, kuras atslēgas jau ir izmantotas.

Blakusparādību barjera

Pirms efekta, piemēram, pasts vai kanāla-sūtīšana tiek veikts, tas pāriet cauri blakusparādību barjera kas pārbauda virsgrāmatu. Ja šī atslēga jau ir aktivizēta, barjera īssavienojas un efekts tiek izlaists; ja ne, efekts tiek izpildīts un atslēga tiek apstiprināta.

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

Rezultāts ir precīzi vienreizējs ārējais uzvedība, pat ja piegāde iekšēji ir vismaz vienreiz. Mēģinājumi atkārtot ir droši pēc savas konstrukcijas, kas ļauj veikt pārslēgšanās atgūšanu (skatīt Uzticama piegāde un atgūšana) atsākt pārtraukto kārtu, nepārsūtot klientam to pašu e-pastu vai to pašu atbildi divreiz.

[!TIP] Tāpēc AiHummer var piedāvāt garantētu piegādi un automātisku pagrieziena atgūšanu bez parastā dubulto ziņojumu riska — idempotence ir pamats piegādes garantijas ir balstītas uz.

Kur uz nākamo