کشینگ (Caching) چیست؟

کشینگ (Caching) چیست؟

کشینگ چیست؟

در محاسبات، کش یک لایه ذخیره‌سازی داده با سرعت بالا است که زیرمجموعه‌ای از داده‌ها، که معمولاً ماهیت موقتی دارند، را ذخیره می‌کند. این کار به این دلیل انجام می‌شود که درخواست‌های بعدی برای آن داده‌ها سریع‌تر از دسترسی به محل ذخیره‌سازی اصلی داده‌ها پاسخ داده شوند. کشینگ به شما امکان می‌دهد تا به طور کارآمد از داده‌هایی که قبلاً بازیابی یا محاسبه شده‌اند، مجدداً استفاده کنید.

کشینگ چگونه کار می‌کند؟

داده‌های موجود در کش معمولاً در سخت‌افزار با دسترسی سریع مانند RAM (حافظه با دسترسی تصادفی) ذخیره می‌شوند و ممکن است در ارتباط با یک جزء نرم‌افزاری نیز استفاده شوند. هدف اصلی کش افزایش عملکرد بازیابی داده‌ها با کاهش نیاز به دسترسی به لایه ذخیره‌سازی کندتر زیرین است.

کش معمولاً با معاوضه ظرفیت با سرعت، یک زیرمجموعه از داده‌ها را به طور موقت ذخیره می‌کند، در مقابل پایگاه‌های داده که داده‌هایشان معمولاً کامل و بادوام است.

RAM و موتورهای درون حافظه

به دلیل نرخ درخواست بالا یا IOPS (عملیات ورودی/خروجی در ثانیه) که توسط RAM و موتورهای درون حافظه پشتیبانی می‌شود، کشینگ منجر به بهبود عملکرد بازیابی داده‌ها و کاهش هزینه در مقیاس بزرگ می‌شود. برای پشتیبانی از همین مقیاس با پایگاه‌های داده سنتی و سخت‌افزار مبتنی بر دیسک، منابع بیشتری مورد نیاز خواهد بود. این منابع اضافی هزینه را افزایش می‌دهند و همچنان نمی‌توانند به عملکرد با تأخیر کم ارائه شده توسط یک کش درون حافظه دست یابند.

کاربردها

کش‌ها می‌توانند در لایه‌های مختلف فناوری از جمله سیستم‌های عامل، لایه‌های شبکه از جمله شبکه‌های تحویل محتوا (CDN) و DNS، برنامه‌های وب و پایگاه‌های داده اعمال و استفاده شوند. می‌توانید از کشینگ برای کاهش قابل توجه تأخیر و بهبود IOPS برای بسیاری از حجم‌های کاری با خواندن سنگین، مانند پورتال‌های پرسش و پاسخ، بازی‌ها، اشتراک‌گذاری رسانه و شبکه‌های اجتماعی استفاده کنید. اطلاعات کش شده می‌تواند شامل نتایج پرس و جوهای پایگاه داده، محاسبات با بار محاسباتی سنگین، درخواست‌ها/پاسخ‌های API و مصنوعات وب مانند HTML، JavaScript و فایل‌های تصویری باشد. حجم‌های کاری با بار محاسباتی سنگین که مجموعه‌های داده را دستکاری می‌کنند، مانند موتورهای توصیه و شبیه‌سازی‌های محاسبات با کارایی بالا نیز از یک لایه داده درون حافظه که به عنوان کش عمل می‌کند، سود می‌برند. در این برنامه‌ها، مجموعه‌های داده بسیار بزرگ باید به صورت بلادرنگ در سراسر خوشه‌هایی از ماشین‌ها که می‌توانند صدها گره را شامل شوند، دسترسی پیدا کنند. به دلیل سرعت سخت‌افزار زیرین، دستکاری این داده‌ها در یک حافظه مبتنی بر دیسک، یک گلوگاه مهم برای این برنامه‌ها است.

الگوهای طراحی

در یک محیط محاسباتی توزیع شده، یک لایه کشینگ اختصاصی، سیستم‌ها و برنامه‌ها را قادر می‌سازد تا به طور مستقل از کش و با چرخه‌های عمر خود بدون خطر تأثیرگذاری بر کش اجرا شوند. کش به عنوان یک لایه مرکزی عمل می‌کند که می‌تواند از سیستم‌های مختلف با چرخه عمر و توپولوژی معماری خود به آن دسترسی پیدا کرد. این امر به ویژه در سیستمی که گره‌های برنامه می‌توانند به صورت پویا مقیاس بالا و پایین شوند، مرتبط است. اگر کش روی همان گره‌ای قرار داشته باشد که برنامه یا سیستم‌های استفاده کننده از آن قرار دارند، مقیاس‌بندی ممکن است بر یکپارچگی کش تأثیر بگذارد. علاوه بر این، هنگامی که از کش‌های محلی استفاده می‌شود، آنها فقط به برنامه محلی که داده‌ها را مصرف می‌کند، سود می‌رسانند. در یک محیط کشینگ توزیع شده، داده‌ها می‌توانند در چندین سرور کش توزیع شده و در یک مکان مرکزی برای بهره‌مندی همه مصرف کنندگان آن داده‌ها ذخیره شوند.

بهترین شیوه‌های کشینگ

هنگام پیاده‌سازی یک لایه کش، درک اعتبار داده‌های کش شده مهم است. یک کش موفق منجر به نرخ ضربه بالا می‌شود، به این معنی که داده‌ها هنگام واکشی وجود داشته‌اند. هنگامی که داده‌های واکشی شده در کش وجود نداشته باشند، یک خطای کش رخ می‌دهد. کنترل‌هایی مانند TTL (زمان زنده ماندن) می‌توانند برای منقضی کردن مناسب داده‌ها اعمال شوند. ملاحظه دیگر ممکن است این باشد که آیا محیط کش باید از دسترسی بالا برخوردار باشد یا خیر، که می‌تواند توسط موتورهای درون حافظه مانند Redis برآورده شود. در برخی موارد، یک لایه درون حافظه می‌تواند به عنوان یک لایه ذخیره‌سازی داده مستقل در مقابل کش کردن داده‌ها از یک مکان اصلی استفاده شود. در این سناریو، تعیین یک RTO (هدف زمان بازیابی – مدت زمانی که طول می‌کشد تا از یک قطعی بازیابی شود) و RPO (هدف نقطه بازیابی – آخرین نقطه یا تراکنش ثبت شده در بازیابی) مناسب بر روی داده‌های موجود در موتور درون حافظه برای تعیین اینکه آیا این مناسب است یا خیر، مهم است. استراتژی‌های طراحی و ویژگی‌های موتورهای مختلف درون حافظه می‌توانند برای برآورده کردن بیشتر الزامات RTO و RPO اعمال شوند.

لایه سمت کلاینت (Client-Side) DNS وب (Web) برنامه (App) پایگاه داده (Database)
مورد استفاده تسریع بازیابی محتوای وب از وب‌سایت‌ها (مرورگر یا دستگاه) تبدیل دامنه به IP تسریع بازیابی محتوای وب از سرورهای وب/برنامه. مدیریت جلسات وب (سمت سرور) تسریع عملکرد برنامه و دسترسی به داده‌ها کاهش تأخیر مرتبط با درخواست‌های پرس و جوی پایگاه داده
فناوری‌ها هدرهای کش HTTP، مرورگرها سرورهای DNS هدرهای کش HTTP، CDNها، پراکسی‌های معکوس، شتاب‌دهنده‌های وب، فروشگاه‌های کلید/مقدار فروشگاه‌های داده کلید/مقدار، کش‌های محلی بافرهای پایگاه داده، فروشگاه‌های داده کلید/مقدار
راه حل‌ها مختص مرورگر Amazon Route 53 Amazon CloudFront، ElastiCache for Redis، ElastiCache for Memcached، راه حل‌های شریک چارچوب‌های برنامه، ElastiCache for Redis، ElastiCache for Memcached، راه حل‌های شریک ElastiCache for Redis، ElastiCache for Memcached

مزایای کشینگ

بهبود عملکرد برنامه

از آنجایی که حافظه چندین مرتبه سریع‌تر از دیسک (مغناطیسی یا SSD) است، خواندن داده‌ها از کش درون حافظه بسیار سریع (زیر میلی‌ثانیه) است. این دسترسی به داده‌ها با سرعت بسیار بیشتر، عملکرد کلی برنامه را بهبود می‌بخشد.

کاهش هزینه پایگاه داده

یک نمونه کش واحد می‌تواند صدها هزار IOPS (عملیات ورودی/خروجی در ثانیه) را ارائه دهد و به طور بالقوه جایگزین تعدادی از نمونه‌های پایگاه داده شود، بنابراین هزینه کل را کاهش می‌دهد. این امر به ویژه اگر پایگاه داده اصلی بر اساس توان عملیاتی هزینه دریافت کند، اهمیت بیشتری پیدا می‌کند. در این موارد، صرفه‌جویی در قیمت می‌تواند ده‌ها درصد باشد.

عملکرد قابل پیش‌بینی

یک چالش رایج در برنامه‌های مدرن، مقابله با زمان‌های اوج استفاده از برنامه است. نمونه‌هایی از آن شامل برنامه‌های اجتماعی در طول سوپر بول یا روز انتخابات، وب‌سایت‌های تجارت الکترونیک در طول جمعه سیاه و غیره است. افزایش بار روی پایگاه داده منجر به تأخیر بیشتر در دریافت داده‌ها می‌شود و عملکرد کلی برنامه را غیرقابل پیش‌بینی می‌کند. با استفاده از یک کش درون حافظه با توان عملیاتی بالا، می‌توان این مشکل را کاهش داد.

حذف نقاط داغ پایگاه داده

در بسیاری از برنامه‌ها، احتمالاً زیرمجموعه کوچکی از داده‌ها، مانند نمایه یک فرد مشهور یا یک محصول محبوب، بیشتر از بقیه مورد دسترسی قرار می‌گیرد. این می‌تواند منجر به ایجاد نقاط داغ در پایگاه داده شما شود و ممکن است نیاز به تخصیص بیش از حد منابع پایگاه داده بر اساس الزامات توان عملیاتی برای داده‌های پرکاربردتر داشته باشد. ذخیره کلیدهای رایج در یک کش درون حافظه، نیاز به تخصیص بیش از حد را کاهش می‌دهد و در عین حال عملکرد سریع و قابل پیش‌بینی را برای داده‌های پرکاربردتر فراهم می‌کند.

افزایش توان عملیاتی خواندن (IOPS)

علاوه بر تأخیر کمتر، سیستم‌های درون حافظه نسبت به یک پایگاه داده مبتنی بر دیسک قابل مقایسه، نرخ درخواست بسیار بالاتری (IOPS) را نیز ارائه می‌دهند. یک نمونه واحد که به عنوان یک کش جانبی توزیع شده استفاده می‌شود، می‌تواند صدها هزار درخواست در ثانیه را پاسخ دهد.

موبایل

برنامه‌های موبایل با توجه به پذیرش سریع دستگاه‌های مصرفی و کاهش استفاده از تجهیزات کامپیوتری سنتی، یک بخش بازار با رشد فوق‌العاده سریع هستند. چه برای بازی‌ها، برنامه‌های تجاری، برنامه‌های بهداشتی و غیره، تقریباً هر بخش بازار امروزه یک برنامه کاربردی سازگار با موبایل دارد. از دیدگاه توسعه برنامه، ساخت برنامه‌های موبایل بسیار شبیه به ساخت هر نوع برنامه دیگری است. شما همان زمینه‌های نگرانی، لایه ارائه، لایه تجاری و لایه داده را دارید. در حالی که فضای صفحه نمایش و ابزارهای توسعه شما متفاوت است، ارائه یک تجربه کاربری عالی یک هدف مشترک در بین همه برنامه‌ها است. با استراتژی‌های کشینگ مؤثر، برنامه‌های موبایل شما می‌توانند عملکرد مورد انتظار کاربران شما را ارائه دهند، به طور گسترده مقیاس‌پذیر باشند و هزینه کلی شما را کاهش دهند.

شبکه تحویل محتوا (CDN)

هنگامی که ترافیک وب شما از نظر جغرافیایی پراکنده است، تکثیر کل زیرساخت شما در سراسر جهان همیشه امکان‌پذیر و قطعاً مقرون به صرفه نیست. CDN به شما این امکان را می‌دهد که از شبکه جهانی مکان‌های لبه‌ای خود برای ارائه یک نسخه کش شده از محتوای وب مانند فیلم‌ها، صفحات وب، تصاویر و غیره به مشتریان خود استفاده کنید. برای کاهش زمان پاسخ، CDN از نزدیکترین مکان لبه‌ای به مشتری یا مکان درخواست مبدأ برای کاهش زمان پاسخ استفاده می‌کند. توان عملیاتی به طور چشمگیری افزایش می‌یابد زیرا دارایی‌های وب از کش تحویل داده می‌شوند. برای داده‌های پویا، بسیاری از CDNها را می‌توان برای بازیابی داده‌ها از سرورهای مبدأ پیکربندی کرد.

کشینگ سیستم نام دامنه (DNS)

هر درخواست دامنه که در اینترنت انجام می‌شود، اساساً از سرورهای کش DNS برای یافتن آدرس IP مرتبط با نام دامنه پرس و جو می‌کند. کشینگ DNS می‌تواند در سطوح مختلف از جمله در سیستم عامل، از طریق ISPها و سرورهای DNS رخ دهد.

مدیریت جلسه

جلسات HTTP حاوی داده‌های کاربری مبادله شده بین کاربران سایت شما و برنامه‌های وب شما مانند اطلاعات ورود به سیستم، لیست‌های سبد خرید، موارد قبلاً مشاهده شده و غیره است. مدیریت مؤثر جلسات HTTP با به خاطر سپردن تنظیمات کاربر و ارائه زمینه کاربری غنی برای ارائه تجربیات کاربری عالی در وب‌سایت شما بسیار مهم است. با معماری‌های مدرن برنامه، استفاده از یک فروشگاه داده متمرکز برای مدیریت جلسه، به دلایل مختلف از جمله ارائه تجربیات کاربری یکپارچه در تمام سرورهای وب، دوام بهتر جلسه زمانی که ناوگان سرورهای وب شما الاستیک است و دسترسی بالاتر زمانی که داده‌های جلسه در سرورهای کش تکثیر می‌شوند، راه حل ایده‌آل است.

رابط‌های برنامه‌نویسی کاربردی (API)

امروزه، بیشتر برنامه‌های وب بر اساس APIها ساخته شده‌اند. یک API معمولاً یک سرویس وب RESTful است که از طریق HTTP قابل دسترسی است و منابعی را در معرض نمایش قرار می‌دهد که به کاربر امکان تعامل با برنامه را می‌دهد. هنگام طراحی یک API، در نظر گرفتن بار مورد انتظار روی API، مجوز دسترسی به آن، تأثیر تغییرات نسخه بر مصرف کنندگان API و مهمتر از همه سهولت استفاده از API، در میان ملاحظات دیگر، مهم است. همیشه اینطور نیست که یک API نیاز به نمونه‌سازی منطق تجاری و/یا ایجاد درخواست‌های backend به یک پایگاه داده در هر درخواست داشته باشد. گاهی اوقات ارائه یک نتیجه کش شده از API، بهینه‌ترین و مقرون به صرفه‌ترین پاسخ را ارائه می‌دهد. این امر به ویژه زمانی صادق است که بتوانید پاسخ API را مطابق با نرخ تغییر داده‌های زیرین کش کنید. به عنوان مثال، فرض کنید یک API لیست محصولات را در اختیار کاربران خود قرار داده‌اید و دسته‌های محصولات شما فقط یک بار در روز تغییر می‌کنند. با توجه به اینکه پاسخ به درخواست دسته بندی محصولات در طول روز هر بار که یک تماس با API شما برقرار می‌شود یکسان خواهد بود، کافی است پاسخ API خود را برای آن روز کش کنید. با کش کردن پاسخ API خود، فشار بر زیرساخت خود از جمله سرورهای برنامه و پایگاه‌های داده خود را از بین می‌برید. همچنین از زمان پاسخگویی سریعتر بهره‌مند می‌شوید و یک API با عملکرد بهتر ارائه می‌دهید.کشینگ برای محیط‌های ترکیبیدر یک محیط ابری ترکیبی، ممکن است برنامه‌هایی داشته باشید که در فضای ابری قرار دارند و نیاز به دسترسی مکرر به یک پایگاه داده محلی دارند. توپولوژی‌های شبکه متعددی وجود دارد که می‌توان از آنها برای ایجاد اتصال بین محیط ابری و محیط محلی شما از جمله VPN و Direct Connect استفاده کرد. و در حالی که تأخیر از VPC به مرکز داده محلی شما ممکن است کم باشد، ممکن است بهینه باشد که داده‌های محلی خود را در محیط ابری خود کش کنید تا عملکرد کلی بازیابی داده‌ها تسریع شود.کشینگ وبهنگام ارائه محتوای وب به بینندگان خود، بخش زیادی از تأخیر مربوط به بازیابی دارایی‌های وب مانند تصاویر، اسناد html، ویدیو و غیره را می‌توان با کش کردن آن مصنوعات و حذف خواندن از دیسک و بار سرور به میزان زیادی کاهش داد. تکنیک‌های مختلف کشینگ وب را می‌توان هم در سمت سرور و هم در سمت کلاینت به کار برد. کشینگ وب در سمت سرور معمولاً شامل استفاده از یک پراکسی وب است که پاسخ‌های وب را از سرورهای وبی که در مقابل آن قرار دارد، حفظ می‌کند و به طور مؤثری بار و تأخیر آنها را کاهش می‌دهد. کشینگ وب در سمت کلاینت می‌تواند شامل کشینگ مبتنی بر مرورگر باشد که یک نسخه کش شده از محتوای وب بازدید شده قبلی را حفظ می‌کند. برای اطلاعات بیشتر در مورد کشینگ وب، اینجا را کلیک کنید.

کش عمومی

دسترسی به داده‌ها از حافظه چندین مرتبه سریع‌تر از دسترسی به داده‌ها از دیسک یا SSD است، بنابراین بهره‌گیری از داده‌ها در کش مزایای زیادی دارد. برای بسیاری از موارد استفاده که نیازی به پشتیبانی از داده‌های تراکنشی یا دوام مبتنی بر دیسک ندارند، استفاده از یک فروشگاه کلید-مقدار درون حافظه به عنوان یک پایگاه داده مستقل، روشی عالی برای ساخت برنامه‌های با عملکرد بالا است. علاوه بر سرعت، برنامه از توان عملیاتی بالا با قیمت مقرون به صرفه نیز بهره‌مند می‌شود. داده‌های قابل ارجاع مانند گروه‌بندی محصولات، فهرست‌های دسته‌بندی، اطلاعات پروفایل و غیره، موارد استفاده عالی برای یک کش عمومی هستند. برای اطلاعات بیشتر در مورد کش عمومی، اینجا را کلیک کنید.

کش یکپارچه

یک کش یکپارچه، یک لایه درون حافظه است که به طور خودکار داده‌های پرکاربرد را از پایگاه داده اصلی کش می‌کند. معمولاً، پایگاه داده زیرین از کش برای ارائه پاسخ به درخواست ورودی پایگاه داده استفاده می‌کند، به شرطی که داده‌ها در کش موجود باشند. این کار با کاهش تأخیر درخواست و کاهش استفاده از CPU و حافظه در موتور پایگاه داده، عملکرد پایگاه داده را به طور چشمگیری افزایش می‌دهد. یک ویژگی مهم کش یکپارچه این است که داده‌های کش شده با داده‌های ذخیره شده روی دیسک توسط موتور پایگاه داده سازگار هستند.

موبایل

برنامه‌های موبایل با توجه به پذیرش سریع دستگاه‌های مصرفی و کاهش استفاده از تجهیزات کامپیوتری سنتی، یک بخش بازار با رشد فوق‌العاده سریع هستند. چه برای بازی‌ها، برنامه‌های تجاری، برنامه‌های بهداشتی و غیره، تقریباً هر بخش بازار امروزه یک برنامه کاربردی سازگار با موبایل دارد. از دیدگاه توسعه برنامه، ساخت برنامه‌های موبایل بسیار شبیه به ساخت هر نوع برنامه دیگری است. شما همان زمینه‌های نگرانی، لایه ارائه، لایه تجاری و لایه داده را دارید. در حالی که فضای صفحه نمایش و ابزارهای توسعه شما متفاوت است، ارائه یک تجربه کاربری عالی یک هدف مشترک در بین همه برنامه‌ها است. با استراتژی‌های کشینگ مؤثر، برنامه‌های موبایل شما می‌توانند عملکرد مورد انتظار کاربران شما را ارائه دهند، به طور گسترده مقیاس‌پذیر باشند و هزینه کلی شما را کاهش دهند.

AWS Mobile Hub یک کنسول است که یک تجربه یکپارچه برای کشف، پیکربندی و دسترسی به سرویس‌های ابری AWS برای ساخت، آزمایش و نظارت بر استفاده از برنامه‌های موبایل فراهم می‌کند.

اینترنت اشیا (IoT)

اینترنت اشیا مفهومی است که در پس جمع‌آوری و تحویل اطلاعات از یک دستگاه و دنیای فیزیکی از طریق حسگرهای دستگاه به اینترنت یا برنامه‌ای که از داده‌ها استفاده می‌کند، قرار دارد. ارزش IoT در توانایی درک داده‌های جمع‌آوری شده در فواصل زمانی تقریباً بلادرنگ است که در نهایت به سیستم و برنامه‌های مصرف کننده امکان می‌دهد به سرعت به آن داده‌ها پاسخ دهند. به عنوان مثال، دستگاهی را در نظر بگیرید که مختصات GPS خود را منتقل می‌کند. برنامه IoT شما می‌تواند با پیشنهاد نقاط مورد علاقه نسبت به مجاورت آن مختصات پاسخ دهد. علاوه بر این، اگر تنظیمات برگزیده مربوط به کاربر دستگاه را ذخیره کرده باشید، می‌توانید آن توصیه‌ها را متناسب با آن فرد تنظیم کنید. در این مثال خاص، سرعت پاسخگویی برنامه به مختصات برای دستیابی به یک تجربه کاربری عالی بسیار مهم است. کشینگ می‌تواند نقش مهمی در اینجا ایفا کند، به عنوان مثال، نقاط مورد علاقه همراه با مختصات جغرافیایی می‌توانند در یک فروشگاه کلید-مقدار مانند Redis برای فعال کردن بازیابی سریع ذخیره شوند. از دیدگاه توسعه برنامه، شما اساساً می‌توانید برنامه IoT خود را طوری کدنویسی کنید که به هر رویدادی پاسخ دهد، به شرطی که یک روش برنامه‌نویسی برای انجام این کار وجود داشته باشد. ملاحظات مهمی که هنگام ساخت یک معماری IoT باید در نظر گرفته شوند عبارتند از زمان پاسخگویی مربوط به تجزیه و تحلیل داده‌های ورودی، طراحی یک راه حل که بتواند تعداد N دستگاه را مقیاس‌بندی کند و ارائه یک معماری مقرون به صرفه.

فناوری تبلیغات

برنامه‌های مدرن Ad Tech از نظر عملکرد بسیار پرتقاضا هستند. نمونه‌ای از یک حوزه رشد قابل توجه در AdTech، پیشنهاد قیمت بلادرنگ (RTB) است که رویکرد مبتنی بر مزایده برای معامله تبلیغات نمایشی دیجیتال در زمان واقعی و در دقیق‌ترین سطح نمایش است. RTB در سال ۲۰۱۵ روش معامله غالب بود و ۷۴.۰ درصد از تبلیغات خریداری شده به صورت برنامه‌ریزی شده یا ۱۱ میلیارد دلار در ایالات متحده (طبق تجزیه و تحلیل eMarketer) را به خود اختصاص داد. هنگام ساخت یک برنامه پیشنهاد قیمت بلادرنگ، یک میلی ثانیه می‌تواند تفاوت بین ارسال به موقع پیشنهاد و بی‌ربط شدن آن باشد. این بدان معناست که دریافت اطلاعات پیشنهاد از پایگاه داده باید بسیار سریع باشد. کشینگ پایگاه داده، که می‌تواند به جزئیات پیشنهاد در زیر میلی ثانیه دسترسی پیدا کند، یک راه حل عالی برای دستیابی به آن عملکرد بالا است.

بازی

تعامل، یک الزام اساسی برای تقریباً هر بازی مدرن است. هیچ چیز بیشتر از یک بازی کند یا غیر پاسخگو بازیکنان را ناامید نمی‌کند و چنین بازی‌هایی به ندرت موفق می‌شوند. الزام عملکرد برای بازی‌های چند نفره موبایل که در آن اقدامی که هر بازیکن انجام می‌دهد باید در زمان واقعی با دیگران به اشتراک گذاشته شود، حتی بیشتر است. کشینگ با ارائه پاسخ پرس و جو در زیر میلی ثانیه برای داده‌های پرکاربرد، نقش مهمی در روان نگه داشتن بازی ایفا می‌کند. همچنین برای کاهش مشکلات کلیدهای داغ زمانی که داده‌های یکسان چندین بار پرس و جو می‌شوند، مانند “۱۰ بازیکن برتر فعلی بر اساس امتیاز چه کسانی هستند؟” مفید است.

برای کسب اطلاعات بیشتر در مورد توسعه بازی‌ها در AWS اینجا را کلیک کنید.

رسانه

شرکت‌های رسانه‌ای اغلب با نیاز به انتقال حجم زیادی از محتوای ثابت به مشتریان خود با تعداد خوانندگان/بینندگان دائماً در حال تغییر سروکار دارند. نمونه‌ای از آن یک سرویس پخش ویدئو مانند Netflix یا Amazon Video است که حجم زیادی از محتوای ویدئویی را برای بینندگان پخش می‌کند. این یک تناسب عالی برای یک شبکه تحویل محتوا است، جایی که داده‌ها در مجموعه‌ای از سرورهای کش توزیع شده در سطح جهانی ذخیره می‌شوند. جنبه دیگر برنامه‌های رسانه‌ای این است که بار تمایل به افزایش ناگهانی و غیرقابل پیش‌بینی دارد. یک وبلاگ در یک وب‌سایت را تصور کنید که یک فرد مشهور به تازگی درباره آن توییت کرده است، یا وب‌سایت یک تیم فوتبال در طول سوپر بول. چنین افزایش تقاضای زیادی برای زیرمجموعه کوچکی از محتوا، چالشی برای اکثر پایگاه‌های داده است زیرا آنها در توان عملیاتی هر کلید محدود هستند. از آنجایی که حافظه توان عملیاتی بسیار بالاتری نسبت به دیسک دارد، یک کش پایگاه داده با هدایت مجدد خواندن‌ها به کش درون حافظه، مشکل را حل می‌کند.

تجارت الکترونیک

برنامه‌های مدرن تجارت الکترونیک در حال پیچیده‌تر شدن هستند و تجربه خرید شخصی‌سازی شده، از جمله توصیه‌های بلادرنگ بر اساس داده‌ها و سابقه خرید کاربر را ارائه می‌دهند. این برنامه‌ها اغلب شامل بررسی شبکه اجتماعی کاربر و ارائه توصیه بر اساس آنچه دوستانش پسندیده‌اند یا خریداری کرده‌اند نیز می‌شوند. در حالی که میزان داده‌های مورد نیاز برای پردازش در حال افزایش است، صبر مشتریان افزایش نمی‌یابد. بنابراین، حفظ عملکرد برنامه در زمان واقعی یک تجمل نیست، بلکه یک ضرورت است. یک استراتژی کشینگ به خوبی اجرا شده، جنبه‌ای حیاتی از عملکرد برنامه است و می‌تواند تفاوت بین موفقیت یا شکست یک برنامه، بین انجام یک فروش یا از دست دادن یک مشتری باشد.

رسانه‌های اجتماعی

برنامه‌های رسانه‌های اجتماعی جهان را تسخیر کرده‌اند. شبکه‌های اجتماعی مانند فیس‌بوک، توییتر، اینستاگرام و اسنپ‌چت تعداد زیادی کاربر دارند که حجم محتوای رو به رشدی را مصرف می‌کنند. هنگامی که یک کاربر فید خود را باز می‌کند، انتظار دارد آخرین محتوای شخصی‌سازی شده خود را تقریباً در زمان واقعی ببیند. این محتوای ثابت نیست زیرا هر کاربر دوستان، تصاویر، علایق و غیره متفاوتی دارد و پیچیدگی‌های مهندسی مورد نیاز پلتفرم زیرین را تشدید می‌کند. برنامه‌های رسانه‌های اجتماعی همچنین در زمان رویدادهای مهم سرگرمی، ورزشی و سیاسی بسیار مستعد افزایش ناگهانی استفاده هستند. چنین انعطاف‌پذیری در برابر افزایش ناگهانی و عملکرد در زمان واقعی از طریق لایه‌های متعدد کشینگ به دست می‌آید – از جمله شبکه تحویل محتوا برای محتوای ثابت مانند تصاویر پس زمینه، کش جلسه برای پیگیری داده‌های جلسه فعلی کاربر و کش پایگاه داده برای نگه داشتن داده‌های پرکاربرد مانند آخرین اخبار از نزدیکترین دوستان و چند تصویر آخر در دسترس.

بهداشت و سلامتی

صنعت بهداشت و درمان در حال گذراندن یک انقلاب دیجیتال است و مراقبت را برای تعداد بیشتری از بیماران در سراسر جهان در دسترس و قابل دسترسی قرار می‌دهد. برخی از برنامه‌ها به بیماران اجازه می‌دهند برای مشاوره ویدیویی پزشکان را ببینند و اکثر ارائه دهندگان اصلی برنامه‌هایی دارند که به بیماران اجازه می‌دهد نتایج آزمایش خود را ببینند و با کادر پزشکی تعامل داشته باشند. در زمینه سلامتی، تعداد زیادی برنامه وجود دارد که از ردیابی فعالیت حسگر خاص کاربر (به عنوان مثال FitBit و Jawbone) تا مربیگری جامع سلامتی و داده‌ها را شامل می‌شود. با توجه به ماهیت تعاملی این برنامه‌ها، نیاز به برنامه‌ها، تجارت و لایه‌های داده با عملکرد سریع باید مورد توجه قرار گیرد. با یک استراتژی کشینگ مؤثر، شما قادر خواهید بود عملکرد سریع را ارائه دهید، هزینه‌های زیرساخت کلی را کاهش دهید و با رشد استفاده خود مقیاس‌بندی کنید.

مالی و فناوری مالی

نحوه مصرف خدمات مالی در سال‌های اخیر به طور چشمگیری تکامل یافته است. برنامه‌ها شامل دسترسی به خدمات بانکی و بیمه، تشخیص تقلب، خدمات سرمایه‌گذاری، بهینه‌سازی بازارهای سرمایه از طریق الگوریتم‌های بلادرنگ و موارد دیگر است. ارائه دسترسی بلادرنگ به داده‌های مالی مشتری، اجازه دادن به او برای انجام تراکنش‌هایی مانند انتقال پول یا پرداخت‌ها چالش برانگیز است. اولاً، محدودیت‌های مشابهی مانند سایر برنامه‌ها اعمال می‌شود که در آن کاربر می‌خواهد تقریباً در زمان واقعی با برنامه تعامل داشته باشد. علاوه بر این، برنامه‌های مالی ممکن است الزامات بیشتری مانند افزایش امنیت و تشخیص تقلب را تحمیل کنند. یک معماری کارآمد، از جمله استراتژی کشینگ چند لایه، برای دستیابی به عملکرد مورد انتظار کاربران حیاتی است. بر اساس نیازهای برنامه، لایه‌های کشینگ شامل یک کش جلسه برای ذخیره داده‌های جلسه کاربر، یک شبکه تحویل محتوا برای ارائه محتوای ثابت و یک کش پایگاه داده برای داده‌های پرکاربرد مانند ۱۰ خرید اخیر مشتری خواهد بود.

آپاچی کاساندرا (Apache Cassandra) چیست؟
ابری شدن (Cloud Bursting) چیست؟

دیدگاهتان را بنویسید

سبد خرید
علاقه‌مندی‌ها
مشاهدات اخیر
دسته بندی ها