رشد نیاز به API های مقیاس پذیر در مدیریت داده های مهندسی

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

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

درک مقیاس پذیری در زمینه داده های مهندسی

مقیاس پذیری فقط در مورد مدیریت کاربران بیشتر نیست.در سیستم های داده مهندسی، به معنی پشتیبانی از آپلود فایل بزرگتر، نمایش های فضایی پیچیده تر یا زمان سری، بازیابی همزمان شبیه سازی نتایج و ادغام با ابزارهای خارجی است. API مقیاس پذیر باید هر دو رشد عمودی ( سرورهای قدرتمندتر) و رشد افقی (بار توزیع در بسیاری از سرورها) را در بر گیرد.

داده های مهندسی اغلب شامل فایل های باینری (مدل های CAD، ابرها نقطه)، متاداده ساختاری (BOMs، تاریخ تجدید نظر)، و تله تقارن زمان واقعی است.هر نوع الزامات عملکرد مختلف را اعمال می کند.

اصول طراحی هسته برای API های مقیاس پذیر

خدمات و خدمات Microservices

به جای یک API تکlithic، عملکرد تجزیه شده به خدمات کوچک و مستقل قابل استقرار است.به عنوان مثال، خدمات جداگانه برای ذخیره سازی فایل، پرس و جو متا، احراز هویت کاربر و ارکستر جریان کار، این اجازه می دهد هر تیم به اندازه گیری تنها خدمات که تنگنا را تجربه می کند. استفاده از containertion مانند Kubernetes برای مدیریت مقیاس پذیری در هر سرویس.

همچنین شتاب نامه را ساده می کند: شما می توانید یک سرویس را بدون استفاده از کل API به روز کنید، از میکروسرویس های بیش از حد ریز دانه ای که سربار شبکه را افزایش می دهند، برای انسجام در اطراف دامنه های مهندسی (به عنوان مثال، خدمات سند، خدمات شبیه سازی) جلوگیری کنید.

عدم ثبات در مقیاس افقی

برای اضافه کردن سرورهای API بیشتر در پشت یک تعادل بار، هر درخواست باید خود-مثبت باشد.از ذخیره کردن حالت جلسه در سرور اجتناب کنید، در عوض، از تأیید هویت مبتنی بر توکن (JWT) استفاده کنید که تمام زمینه کاربر ضروری را حمل می کند، بی طرفی به شما اجازه می دهد تا موارد جدید را در طول بارگذاری اوج بچرخانید و آنها را خاموش کنید زمانی که ترافیک برای مهندسی یارانه می دهد، بی طرفی همچنین باعث کاهش کاتتر زدایی از سرور می شود زیرا کاربران را از منابع مشابه جدا نمی کند.

مدیریت داده های کارآمد: Pagination، Filtering و Caching

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

Caching ضروری است. پیاده سازی هدرهای ذخیره سازی HTTP (، و اختیاری یک پروکسی معکوس مانند ردیس یا وارن برای متاداده های مکرر دسترسی یافته، استفاده از CDN، با این حال، داده های مهندسی اغلب نیازهای سازگاری دقیق دارند (به عنوان مثال، قفل های تجدید نظر)؛ استراتژی های حافظه ای که به مرزهای تراکنش احترام می گذارند.

استراتژی های Load Balance

توزیع درخواست های ورودی در چندین مورد API.استفاده از یک تعادل بار لایه 7 (به عنوان مثال، NGINX، AWS ALB) که می تواند هدرهای HTTP و مسیر را بر اساس مسیر یا مشتری بخواند.

همچنین تعادل بار جهانی را با شکست مبتنی بر DNS در نظر بگیرید تا به تیم های مهندسی در مناطق مختلف بدون عبور از اقیانوس ها برای هر درخواست کمک کند. ارائه دهندگان ابر شتاب دهنده های جهانی را ارائه می دهند که ترافیک را به نزدیکترین نقطه انتهایی سالم هدایت می کنند.

پردازش همزمان و پیام Queues

عملیات طولانی مدت مانند وارد کردن فایل های بزرگ CAD یا اجرای یک چک انطباق نباید پاسخ API را مسدود کند و این وظایف را به یک صف پیام (RabbitMQ، آمازون SQS یا کافکا) ارسال کند. API یک (FLT:3) را با یک شناسه شغلی باز می کند و مشتری می تواند یک نقطه پایانی را بررسی کند یا هنگامی که پردازش انجام می شود، یک وب را دریافت کند.

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

انتخاب پروتکل API مناسب: REST در مقابل GraphQL

RESTful APIها یک انتخاب محکم برای عملیات CRUD در منابع مهندسی به دلیل الگوهای URL قابل پیش بینی و قدرتمند HTTP caching باقی مانده است.از کد های وضعیت استاندارد استفاده کنید و از قرار دادن بیش از دو یا سه سطح برای جلوگیری از مسائل عملکردی اجتناب کنید. REST به ویژه برای بارگذاری فایل / بارگیری فایل خوب است [LT: ۱] زیرا آن را به دلیل استفاده از مذاکره محتوای HTTP ساخته شده است.

گرافQL ارائه می دهد انعطاف پذیری برای پرسش های پیچیده، لانه دار - به عنوان مثال، یک پروژه با تمام اسناد، اعضای تیم، و آخرین تجدید نظر در یک درخواست واحد است.برای سیستم های مهندسی با بسیاری از نهادهای مرتبط، گرافQL می تواند بیش از حد کاهش و کمتر از حد کاهش، با این حال، Caching پیچیده تر است، و شما نیاز به محافظت در برابر پرس و جو گران قیمت ( تجزیه و تحلیل عمق، محدود کردن فایل و تحلیل).

بیشتر بخوانید درباره اصول طراحی RESTful API [FLT 1 ] و ] بهترین شیوه ها [[[ ]

مقیاس پذیری پایگاه داده برای داده های مهندسی

دانلود آهنگ جدید Replicas and Schding

پایگاه داده اغلب تنگنا است.استفاده از تکرار خواندن به پرس و جو تجزیه و تحلیل از پایگاه داده نوشتن اولیه است.برای داده های داده با میلیاردها مطالعه سنسور، در نظر گرفتن پایگاه داده های سری زمان (InfluxDB، TimeDB) که تقسیم داده ها به طور خودکار.data با روابط پیچیده، پایگاه های داده های ارتباطی با پیچیدگی افقی می تواند مقیاس - اما پیچیدگی های تکراری اضافه کردن و تکرار عمودی.

ذخیره سازی محتوا برای داده های باینری

فایل های مهندسی بزرگ هستند؛ آنها را در ذخیره سازی شی (آمازون S3، Azure Blob) ذخیره کنید و فقط متاداده را در پایگاه داده نگه دارید.استفاده از ذخیره سازی محتوا برای فایل های تکراری: هر فایل هش می شود و یک بار ذخیره می شود حتی اگر توسط پروژه های متعدد مرجع شده باشد، این هزینه ذخیره سازی و سرعت بارگذاری را کاهش می دهد.

امنیت و کنترل دسترسی در مقیاس

به عنوان مقیاس API، بنابراین سطح حمله را محدود می کند هر توکن یا IP برای جلوگیری از سوء استفاده.استفاده از کلیدهای API یا OAuth 2.0 برای تأیید اطلاعات مهندسی، کنترل دسترسی مبتنی بر نقش (RBAC) را در دروازه API به جای داخل هر سرویس اعمال می کند - این سیاست را متمرکز می کند و تکراری را کاهش می دهد.

همچنین از نقاط پایانی که فایل های باینری را خدمت می کنند محافظت کنید: قبل از ایجاد URL از قبل مجوز کاربر را تأیید کنید و زمان انقضاء کوتاه را تنظیم کنید.از HTTPS در همه جا استفاده کنید و TLS 1.2 یا بالاتر را برای خدمات داخلی اعمال کنید، TLS متقابل می تواند ارتباطات بین سرویس را امن کند.

نظارت، ورود و اطاعت

شما نمی توانید معیارهای جمع آوری شده را در تاخیر درخواست، نرخ خطا و استفاده از پورت پایگاه داده اندازه گیری کنید.استفاده از ردیابی توزیع شده (OpenTelemetry) برای دنبال کردن درخواست در سراسر چندین سرویس. Log ساخت داده (JSON) بنابراین شما می توانید به دنبال خطا توسط کاربر، پروژه یا نقطه پایانی باشید.

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

[در این باره] در مورد بازتترى برای حفظ و نگهداری بیشتر بدانید.

یک مثال عملی: مقیاس یک API Metadata پروژه

تصور کنید سیستم مهندسی شما نیاز به یک نقطه انتهایی دارد (FLT:4) که متاداده فایل را به صورت پیش فرض برگردانده می شود، ابتدا، با استفاده از یک نوار یا UUID، یک پارامتر فیلتر برای نوع فایل اضافه کنید. پنهان کردن نتیجه تنظیم شده با 5 ثانیه TTL اگر تغییرات نادر باشد.اگر نقطه انتهایی به هزاران بار در ثانیه ضربه بزند، اضافه کردن یک پارامتر فیلتر برای نوع فایل های ذخیره سازی در حالی که هش داده های همگام سازی را انجام می دهد.

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

در نهایت، نقطه پایانی را با محدوده OAuth 2.0 امن کنید: تنها اعضای پروژه می توانند اسناد را فهرست یا ایجاد کنند.میزان در 100 درخواست در هر ثانیه و دسترسی به اهداف حسابرسی را ثبت کنند.

نتیجه گیری

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

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

[AWS Well-Architectected Framework] - ستون های مقیاس پذیری و الگوهای طراحی ابر راهنمایی های بیشتری ارائه می دهند.