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

ما خدمات داده های راهنما را طراحی کرده ایم تا داده های راهنما را به سایر میکروسروسها مابر کنیم. این خدما در سالهای کدری طراحی نمایید لذت برده است جایگزینی متاهل و پیشبینیکارشت هزینه را در نظر داشتن. در این مطلب ما درباره گریامر راهنمایی آئیندهار پرسش می کنیم.

آنچه ما از آن شروع کردیم

شکلی سیستم سرویس داده های راهنمایی

سرویس داده های راهنمایی مانی به ذ63DB بعنوان استوری هزینه ساز از جایگزی مناخص کرده است و دو کشور چیکش ها - چیزه ای از درخواست زمان ازمان (ذخیره شونده در ازمان EC2) بعنوان ابترا به عنوان (قطعات مورد انتظار ثابت) و ردیس بعنوان (قطعات مورد انتظار همسان برای قطعات خواست برای قطعات برای قطعات DB و ورودی به طراف زمان بستردادی است) به عنوان با این قطعه صفر بسترداد شده است.

ما برای استراتژی کیش کناری انتخاب کردیم. بنابراین زمانی که درخواست مشتری بیاید، سرویس داده های راننده به صورت زیر پاسخ خواهد داد.

    اگر داده در کش حافظه داخلی (کش محلی) هست، سرویس مستقیماً پاسخ را برمی گرداند.اگر داده در کش حافظه داخلی وجود ندارد و در ردیس پیدا می شود، سرویس پاسخ را برمی گرداند و به صورت همزمان کش محلی را با داده ها از ردیس به روز می کند.اگر داده هم در کش حافظه داخلی و هم در ردیس وجود ندارد، سرویس پاسخ را با داده هایی که از پایگاه داده MySQL بارگیری شده و همزمان به صورت همزمان ردیس و کش محلی را به روز می کند.

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

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

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

در دسترسی به حافظه داخلی کش در هر نمونه در حال استفاده فعال داده ها ، می توانیم نرخ ضربه کش حافظه داخلی را بسیار افزایش دهیم و این کار را انجام دادیم.

اهداف طراحی آینه کش

ما اهداف طراحی زیر را تعیین کردیم:

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

قطعات سازنده

کتابخانه آینه کش همراه با سرویس داده های راننده در داخل هر یک از نمونه های EC2 خواهد بود. دو مؤلفه اصلی عبارتند از کش حافظه داخلی و تکثیر کننده.

کش حافظه داخلی

کش حافظه داخلی برای ذخیره چندین جفت کلید / مقدار در حافظه RAM استفاده می شود. برای هر جفت کلید / مقدار یک زمان معین است. ما می خواستیم از یک کش استفاده کنیم که نسبت ضربه بالا ، محدودیت حافظه ، تراکم بالا و همروندی را بتواند فراهم کند. پس از ارزیابی چندین گزینه ، از کتابخانه کش کنونی باز dgraph به عنوان کش حافظه داخلی محلی انتخاب کردیم. ما به ویژگی استفاده از سیاست ورودی TinyLFU برای اطمینان از ضربه بالا تحت تأثیر قرار گرفتیم.

معادله

پیشنگار مسئول کردن هر جفت کلید / مقدار از جمله های بین همه نمونه های زنده سرویس داده های راننده است. پیشنگار سه مؤلفه اصلی دارد: فروشگاه عضویت ، اعلان دهنده و سرور gRPC.

فروشگاه عضویت

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

دو نقشه - نودهای در یک AZ AWS مانند خودش (نود جاری سرویس داده های راننده که در آن آینه کش اجرا می شود) و نودهای در AZ های دیگر را نگه می دارد.

اطلاع دهنده

هر سرویس (داده راننده) یک نمونه تکی از آینه کش را اجرا می کند. بنابراین اصلاً هر نود یک اطلاع دهنده دارد.

    ترکیب چندین (جفت / کلید) را برای تشکیل یک بچ ارتقا دهید.به اشتراک گذاری به روزرسانی های بچ در میان همه نودهای در همان AZ با خود.به روزرسانی های بچ را به دقت یک اعلان گزار برای (نود) های مختلفی در AZ های مختلف ارسال می کنید که در عوض مسئول به روزرسانی تمام نودهای خود با جدیدترین دسته اطلاعات است. این تکنیک ارتباطی به کاهش هزینه انتقال داده های متقابل AZ کمک می کند.

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

سرور gRPC

یک سرور اختصاصی gRPC برای آینه کش اجرا می شود. نودهای مختلف سرویس داده های راننده از این سرور برای دریافت به روزرسانی های جدید نمونه استفاده می کنند.

ساختار هر موجودیت به روزرسانی کش به شرح زیر است.

پیام موجودیت {کلید'رشته' = 1؛ // کلید ورودی برای ورودی با شناسه[1]مقدار'بایت' = 2؛ // مقدار مرتبط با کلید[2]متادتا'متاد' = 3؛ // متاداتی که به موجودیت مرتبط است[3]بازسازیبازگشت'بازسازی' = 4






-4325