SmugMug دو پلتفرم عکس آنلاین بسیار بزرگ را اداره می کند، میکنند! و فلیکر، بیش از 100 میلیون مشتری را قادر می سازد تا ده ها میلیارد عکس را با خیال راحت ذخیره کنند، جستجو کنند، به اشتراک بگذارند و بفروشند. مشتریان با آپلود و جستجو در میان چندین دهه عکس کمک کردند تا جستجو را به زیرساخت حیاتی تبدیل کنند و از زمانی که SmugMug برای اولین بار استفاده شد به طور پیوسته رشد کرد. Amazon CloudSearch در سال 2012 ، به دنبال آن سرویس جستجوی باز آمازون از سال 2018، پس از رسیدن به میلیاردها سند و ترابایت فضای جستجو.
در اینجا، لی شپرد، مهندس کارکنان SmugMug، معماری جستجوی SmugMug را که برای انتشار، پر کردن، و انعکاس ترافیک زنده به چندین خوشه استفاده میشود، به اشتراک میگذارد. SmugMug از این خطوط لوله برای تعیین معیار، اعتبارسنجی و مهاجرت به پیکربندیهای جدید، از جمله نمونههای r6gd.2xlarge مبتنی بر Graviton از i3.2xlarge، همراه با آزمایش استفاده میکند. بدون سرور جستجوی باز آمازون. ما سه خط لوله را پوشش میدهیم که برای انتشار، پر کردن، و پرس و جو بدون معرفی الگوهای ترافیکی غیر واقعی و بدون هیچ تأثیری بر خدمات تولید استفاده میشوند.
دو قطعه اصلی معماری برای فرآیند حیاتی وجود دارد:
- یک منبع بادوام از حقیقت برای داده های شاخص. این بهترین تمرین است و بخشی از استراتژی پشتیبان ما برای داشتن یک فروشگاه بادوام فراتر از فهرست OpenSearch، و آمازون DynamoDB مقیاس پذیری و ادغام با AWS لامبدا که بسیاری از فرآیند را ساده می کند. ما از DynamoDB برای سایر خدمات غیرجستجو استفاده می کنیم، بنابراین این یک تناسب طبیعی بود.
- یک تابع Lambda برای انتشار داده ها از منبع حقیقت در OpenSearch. استفاده كردن نام مستعار تابع به اجرای چندین پیکربندی از یک عملکرد لامبدا به طور همزمان کمک می کند و برای همگام نگه داشتن داده ها کلیدی است.
انتشار
خط لوله انتشار از رویدادهایی مانند وارد کردن کلمات کلیدی یا شرحها توسط کاربر، آپلودهای جدید یا شناسایی برچسب از طریق هدایت میشود. شناسایی آمازون. این رویدادها با ترکیب دادههای چند فروشگاه دارایی دیگر پردازش میشوند Amazon Aurora MySQL Compatible Edition و سرویس ذخیره سازی ساده آمازون (Amazon S3)، قبل از نوشتن یک مورد در DynamoDB.
نوشتن در DynamoDB یک تابع انتشار لامبدا را از طریق آداپتور DynamoDB Streams Kinesis، که دسته ای از آیتم های به روز شده را از DynamoDB می گیرد و آنها را در OpenSearch فهرست می کند. استفاده از آداپتور DynamoDB Streams Kinesis مزایای دیگری مانند کاهش تعداد لامبداهای همزمان مورد نیاز دارد.
تابع Lambda انتشاراتی از متغیرهای محیطی برای تعیین دامنه و فهرست OpenSearch برای انتشار استفاده می کند. یک نام مستعار تولید برای نوشتن در دامنه OpenSearch تولیدی، خارج از جدول DynamoDB یا Kinesis Stream پیکربندی شده است.
هنگام آزمایش پیکربندیهای جدید یا مهاجرت، یک نام مستعار مهاجرت برای نوشتن در دامنه OpenSearch جدید پیکربندی میشود، اما از همان راهاندازی که نام مستعار تولیدی استفاده میکند، استفاده میکند. این امکان فهرستبندی دوگانه دادهها را در هر دو حوزه OpenSearch Service به طور همزمان فراهم میکند.
در اینجا نمونه ای از طرح جدول DynamoDB آورده شده است:
مقدار "LastUpdated" به عنوان نسخه سند هنگام نمایه سازی استفاده می شود و به OpenSearch اجازه می دهد هر گونه به روز رسانی خارج از دستور را رد کند.
پر کردن
اکنون که تغییرات در هر دو دامنه منتشر می شود، دامنه جدید (شاخص) باید با داده های تاریخی پر شود. برای تکمیل یک نمایه جدید ایجاد شده، ترکیبی از سرویس صف ساده آمازون (Amazon SQS) و DynamoDB استفاده می شود. یک اسکریپت یک صف SQS را با پیام هایی پر می کند که حاوی دستورالعمل هایی برای اسکن موازی بخشی از جدول DynamoDB.
صف SQS یک تابع Lambda را راه اندازی می کند که دستورالعمل های پیام را می خواند، دسته ای از آیتم ها را از بخش مربوطه از جدول DynamoDB واکشی می کند و آنها را در فهرست OpenSearch می نویسد. پیامهای جدید در صف SQS نوشته میشوند تا پیشرفت را در بخش پیگیری کنند. پس از اتمام بخش، هیچ پیام دیگری در صف SQS نوشته نمیشود و فرآیند خود به خود متوقف میشود.
همزمانی با تعداد بخشها تعیین میشود، با کنترلهای اضافی که توسط مقیاسبندی همزمانی لامبدا ارائه میشود. SmugMug قادر است بیش از 1 میلیارد سند را در ساعت در پیکربندی OpenSearch خود فهرست کند در حالی که تأثیری بر دامنه تولید ندارد.
یک اسکریپت مبتنی بر NodeJS AWS-SDK برای نمایش صف SQS استفاده می شود. در اینجا یک قطعه از گزینه های اسکریپت پیکربندی SQS آمده است:
همراه با فرمت پیام SQS حاصل:
آینه کاری
آخرین، ما جستجوی منعکس شده نتایج با ارسال یک جستجوی OpenSearch به یک صف SQS، علاوه بر دامنه تولید ما، اجرا می شود. صف SQS یک تابع Lambda را راه اندازی می کند که پرس و جو را به دامنه replica بازپخش می کند. نتایج جستجو از این درخواستها برای هیچ کاربری ارسال نمیشود، اما امکان تکرار بار تولید در سرویس OpenSearch تحت آزمایش را بدون تأثیر بر سیستمهای تولید یا مشتریان فراهم میکند.
نتیجه
هنگام ارزیابی دامنه یا پیکربندی OpenSearch جدید، معیارهای اصلی مورد علاقه ما، عملکرد تأخیر پرس و جو است، یعنی تأخیرهای گرفته شده (تأخیر در هر زمان)، و مهمتر از همه تأخیرهای جستجو. در حرکت خود به Graviton R6gd، شاهد 40 درصد تاخیر کمتری در P50-P99 بودیم، همراه با دستاوردهای مشابه در استفاده از CPU در مقایسه با i3 (با نادیده گرفتن هزینه های کمتر Graviton). یکی دیگر از مزایای قابل پیش بینی فشار حافظه JVM قابل پیش بینی تر و قابل نظارت تر با تغییرات جمع آوری زباله از اضافه شدن G1GC در R6gd و سایر نمونه های جدید بود.
با استفاده از این خط لوله، ما همچنین OpenSearch Serverless را آزمایش می کنیم و بهترین موارد استفاده آن را پیدا می کنیم. ما در مورد این سرویس هیجان زده هستیم و کاملاً قصد داریم به موقع یک معماری کاملاً بدون سرور داشته باشیم. منتظر نتایج باشید.
درباره نویسنده
لی شپرد یک مهندس نرم افزار کارکنان SmugMug است
آیدن بکیروف مدیر حساب فنی اصلی خدمات وب آمازون است
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- PlatoHealth. هوش بیوتکنولوژی و آزمایشات بالینی. دسترسی به اینجا.
- منبع: https://aws.amazon.com/blogs/big-data/smugmugs-durable-search-pipelines-for-amazon-opensearch-service/
- :است
- :نه
- 1
- 100
- 12
- 14
- 20
- 2012
- 2018
- 40
- 7
- 9
- a
- قادر
- درباره ما
- حساب
- اضافه
- اضافه
- اضافی
- پس از
- اجازه دادن
- اجازه دادن
- در امتداد
- همچنین
- آمازون
- آمازون خدمات وب
- an
- و
- دیگر
- هر
- معماری
- معماری
- هستند
- AS
- دارایی
- At
- شفق قطبی
- AWS
- پشتیبان گیری
- مستقر
- BE
- قبل از
- بودن
- محک
- سود
- مزایای
- بهترین
- خارج از
- بیلیون
- میلیاردها
- هر دو
- اما
- by
- نوشتن شرح تصاویر و
- تبادل
- مجموعه
- ترکیب
- ترکیب
- مقایسه
- سازگار
- تکمیل شده
- رقیب
- پیکر بندی
- پیکربندی
- شامل
- گروه شاهد
- متناظر
- هزینه
- پوشش
- پردازنده
- ایجاد شده
- بحرانی
- زیرساخت های بحرانی
- مشتریان
- داده ها
- دهه
- کشف
- مشخص کردن
- مشخص
- سند
- اسناد و مدارک
- دامنه
- حوزه
- رانده
- هر
- را قادر می سازد
- را قادر می سازد
- نقطه پایانی
- مهندس
- وارد شدن
- به طور کامل
- محیط
- اتر (ETH)
- ارزیابی
- حوادث
- مثال
- برانگیخته
- کمی از
- زمینه
- پیدا کردن
- نام خانوادگی
- مناسب
- به دنبال
- برای
- قالب
- از جانب
- کاملا
- تابع
- عایدات
- در حال رشد
- آیا
- ارتفاع
- کمک کرد
- کمک می کند
- تاریخی
- ساعت
- HTML
- HTTP
- HTTPS
- i
- i3
- ID
- تأثیر
- مهمتر
- in
- از جمله
- شاخص
- فهرستها
- شالوده
- نمونه ها
- دستورالعمل
- ادغام
- قصد
- علاقه مند
- به
- معرفی
- فراخوانی میکند
- اقلام
- تکرار
- ITS
- خود
- JPG
- نگاه داشتن
- نگهداری
- کلید
- کلید واژه ها
- برچسب
- بزرگ
- تاخیر
- راه اندازی
- انسوی کشتی که از باد در پناه است
- پسندیدن
- زنده
- بار
- خیلی
- کاهش
- اصلی
- حافظه
- پیام
- پیام
- متریک
- مهاجرت
- مهاجرت
- مهاجرت
- میلیون
- میلیون مشتری
- آینه
- بیش
- اکثر
- حرکت
- چندگانه
- خروجی
- نام
- از جمله
- طبیعی
- نیازهای
- جدید
- به تازگی
- بعد
- نه
- عدد
- of
- خاموش
- on
- آنلاین
- عمل می کند
- گزینه
- گزینه ها
- or
- دیگر
- ما
- موازی
- بخش
- الگوهای
- برای
- در صد
- کارایی
- عکس
- عکس
- قطعات
- خط لوله
- سیستم عامل
- افلاطون
- هوش داده افلاطون
- PlatoData
- قابل پیش بینی
- فشار
- قبلی
- اصلی
- روند
- پردازش
- تولید
- پیشرفت
- ارائه
- فراهم می کند
- منتشر کردن
- منتشر شده
- انتشار
- رسیدن به
- کاهش
- پاسخ
- درخواست
- ضروری
- نتیجه
- نتایج
- دویدن
- با خیال راحت
- همان
- دید
- مقیاس پذیری
- مقیاس گذاری
- خط
- جستجو
- جستجو
- دانه
- بخش
- بخش ها
- فروش
- در حال ارسال
- فرستاده
- بدون سرور
- سرویس
- خدمات
- اشتراک گذاری
- سهام
- مشابه
- ساده
- به طور همزمان
- پس از
- تنها
- قطعه
- So
- نرم افزار
- منبع
- کارکنان
- ماندن
- به طور پیوسته
- توقف
- ذخیره سازی
- opbevare
- پرده
- استراتژی
- جریان
- چنین
- سیستم های
- جدول
- طول می کشد
- فنی
- ده ها
- آزمون
- تست
- نسبت به
- که
- La
- منبع
- شان
- آنها
- آنجا.
- اینها
- این
- سه
- از طریق
- زمان
- به
- در زمان
- مسیر
- ترافیک
- ماشه
- حقیقت
- دور زدن
- دو
- زیر
- به روز شده
- به روز رسانی
- آپلود
- URL
- استفاده
- استفاده کنید
- موارد استفاده
- استفاده
- کاربر
- استفاده
- با استفاده از
- تصدیق
- ارزش
- نسخه
- بسیار
- بود
- we
- وب
- خدمات وب
- خوش آمد
- چی
- چه زمانی
- در حین
- با
- بدون
- نوشتن
- نوشته
- کتبی
- زفیرنت
- صفر