چارچوب برنامه منبع باز بلوک های سازنده Kubernetes و پشتیبانی از الگوهای طراحی برنامه های کاربردی توزیع شده کلاسیک را ترکیب می کند. بیشتر در راه است
Dapr، زمان اجرای برنامه توزیع شده، در آستانه خروج از برنامه نهفتگی بنیاد محاسبات بومی Cloud است. بهروزرسانیهای منظم ویژگیهای موجود را اصلاح کرده و قابلیتهای جدیدی را اضافه کردهاند. نتیجه یک پلتفرم توانمند برای ساخت و اجرای برنامه های بومی ابری ساخته شده بر روی Kubernetes یا به عنوان یک باینری خود میزبان.
گزینه خود میزبانی به شما امکان میدهد دستگاههای IoT را، در میان سایر موارد، به برنامههای خود بیاورید و مستقیماً از کد خود به آنها دسترسی داشته باشید. این با ابزارهایی مرتبط است که به شما امکان میدهند حالت را در برنامههای خود قرار دهید بدون اینکه نیازی به ساخت ابزارهای خود برای مدیریت وضعیت خارج از برنامه Kubernetes داشته باشید.
یکی دیگر از جنبههای مفید Dapr، پشتیبانی آن از توسعه پیاممحور است که بر اساس الگوی طراحی بازیگر/پیام کلاسیک با ابزارهایی که از پیامرسانی قابل اعتماد و مدلهای سازگار انتخابی شما پشتیبانی میکنند، است. این مبتنی بر میراث پلتفرم در طراحی سیستم های توزیع شده است، با مشارکت کنندگان کلیدی که سال ها تجربه در این زمینه، از جمله کار بر روی پلت فرم بازیگر مجازی مایکروسافت اورلئان.
مایکروسافت همچنان یکی از مشارکت کنندگان اصلی این پروژه است، اما شرکت های جدیدتری ظهور کرده اند که می توانند روی Dapr تمرکز کنند. اینها عبارتند از Diagrid، که در پایان سال ۲۰۲۲ توسط مهندسان سابق مایکروسافت مارک فوسل و یارون اشنایدر، که بین آنها در حال کار بر روی سیستم های توزیع شده برای چندین سال این دو پروژه Dapr را با هم تأسیس کردند، Fussell بر روی Azure Service Fabric کار کرد و Schneider بخشی از KEDA و Azure Container Apps بود.
ابزارهای Diagrid ویژگیهای اضافی را به منبع باز Dapr اضافه میکنند. Catalyst APIهایی را ارائه می دهد که به ساخت برنامه های پیام رسانی و مبتنی بر گردش کار کمک می کند و Conductor ابزارهای مدیریت خودکار را اضافه می کند و راهی برای تجسم برنامه های خود در اختیار شما قرار می دهد. Catalyst در حال حاضر در حال پیش نمایش است و نسخه رایگان Conductor برای کمک به توسعه برنامه های Dapr وجود دارد.
چه چیزی در داپر جدید است؟
من با Mark Fussell درباره انتشار آتی Dapr 1.14 و فلسفه پشت Dapr صحبت کردم. همانطور که او اشاره می کند، نقش Dapr این است که برنامه های کاربردی ابری را به روشی بهتر ارائه دهد، با درک اینکه در قلب، آنها برنامه های کاربردی توزیع شده هستند. «Dapr واقعاً به [توسعهدهندگان] در معماری نرمافزار یا الگوهای کدنویسی کمک میکند تا مجبور نباشند خودشان اختراع کنند.»
این نکته مهمی است، زیرا به ما امکان میدهد از الگوهای معماری بالغ، مانند بازیگران و جریانهای کاری بهره ببریم. Fussell خاطرنشان میکند: «جریانهای کاری بسیار مهم هستند، زیرا میتوانند اجرای بادوام طولانیمدت ایجاد کنند. و آنها به ما این امکان را می دهند که این مجموعه هماهنگ از فعالیت های دیگر را ایجاد کنیم.» با داشتن راهی برای هماهنگ کردن و هماهنگ کردن سرویسها در میان مجموعهای از ریزسرویسها، میتوانیم به نحوه ترکیب آن سرویسها در یک برنامه و نحوه تعامل آنها با یکدیگر و با دادههای ما فکر کنیم.
من قبلاً به Dapr نگاه کردم که این نسخه هنوز خیلی زود منتشر شده بود، اما اصول اساسی تغییر چندانی نکرده است. همچنان مجموعهای از بلاکهای ساختمانی را به محیط Kubernetes شما اضافه میکند که میتوانید از آنها استفاده کنید. برای نوشتن ریزسرویس های رویداد محور به هر زبانی و مدل خدمات انتخابی شما. با پلتفرمهای ذخیرهسازی آشنا، مانند Redis، یکپارچهسازی میشود، بنابراین میتوانید وضعیت را در یک برنامه توزیعشده مدیریت کنید، مدلهای سازگاری قوی و نهایی، و همچنین برندههای اولین نوشتن یا آخرین نوشتن را ارائه میدهد.
Dapr به عنوان یک ابزار مبتنی بر CLI نصب میشود، با راهاندازی فرمان dapr init
مجموعه ای از ظروف که محیط شما را برای کار با Dapr آماده می کند. پس از نصب می توانید شروع به کاوش Dapr API از طریق http یا gRPC کنید. این تیم مجموعه رو به رشدی از نمونه برنامهها را ارائه میکند که نحوه استفاده از ویژگیهای کلیدی را نشان میدهد، به عنوان مثال، راهاندازی یک محیط پیامرسانی میخانه/فرعی.
به راهاندازی Dapr 1.14 نزدیک شدهایم که مجموعه کوچکی از ویژگیهای جدید را معرفی میکند و در عین حال عملکرد APIهای موجود خود را بهبود میبخشد. این امر باید ما را برای انتشار عمده Dapr 1.15 در اواخر امسال آماده کند، که APIهای بیشتری را اضافه می کند و ویژگی های بیشتری را برای ساده سازی توسعه برنامه های کاربردی cross-cloud اضافه می کند.
با Dapr’s Jobs API cron را به Kubernetes اضافه کنید
شاید جالبترین ویژگی جدید در ۱.۱۴ Dapr’s Jobs API باشد. . در اینجا پلتفرم نقش خود را به عنوان یک زمانبندی بازیگر، مدیریت بازیگران در حال اجرا در Dapr، و همچنین ارائه یک پلت فرم پردازش دستهای برای عملیات خودکار و ویژگیهای برنامه، دو چندان میکند.
در قلب خود، Dapr Jobs API یک زمانبندی است که اجرای کار مورد نظر را تضمین می کند. این ضمانت حداقل برای یک اجرا، کار با ابزارهای مقیاس پذیری محیط زیربنایی Kubernetes برای اطمینان از عملکرد است. همچنین از حالت خود میزبانی Dapr پشتیبانی می شود. کار قبل از زمان مورد نظر اجرا نمیشود، اما اگر بعد از آن زمان فراخوانی شود ممکن است شکست بخورد، زیرا پس از آن زمان تضمین نمیشود. دادههای زمانبندی کار در پایگاه داده etcd خود زمانبند، جدا از سایر دادههای Dapr نگهداری میشوند.
زمانبندی بخشی از یک داستان بزرگتر است، زیرا مبنایی برای بهبود عملکرد و مقیاس در ابزار گردش کار Dapr است. گردش کار در برنامه های کاربردی توزیع شده نیاز به مقیاس دهی یا صدها هزار اجرای موازی دارد. که منجر به توسعه پشتیبانی جابز شد. فوسل خاطرنشان می کند: “نیاز زیادی برای مردم وجود داشت که مشاغلی شبیه به کرون را آغاز کنند.” Kubernetes برخی از ویژگیهای شغلی اولیه را دارد، اما بسیار سطح پایین است و واقعاً برای توسعهدهندگان قابل دسترسی نیست.
شما میتوانید از Jobs API برای خدماتی بیش از خدمات کاربردی استفاده کنید، زیرا میتواند وظایف مهندسی پلتفرم، بهروزرسانیها و کدهای تعمیر و نگهداری و همچنین عملیات برنامهریزی شده منظم را اجرا کند. یک کار نرم افزاری معمولی ممکن است پایگاه داده خود را با آخرین داده های عملیاتی به روز کند و یک وظیفه ETL را روی داده های سیستم های تجاری شما اجرا کند. میتوانید کارها را برای یک زمان خاص برنامهریزی کنید، مانند جاسازی یک کار cron در برنامهتان، یا پس از یک مدت زمان مشخص، برای مثال، برای اجرای یک کار پاکسازی پس از اجرای یک کار برنامه.
یک گزینه دیگر برای استفاده از کارهای Dapr گرفتن توابع از برنامه های موجود و انتقال آنها به یک محیط ابری توزیع شده بومی است. اگر گزارشهای مالی را برای پردازش یک شبه جمعآوری کردهاید، میتوانید همان مدل عملیاتی را به کد بهروزشده خود بیاورید و در عین حال از ویژگیهای مقیاسپذیری مدرن بهره میبرید.
مقیاس پذیری کلیدی است. میتوانید از یک کار زمانبندیشده برای اجرای یک کار در چندین نسخه استفاده کنید، که به شما امکان میدهد مثلاً یک شبیهسازی مونت کارلو بسازید و چندین نوع را بهطور موازی اجرا کنید تا به سرعت به نتیجه برسید.
شاید این ارزش واقعی Dapr باشد، زیرا به شما امکان میدهد طیف وسیعتری از برنامههای کاربردی تجاری را به پلتفرمهای بومی ابری بیاورید و از قابلیتهای هماهنگسازی آنها برای مدیریت خودکار منابع استفاده کنید.
بیشتر از یک ماشین کناری
یکی دیگر از ویژگیهای مفید جدید Dapr Shared است. این یک راه جایگزین برای استفاده از Dapr با Kubernetes، نصب به عنوان دیمون ست یا به عنوان استقرار به شما می دهد. اگرچه کار بهعنوان سایدکار پیشفرض باقی میماند، موارد استفادهای مانند برنامههای بدون سرور وجود دارد که ممکن است بخواهید از APIهای Dapr استفاده کنید، اما هزینه سربار تزریق یک سایدکار هر بار که یک کانتینر را راهاندازی میکنید، میتواند تأخیر قابلتوجهی به راهاندازی خدمات اضافه کند. در عین حال، ممکن است نیاز داشته باشید که APIها و سرویسهای پیام Dapr را زمانی که یک سرویس به صفر میرسد، در حال اجرا نگه دارید.
با استفاده از دیمون ست، یک Dapr pod در کنار بارهای کاری شما اجرا می شود. هر بار که زمانبند Kubernetes نمونه جدیدی از برنامه شما را مستقر میکند، یک شبح Dapr جدید را مستقر میکند تا APIهای Dapr همیشه با حداقل تأخیر در دسترس باشند. البته یک نکته منفی نیز وجود دارد که این رویکرد منابع سیستم بیشتری را نسبت به استفاده از یک sidecar مصرف میکند.
اگر منابع مشکل دارند، میتوانید از Dapr به عنوان استقرار Kubernetes استفاده کنید و یک نمونه از زمان اجرا Dapr را در هر خوشه نصب کنید. ارکستراتور Kubernetes تعیین می کند که از کدام گره برای Dapr استفاده می کند، بنابراین می تواند تاخیرهای شبکه بین بارهای کاری و API ها وجود داشته باشد. ممکن است لازم باشد در مورد نحوه مدیریت برنامهتان با پیامها و مدل سازگاری که استفاده میکنید تجدیدنظر کنید.
اکثر بهروزرسانیهای Dapr 1.14 بهبودهایی در ویژگیهای موجود، مانند عملکرد و امنیت هستند، که همراه با تغییرات بزرگتر، ساخت و استقرار برنامههای Dapr را در میان ابرها و ابزارهای توسعه انتخابی شما آسانتر میکند. در میان بسیاری از SDK های موجود، پیاده سازی Net مجموعه کاملی از ویژگی ها از جمله پشتیبانی را ارائه می دهد. برای بازیگران و ابزارهای گردش کار Dapr. اگر پایتون، برو، جاوا اسکریپت یا حتی جاوا را ترجیح می دهید، می توانید نسخه های SDK پایدار را پیدا کنید. C++ و Rust در دست توسعه هستند.
پست های مرتبط
چگونه Dapr توسعه بومی ابری را بهبود می بخشد
چگونه Dapr توسعه بومی ابری را بهبود می بخشد
چگونه Dapr توسعه بومی ابری را بهبود می بخشد