نحوه افزایش جریان داده ها در Coinbase با استفاده از AWS MSK
نویسنده: دان مور ، اریک سان ، LV Lu ، Xinyu Liu تیل ؛ دکتر: Coinbase از جریان مدیریت شده AWS برای کافکا (MSK) برای تأخیر بسیار کم ، ارتباط یکپارچه سرویس به سرویس ، ETL های داده و تغییر داده ضبط داده (CDC) استفاده می کند. مهندسان تیم پلتفرم داده ما این کار را
نویسنده: دان مور ، اریک سان ، LV Lu ، Xinyu Liu
تیل ؛ دکتر: Coinbase از جریان مدیریت شده AWS برای کافکا (MSK) برای تأخیر بسیار کم ، ارتباط یکپارچه سرویس به سرویس ، ETL های داده و تغییر داده ضبط داده (CDC) استفاده می کند. مهندسان تیم پلتفرم داده ما این کار را در کنفرانس Re: Invent نوامبر 2021 AWS ارائه می دهند.
خلاصه
در Coinbase ، روزانه میلیاردها رویداد را از منابع کاربر ، برنامه و رمزنگاری در محصولات خود می خوریم. داده های کلیک استریم از طریق سرویس گیرندگان وب و تلفن همراه جمع آوری شده و با استفاده از SDK روبی و Golang خانگی وارد کافکا می شوند. علاوه بر این ، جریانهای ضبط داده (CDC) از انواع پایگاه های داده از طریق Kafka Connect تغذیه می شوند. یکی از مصرف کنندگان اصلی این پیام های کافکا خط لوله داده ETL ما است که داده ها را برای تجزیه و تحلیل بیشتر توسط تیم داده های علم داده و تجزیه و تحلیل داده ها به انبار داده ما (دانه برفی) منتقل می کند. علاوه بر این ، خدمات داخلی در سراسر شرکت (مانند Prime Brokerage و Real Time Inventory Drift) برای اجرای برنامه های بسیار مهم و با تأخیر کم (زیر 10 ثانیه) به خوشه کافکا متکی هستند.
تیم ما با استفاده از کافکا (MSK) تحت مدیریت AWS ، سربار عملیاتی روزانه کافکا را برای نگهداری و بازیابی کارگزار کاهش داده و به ما این امکان را می دهد که زمان مهندسی خود را بر روی خواسته های اصلی کسب و کار متمرکز کنیم. ما افزایش و حذف خوشه های کافکا و ارتقاء کارگزاران را به آخرین نسخه کافکا ساده و ایمن با MSK پیدا کرده ایم. این پست معماری اصلی ما و اکوسیستم ابزار کاملی را که در MSK توسعه داده ایم نشان می دهد.
پیکربندی و مزایای MSK
پیکربندی:
- خوشه معتبر TLS
- 30 کارگزار گره در چندین AZ برای محافظت در برابر قطع کامل AZ
- پشتیبانی از چند خوشه
- ذخیره سازی/کارگزار 17 ترابایت
- SLA 99.9٪ uptime ماهانه از AWS
فواید:
از آنجا که MSK توسط AWS مدیریت می شود ، یکی از بزرگترین مزایا این است که ما می توانیم از این که مهندسین داخلی به طور فعال گره های ZooKeeper / بروکر را حفظ کنند ، جلوگیری کنیم. این کار بیش از 100 ساعت در کار مهندسی ما صرفه جویی کرده است زیرا AWS تمام به روزرسانی های وصله های امنیتی کارگزار ، بازیابی گره ها و ارتقاء نسخه کافکا را به صورت یکپارچه مدیریت می کند. همه به روزرسانی های کارگزار به صورت نورد انجام می شود (یک گره کارگزار در یک زمان به روز می شود) ، بنابراین هیچ عملیات خواندن/نوشتن کاربر تحت تأثیر قرار نمی گیرد.
علاوه بر این ، MSK پیکربندی های شبکه انعطاف پذیر را ارائه می دهد. خوشه ما دارای قوانین سختگیرانه ای برای ورود گروه های امنیتی است که سرویس ها می توانند مستقیماً با پورت های گره کارگزار ZooKeeper یا MSK ارتباط برقرار کنند. ادغام با Terraform امکان افزودن کارگزار بدون درز ، افزایش فضای دیسک ، به روزرسانی پیکربندی خوشه را بدون هیچ گونه خرابی فراهم می کند.
سرانجام ، AWS پشتیبانی عالی MSK Enterprise را ارائه داده است و چندین بار با ما ملاقات کرده است تا به سوالات شبکه ای خسته کننده و سوالات نویسندگی خوشه ای پاسخ دهد.
کارایی:
هنگام تغییر از Kinesis (تأخیر e2e m 200 میلی ثانیه) به کافکا (زمان تأخیر e2e <10msec <10 مگا ثانیه) ، زمان تاخیر پایان (e2e) (زمان تولید ، ذخیره و مصرف یک رویداد) را 95 ~ کاهش دادیم. تأخیر p50 e2e پشته کافکا برای بارهای حداکثر تا 100 کیلوبایت به طور متوسط <10 میلی ثانیه (مطابق با LinkedIn به عنوان معیار ، شرکت اصلی در پشت کافکا). این درها را برای برنامه های تاخیر فوق العاده کم مانند سرویس کارگزاری Prime ما باز می کند. تجزیه تاخیر کامل از آزمون های استرس در خوشه prod ما ، بر اساس اندازه بار ، در زیر ارائه شده است:
سرویس امنیتی اختصاصی کافکا (KSS)
آن چیست؟
سرویس امنیتی کافکا (KSS) ما همه موضوعات کنترل دسترسی (ACL) را در بر می گیرد. هنگام استقرار ، به طور خودکار همه تغییرات موضوع خواندن/نوشتن ACL را با گره های ZooKeeper MSK همگام می کند. به طور موثر ، اینگونه است که ما می توانیم دسترسی خواندن/نوشتن به موضوعات فردی کافکا را در سطح خدمات کنترل کنیم.
KSS همچنین درخواست های امضای گواهی (CSR) را با استفاده از AWS ACM API امضا می کند. برای انجام این کار ، ما از چارچوب احراز هویت سرویس به سرویس (S2S) داخلی خود استفاده می کنیم ، که به ما یک سرویس_اعتماد قابل اعتماد از مشتری می دهد. سپس از آن service_id استفاده می کنیم و آن را به عنوان نام متمایز در گواهی امضا شده به کاربر اضافه می کنیم.
MSK با داشتن یک گواهی امضا شده ، با دارا بودن نام ممتاز با service_id ، می تواند به راحتی از طریق مقاله TLS تشخیص دهد که آیا یک سرویس داده شده باید اجازه خواندن/نوشتن از یک موضوع خاص را داشته باشد. اگر سرویس مجاز نباشد (طبق فایل acl.yml ما و ACL هایی که در ZooKeeper تنظیم شده است) یک عمل را انجام دهد ، خطایی در سمت سرویس گیرنده رخ می دهد و هیچ عملیات خواندن/نوشتن کافکا رخ نمی دهد.
همچنین مورد نیاز است
به موازات KSS ، ما یک ظرف Docker مخصوص کافکا ساخته ایم که: 1) به سادگی به فایل موجود docker-compose 2 متصل می شود) 2-به طور خودکار CSR ها را در هنگام راه اندازی تولید می کند و برای دریافت گواهینامه های امضا شده با KSS تماس می گیرد و 3) اعتبارنامه ها را در Docker shared ذخیره می کند حجم خدمات کاربر ، که می تواند هنگام ایجاد یک تولیدکننده / مشتری مشتری کافکا مورد استفاده قرار گیرد ، بنابراین امکان ایجاد TLS وجود دارد.
ابزار جریان اطلاعات غنی
ما خوشه اصلی کافکا را با ابزارهای قدرتمند زیر گسترش داده ایم:
کافکا کانکت
این یک خوشه توزیع شده از گره های EC2 (گروه مقیاس پذیری خودکار AWS) است که تغییر داده ها (CDC) را روی انواع سیستم های پایگاه داده انجام می دهد. در حال حاضر ، ما از اتصال دهنده های منبع/سینک MongoDB ، Snowflake ، S3 و Postgres استفاده می کنیم. بسیاری از اتصالات دیگر از طریق Confluent در اینجا منبع باز هستند
کافدرپ
ما از محصول Kafdrop منبع باز برای نظارت درجه اول/پارتیشن و جبران آفست و بازرسی تأخیرهای مصرف کننده کاربر استفاده می کنیم: کد منبع در اینجا
کروز کنترل
این یکی دیگر از پروژه های منبع باز است که مجدداً پارالتیشن پارتیشن را برای حفظ بار خوشه / فضای دیسک حتی در همه گره های کارگزار فراهم می کند: کد منبع در اینجا
متجانس ثبت طرحواره
ما از Registry Schema منبع باز Confluent برای ذخیره تعاریف اولیه نسخه اصلی (که به طور گسترده در Coinbase gRPC استفاده می شود) استفاده می کنیم: کد منبع در اینجا
SDK داخلی کافکا
SDK سفارشی Golang Kafka که بر اساس نسخه segmentio/kafka توسعه یافته است ، برای پشته جریان ما بسیار مهم است. SDK داخلی با Schema Registry ما ادغام شده است تا تعاریف اولیه به طور خودکار در نوشته های تولید کننده ثبت یا به روز شوند. علاوه بر این ، SDK مزایای زیر را در اختیار کاربران قرار می دهد:
- مصرف کننده می تواند به طور خودکار بر اساس بایت جادویی و رکورد SR منطبق شود
- سرفصل پیام های پیام (مانند service_id ، event_time ، event_type) که به انجام ممیزی های کامل از معیارهای کامل بودن و تأخیر جریان رویداد کمک می کند
- این سرصفحه ها همچنین با جلوگیری از مجازات ضدعفونی کردن کل محموله ، فیلتر و مسیریابی پیام را تسریع می کنند
SDK جریان
فراتر از کافکا ، ممکن است هنوز نیاز به استفاده از راه حل های جریان دیگر از جمله Kinesis ، SNS و SQS داشته باشیم. ما یک Stream-SDK متحد را برای رفع نیازهای زیر معرفی کردیم:
- ارائه یک رویداد واحد به مقصدهای متعدد ، که اغلب به عنوان “fanout” یا “mirroring” توصیف می شود. به عنوان مثال ، ارسال همزمان پیام به موضوع کافکا و صف SQS
- دریافت پیام از یک موضوع کافکا ، ارسال پیام های جدید به موضوع دیگر یا حتی جریان Kinesis در نتیجه پردازش داده ها
- به عنوان مثال ، از مسیریابی پیام های پویا پشتیبانی می شود ، پیام ها می توانند در چندین خوشه کافکا یا مناطق AWS شکست بخورند
- ارائه پیکربندی های بهینه شده برای هر پلتفرم جریان برای به حداقل رساندن اشتباهات انسانی ، افزایش حداکثر توان و عملکرد و هشدار به کاربران در مورد تنظیمات نادرست
پیش رو
در افق یکپارچه سازی با دریاچه دلتا است که ETL های داده سریعتر و کارآمدتری را برای تحلیلگر داده ها و تیم های علم داده ما تقویت می کند. فراتر از این ، ما ظرفیت 3 برابر تعداد گره های کارگزار در خوشه prod خود (30 -> 90 گره) با افزایش تقاضای داخلی را داریم -این یک محدوده نرم است که می تواند از طریق بلیط پشتیبانی AWS افزایش یابد.
غذاهای آماده
به طور کلی ، ما از AWS MSK بسیار راضی بودیم. بازیابی خودکار کارگزار در حین وصله های امنیتی ، نگهداری و ارتقاء نسخه کافکا به همراه معیارهای پیشرفته نظارت بر سطح کارگزار / موضوع موضوع در مورد استفاده از فضای دیسک / CPU کارگزار ، صدها ساعت برای تهیه و نگهداری کارگزار و گره های ZooKeeper به تنهایی صرفه جویی کرده ایم. ادغام با Terraform پیکربندی ، استقرار و پیکربندی اولیه خوشه را نسبتاً بدون درد کرده است (از 3AZ برای خوشه خود استفاده کنید تا انعطاف پذیرتر شده و از ضربه ناشی از قطع کامل AZ جلوگیری شود).
عملکرد فراتر از انتظارات است ، با تاخیرهای کمتر از 10 ثانیه درها را برای برنامه های فوق العاده سریع باز می کند. زمان کارکرد خوشه صدا بوده و از 99.9 S SLA ارائه شده توسط AWS پیشی گرفته است. علاوه بر این ، هنگامی که هرگونه وصله امنیتی رخ می دهد ، همیشه به روش کارگزار نورد انجام می شود ، بنابراین هیچ عملیات خواندن/نوشتاری تحت تأثیر قرار نمی گیرد (ضریب تکرار پیش فرض موضوع را روی 3 تنظیم کنید ، به طوری که حداقل تکرارهای همگام سازی 2 حتی با خرابی گره 2 باشد).
ما با استفاده از Kafka Connect ، Confluent Schema Registry ، Kafdrop ، Cruise Control و موارد دیگر بدون مشکل ، در بالای MSK با قابلیت توسعه بسیار بالا یافته ایم. در نهایت ، MSK برای مهندسین ما که سیستم را حفظ می کنند (حفظ گره های سربار کمتر) و باز کردن قفل کاربران و خدمات داخلی ما با استفاده از جریان داده با تأخیر بسیار کم مفید بوده است.
اگر از طراحی و ساخت سیستم های پلتفرم داده بسیار مقیاس پذیر یا کار با مجموعه داده های پیشرفته بلاک چین (علم داده ، تجزیه و تحلیل داده ها ، ML) هیجان زده هستید ، در ماموریت ما در ایجاد سیستم مالی باز جهان به ما بپیوندید: صفحه مشاغلبه
نحوه افزایش حجم داده ها در Coinbase با استفاده از AWS MSK در ابتدا در The Coinbase Blog on Medium منتشر شد ، جایی که مردم با برجسته کردن و پاسخ دادن به این داستان به گفتگو ادامه می دهند.
آموزش مجازی مدیریت عالی حرفه ای کسب و کار Post DBA + مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه | آموزش مجازی مدیریت عالی و حرفه ای کسب و کار DBA + مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه | آموزش مجازی مدیریت کسب و کار MBA + مدرک معتبر قابل ترجمه رسمی با مهر دادگستری و وزارت امور خارجه |
مدیریت حرفه ای کافی شاپ | حقوقدان خبره | سرآشپز حرفه ای |
آموزش مجازی تعمیرات موبایل | آموزش مجازی ICDL مهارت های رایانه کار درجه یک و دو | آموزش مجازی کارشناس معاملات املاک_ مشاور املاک |
برچسب ها :
ناموجود- نظرات ارسال شده توسط شما، پس از تایید توسط مدیران سایت منتشر خواهد شد.
- نظراتی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
- نظراتی که به غیر از زبان فارسی یا غیر مرتبط با خبر باشد منتشر نخواهد شد.
ارسال نظر شما
مجموع نظرات : 0 در انتظار بررسی : 0 انتشار یافته : ۰