Эки аймакта эки колдонмо сервери, VPN аркылуу жазуучу бир кардар жана эч ким жазбаган суроо: жазуу болду деп кайсы компонент чечет? Маршруттоо сурамды процесске жеткирет. Транзакция чеги өзгөрүү качан туруктуу жана көрүнүктүү болорун чечет. Бул ар башка системалар аткарган ар башка иштер, жана алардын ортосундагы боштук — көп аймактуу жазуу каталарынын көбү жашаган жер.

Картадан эмес, бизнес эрежеден баштаңыз

География жөнүндө эмес, бизнес эреже жөнүндө сүйлөм менен баштаңыз: кайсы окуулар жана жазуулар чогуу ийгиликтүү болушу керек жана кайсы бир убактагы өзгөрүүлөр ошол учурда мүмкүн болбошу керек. Кампаны ээлөө үчүн бул кампаны текшерүү жана ээлөө же экөө тең күчүнө кирет, же экөө тең кирбейт, жана экинчи буйрутма ошол ортодо ошол эле бирдикти сарптай албайт дегенди билдирет.

RequirementWhat satisfies itWhat does not
All-or-nothing applicationA transaction inside one owning systemA VPN path between regions
No double spendIsolation strong enough to exclude the conflictAtomicity alone
Survive a region lossReplication the database itself documentsTwo independent databases behind one client

Так ошол ортоңку сапты командалар өткөрүп жиберет. Жетиштүү обочолонуусуз атомдук эки транзакцияга өз-өзүнчө туура бекитүүгө мүмкүндүк берет жана баары бир бизнес мүмкүн эмес деп эсептеген абалга алып келет, жана кийин эч кандай кайталоо логикасы аны оңдобойт.

Бир бийликтуу чек эки аймактык серверден басымдуу

Аймактык колдонмо серверлери өз ордунда кала алышат, эгер операцияны бир колдоого алынган транзакция чегинин ичинде аткарган кызматка тапшырышса. Колдонмо катмары ниеттин маршрутизаторуна айланат; маалымат катмары чындыкты ээлейт.

Бул чекти кыска жана ал тийген маалыматка жакын кармаңыз. Адам суроого жооп берип жатканда же чакыруу эки аймактан өтүп жатканда ачык кармалган транзакция убактысын кулпуларды кармоого жумшайт жана анын артында бир нерсе мөөнөтүнөн өтүп кетүү ыктымалдыгын жогорулатат. Бул ийгиликсиздик маалымат базасынын көйгөйүнө окшош жана чындыгында ошондой кийимчен долбоорлоо көйгөйү. Чечимди маалымат катмарына жылдыруу адатта аны толугу менен жок кылат.

BEGIN;
UPDATE inventory SET reserved = reserved + 1
 WHERE sku = 'A-100' AND available >= 1;
INSERT INTO reservation (sku, order_id) VALUES ('A-100', 'ord-9f');
COMMIT;

Бул эскизди чек катары окуңуз, аткаруу сунушу катары эмес. Маселе мында: текшерүү жана киргизүү бир бекитилүүнү бөлүшөт, ошондуктан бир убактагы буйрутма кампаны сарпталган деп көрөт же такыр көрбөйт.

Репликаланган маалымат базасы эмне берет жана эмне бербейт

Репликаланган маалымат базасы өзүнүн транзакция модели колдосо, кененирээк чек бере алат. Spanner таблицалар боюнча бир маалымат базасынын ичиндеги атомдук окуу-жазуу транзакцияларын аныкталган обочолонуу жана кайталоо жүрүм-туруму менен документтештирет. Бул сиз окуган, сынаган жана атайын таянган кепилдик.

Бул ошондой эле продуктан келген кепилдик, маршруттан эмес. Аймактардын ортосундагы VPN пакеттердин кантип саякаттоосун жана бузулуулардын кантип көрүнүшүн өзгөртөт. Туннель канчалык соо көрүнсө да, ал транзакция чегин бир сапка да кеңейтпейт. Экөөнү алмаштыруу ар бир компонент өз текшерүүсүнөн өткөн, бирок маалымат дагы эле дал келбеген архитектураларды жаратат.

Эки маалымат базасы бир системага айланбайт

Дээрлик өз алдынча башкарылган эки маалымат базасы кардарлар экөөнө тең жете алгандыктан жалпы транзакция менеджерин ала албайт. Эгер бизнеске чын эле ушул жуп боюнча атомдук милдеттенме керек болсо, координация механизми, катышуучулар жана калыбына келтирүү процесси болжолдонбой, тандалып, квалификациясы тастыкталышы керек.

Иш даярдалгандан кийин катышуучу же байланыш жоголгон учурду ойлонуңуз. Колдоого алынган бөлүштүрүлгөн бекитилүү калыбына келтирүү жол-жобосун жана адам чечимин талап кылган күмөндүү абалды калтырышы мүмкүн, жана ал ар бир бөлүнүү учурунда ар бир аймак жазууга жөндөмдүү бойдон калат деген убада бербейт.

Эгер анын ордуна асинхрондук координация жарамдуу болсо, муну ачык айтыңыз жана аралык бизнес абалдары менен шайкештирүү эрежелерин жазыңыз. Компенсация менен жергиликтүү бекитилген кадамдардын чынжыры мыйзамдуу долбоорлоо; ал жөн гана башка ат менен бир атомдук транзакция эмес.

Кайталоону биринчи бузулууга чейин долбоорлоңуз

Кардар операция бекитилгенден кийин жоопту жоготушу мүмкүн, ошондуктан чакыруучу тайм-аутту ийгиликсиздик деп эсептей албайт. Туруктуу сурам идентификаторун сактаңыз жана өзгөрүүнү кайталоодон мурун кызматтын натыйжасын же идемпотенттик механизмин колдонуңуз, болбосо кайталоо экинчи жазууга айланат.

Автоматтык транзакция кайтарым чакыруулары кайталанууга мүмкүн болгон токтотуудан кийин бирден көп жолу аткарылышы мүмкүн, бул аларды кайтарылгыс тышкы таасирлер үчүн жаман үй кылат. Аларды кайтарым чакыруудан тышкары кармаңыз, эгер иш агымы алар үчүн ачык коопсуз протоколду аныктабаса. Ушундай эле этияттык акча короткон же билдирүү жөнөткөн бардык нерсеге тиешелүү. Кош төлөм кош журнал сабынан алда канча кыйын сүйлөшүү.

Кабыл алуу төрт сценарийди кайра ойнотушу керек: бир сап үчүн атаандашкан эки кардар, кызмат кайталанууга болот деген токтотуу, жообу эч качан келбеген бекитилүү жана аймактын же алардын ортосундагы байланыштын жоголушу. Бекитилген бизнес натыйжаны жана чечилбеген абалдарды маршруттоо долбоорунун жанына жазыңыз, ошондо эч ким тармакты кепилдик берүүчү компонент деп адаштырбайт.

Тектеш макалалар