Table of Contents
درک چالش سازگاری داده ها در فروشگاه های داده بدون سرور
فروشگاه های داده های بی سرور مانند Amazon DynamoDB، Azure Cosmos DB و Google Cloud Firestore ارائه خودکار، قیمت گذاری با استفاده و کاهش هزینه عملیاتی، با این حال، طبیعت توزیع شده آنها به طور معمول قابلیت تجزیه و تحلیل اساسی را در قابلیت دسترسی داده ها معرفی می کند: هنگامی که یک برنامه بلافاصله پس از نوشتن آن، کاربر انتظار دارد آخرین ارزش را در یک سیستم توزیع شده جهانی ببیند، که به طور پیش فرض می تواند به ما اطمینان دهد:
سازگاری داده ها یک ویژگی یک اندازه نیست، کارهای مختلف نیاز به ضمانت های مختلف دارند.برای مثال، یک سیستم موجودی تجارت الکترونیک هرگز نباید اقلامی را که نیاز به سازگاری قوی برای به روز رسانی های سهام دارند، به طور جداگانه، می تواند چند ثانیه از تاخیر را تحمل کند در حالی که یک پست جدید منتشر می کند و الگوهای انعطاف پذیری مناسب را که سرور را تضمین می کند هنوز هم از پلت فرم استفاده می کند.
مدل های سازگاری در فروشگاه های بدون سرور
عدم ثبات قوی
ثبات قوی تضمین می کند که هر خواندن آخرین نوشتن را در سیستم های بدون سرور، اغلب با خواندن از نسخه اولیه یا با استفاده از پروتکل های مبتنی بر افزونه، به دست می آید. خدمات مانند پشتیبانی DynamoDB پشتیبانی می کند (FLT:0 به طور قوی ثابت خوانده می شود [FLT 1 (با هزینه اضافی و تاخیر) و Azure Cosmos DB سازگاری قوی در سراسر جهان برای استفاده از حساب های چند منظوره، زمانی که نیاز به سیستم های اعتباری مالی کامل دارند، ارائه می دهد.
سازگاری رخدادی
سازگاری اتفاقی پیش فرض برای اکثر فروشگاه های داده های بدون سرور است، به این معنی که اگر هیچ نوشته جدیدی به یک آیتم داده ساخته نشود، در نهایت (معمولا در عرض چند ثانیه) همه ی نسخه ها به همان مقدار هم پیوسته خواهند شد.این مدل بهترین دسترسی و کمترین تاخیر را فراهم می کند.این ایده آل برای خواندن، کاتالوگ محصول و سیستم های ورود است که در آن می تواند برای پنجره های کوتاه قابل قبول باشد.
صلاحیت های Causal Consistency
سازگاری ذهنی، نظم عملیات علیت مرتبط را حفظ می کند (اگر عملیات A (تصویر پروفایل به روز) قبل از عمل B اتفاق می افتد (پس از یک نظر اشاره به آن تصویر)، هر ناظر قبل از B، این مدل بین سازگاری قوی و نهایی قرار می گیرد و توسط سرویس هایی مانند سفارش (FLT:0 Google Cloud Datastore پشتیبانی می شود.
بهترین روش ها برای حفظ تعادل
۱- مدل سازگاری مناسب برای هر عملیات را انتخاب کنید
به جای انتخاب یک سطح سازگاری برای کل برنامه، هر مطالعه انتقادی یا نوشتن عملیات با نیاز سازگاری خود را طراحی کنید.در DynamoDB، می توانید تصمیم گیری های خود را مشخص کنید و آنها را تحت محدودیت های زمانی برای اطمینان از اینکه در نهایت سازگار هستند، آزمایش کنید.
۲) استفاده از معاملات توزیع شده با Sagas یا دو مرحله متعهد
هنگامی که یک فرآیند کسب و کار چندین فروشگاه یا خدمات را در بر می گیرد، شما نیاز به یک مکانیسم برای حفظ اتمی دارید. معاملات توزیع شده - مانند پروتکل دو فاز متعهد (PC) - اطمینان حاصل کنید که هر طرف شرکت کننده یا متعهد یا با هم سقط می شود.
۳- پیاده سازی استراتژی های حل تعارض
Concurrent به همان اطلاعات در یک استقرار چند منطقه ای می تواند تعارض ایجاد کند (فروشگاه های بدون سرور معمولاً از نویسندگان-وین (LW) استفاده می کنند ، که آخرین بار را با استفاده از خط مشی های سفارشی همگام سازی می کند.
۴- عملیات های احتمالی و Retries
شکست شبکه یا خطاهای گذرا می تواند باعث ایجاد مجدد مشتری شود که ممکن است منجر به پردازش تکراری شود.عملیات طراحی برای هر درخواست (FLT:0)potent این خطر را حذف می کند، به عنوان مثال، اختصاص دادن یک کلید منحصر به فرد برای هر درخواست نوشتن؛ سرور می تواند درخواست های تکراری را که همان کلید را به اشتراک می گذارند، حذف کند.
نظارت بر یکپارچگی داده ها با جریان های تغییر و حسابرسی
در یک محیط سرورless، می توانید از (FLT:0) ثبت داده های تغییر (CDC) ویژگی هایی مانند DynamoDB Streams، فید تغییر تغییر Cosmos DB یا شنوندگان زمان واقعی Firestore برای نظارت بر همه تغییرات استفاده کنید. تنظیم یک lambda یا عملکرد ابر برای تأیید داده ها در متغیرi نگه داشتن پس از هر نمونه تغییر، برای شناسایی یک برنامه بانکی - همیشه می تواند حساب های حساب های حساب و تنظیم حساب های حساب کاربری را به طور منظم تنظیم کند.
بهینه سازی Data Replication برای مورد استفاده شما
تکثیر جهانی تاخیر را برای کاربران در سراسر جهان بهبود می بخشد، اما پنجره را برای عدم سازگاری افزایش می دهد.(FLT:2) با سطح سازگاری مناسب و استفاده از active-active] در مقابل مقایسه با برنامه های مشابه] سازگار با پردازش اطلاعات، به وضوح تنظیم شده از خدمات مشابه (FLT:3 Topology) اجازه می دهد تا محدودیت های فعال را کاهش دهد.
الگوهای معماری که حفظ صلاحیت
مسئولیت های Query Segregation (CQRS)
CQRS مدل های نوشتن را از مدل های خواندن جدا می کند، که به هر یک از آنها اجازه می دهد به طور مستقل بهینه سازی شوند.[۱] نوشتن ها به یک فروشگاه قوی می آیند؛ خواندن از پیش بینی های ثابت در نهایت ثابت است، این الگو به ویژه قدرتمند است که با یک event source [FLT: ۱] ترکیب شده است، که همه تغییرات دولتی به عنوان رویدادهای غیر قابل تغییر ذخیره می شوند.
رویداد Sourcing و Eventual Consistency
منبع رویداد، دنباله ای از رویدادها را به جای حالت فعلی ذخیره می کند، زیرا رویدادها تنها و غیر قابل تغییر هستند، آنها به طور طبیعی سازگار هستند. خدمات مانند DynamoDB یا Cosmos DB می توانند به عنوان فروشگاه های فرآیند مصرف کنندگان به صورت همزمان عمل کنند، در نهایت مدل های خواندن را در مورد نادر یک درگیری، شما می توانید جریان رویداد را از یک الگوی بازرسی شناخته شده دوباره پخش کنید. [۱۰]
الگوی Outbox برای پیام های قابل اعتماد
هنگامی که یک تابع بی سرور به یک پایگاه داده می نویسد و سپس یک پیام را به یک صف ارسال می کند، دو عملیات ممکن است اتمی نباشد. الگوی این را با ذخیره پیام در همان پایگاه داده توضیح می دهد. یک فرایند جداگانه (مانند یک پردازنده جریان) جعبه را بخوانید و پیام را منتشر می کند که تضمین می کند و یا پیام های داده را در همان آدرس های SaWSA ارسال می کند.
مدیریت موارد ویژه: یادداشت برداری و نوشتن های آفلاین
برنامه های تلفن همراه و IoT اغلب به صورت آفلاین و همگام سازی بعداً عمل می کنند. SDK های فروشنده بدون سرور با همگام سازی هایی که درگیری ها را از طریق حل کننده های درگیری سفارشی اداره می کنند، ثابت می کنند، به عنوان مثال، AWS AppSync با DynamoDB می تواند نسخه ها را بر اساس زمان بندی یا منطق تعریف شده مشتری ادغام کند.
برای سازگاری چند منطقه ای، از گروه های همگرایی استفاده کنید در صورت امکان، یک مفهوم پشتیبانی شده توسط Cosmos DB که موارد مرتبط را به گروه ها مرتبط می کند، بنابراین همیشه با هم تکرار می شوند، این مانع از سناریوهایی می شود که تصویر پروفایل کاربر در منطقه A به روز می شود، اما به روز رسانی زیستی آنها (در همان گروه) هنوز وارد منطقه B نشده است.
استراتژی های تست و اعتبار
اشکالات احتمالی اغلب تنها تحت بارهای توزیع شده قرار می گیرند. تست های ادغام نوشتن که علیه یک محرک واقعی یا نمونه ابر اجرا می شوند و شبیه سازی متن های همزمان و خواندن، ابزارهایی مانند Jepsen [FLT 1] می توانند تأیید کنند که فروشگاه داده های شما به درستی تحت پارتیشن های شبکه رفتار می کند، برای تولید، پیاده سازی و به تدریج تغییر در مسیر های جدید برای نظارت بر آنها (به عنوان معیار های قابل قبول) و تنظیم (به عنوان معیار های قابل قبول برای اندازه گیری از زمان (به عنوان مثال: Smax).
خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه خلاصه
سازگاری داده ها در فروشگاه های داده های بدون سرور نیازمند انتخاب های معماری آگاهانه است، با درک مدل های سازگاری موجود، استفاده از معاملات توزیع شده یا الگوی حماسه، طراحی عملیات های کنترل شده و استفاده از مکانیزم های حل تعارض، شما می توانید برنامه هایی را ایجاد کنید که هم قابل مقیاس و قابل اعتماد هستند. نظارت بر تضمین های سیستم خود را از طریق جریان های تغییر و حسابرسی، و اتخاذ الگوهای مانند CQRS، رویداد، و یکپارچگی کاربر، به عنوان بهترین شیوه های خدمات سازگار با آن را به عنوان یک روش های خدمات خدمات سازگار با آن را مدیریت کنید.