Хоёр бүсэд хоёр аппликейшн сервер, 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 пакетууд хэрхэн аялах, алдаа хэрхэн илрэхийг өөрчилдөг. Туннель хичнээн эрүүл харагдахаас үл хамааран энэ нь гүйлгээний хилийг нэг мөрөөр ч сунгадаггүй. Хоёрыг андуурах нь бүрэлдэхүүн бүр өөрийн шалгалтыг давдаг ч өгөгдөл тохирохгүй хэвээр байдаг архитектурыг үүсгэдэг.

Хоёр өгөгдлийн сан нэг систем болохгүй

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

Ажил бэлтгэгдсэний дараа оролцогч эсвэл холбоос алга болох мөчийг бод. Дэмжигдсэн тархмал баталгаажуулалт нь сэргээх журам, хүний шийдвэр шаарддаг тодорхойгүй төлөв үлдээж болох бөгөөд хуваагдал бүрээр бүс бүр бичих боломжтой хэвээр үлдэнэ гэсэн амлалт өгдөггүй.

Хэрэв оронд нь асинхрон зохицуулалт хүлээн зөвшөөрөгдөх бол түүнийг тодорхой хэлж, завсрын бизнесийн төлөв, зохицуулалтын дүрмийг бич. Нөхөн төлбөртэй локал баталгаажсан алхмуудын гинжин хэлхээ нь хууль ёсны загвар; энэ нь зүгээр л өөр нэртэй нэг атом гүйлгээ биш юм.

Эхний доголдлоос өмнө дахин оролдлогыг зохион бүтээ

Үйлдэл баталгаажсны дараа клиент хариуг алдаж болох тул дуудагч хугацаа хэтрэлтийг бүтэлгүйтэл гэж үзэж болохгүй. Бат бөх хүсэлтийн таних тэмдгийг хадгалж, өөрчлөлтийг дахин оролдохын өмнө үйлчилгээний үр дүн эсвэл идемпотент байдлын механизмыг ашигла, эс бөгөөс дахин оролдлого хоёр дахь бичилт болно.

Автомат гүйлгээний буцаан дуудлага нь дахин оролдох боломжтой тасалдалын дараа нэгээс олон удаа ажиллаж болох бөгөөд энэ нь тэдгээрийг буцаах боломжгүй гадаад нөлөөнд муу гэр болгоно. Ажлын урсгал тэдэнд тодорхой аюулгүй протокол тодорхойлоогүй л бол тэдгээрийг буцаан дуудлагын гадна байлга. Мөнгө зарцуулдаг эсвэл мессеж илгээдэг бүх зүйлд ижил болгоомжлол хамаарна. Давхар төлбөр нь давхар лог мөрөөс хамаагүй хэцүү яриа юм.

Хүлээн авалт дөрвөн хувилбарыг дахин тоглуулах ёстой: нэг мөрний төлөө өрсөлдөж буй хоёр клиент, үйлчилгээ дахин оролдох боломжтой гэж хэлсэн тасалдал, хариу нь хэзээ ч ирэхгүй баталгаажуулалт, бүс эсвэл тэдгээрийн хоорондын холбоосын алдагдал. Баталгаажсан бизнесийн үр дүн, шийдэгдээгүй төлөвийг маршрутлалтын загварын хажууд бичиж, хэн ч сүлжээг баталгаа өгдөг бүрэлдэхүүнтэй андуурахгүй байг.

Холбоотой нийтлэлүүд