فناوری های کاربردی بر روی خرابه های تب بلاک چین یا مزایای عملی توزیع منابع

در سال‌های اخیر، فیدهای خبری مملو از پیام‌هایی در مورد نوع جدیدی از شبکه‌های محاسباتی توزیع‌شده شده‌اند که به معنای واقعی کلمه از ناکجاآباد ظاهر می‌شوند و طیف گسترده‌ای از مشکلات را حل می‌کنند (یا بهتر است بگوییم تلاش برای حل کردن) - هوشمند کردن شهر، نجات جهان از حق چاپ متخلفان یا بالعکس، مخفیانه اطلاعات یا منابع را منتقل می کنند، از کنترل دولت در یک منطقه یا منطقه دیگر فرار می کنند. صرف نظر از زمینه، همه آنها دارای تعدادی ویژگی مشترک هستند زیرا سوخت برای رشد آنها الگوریتم ها و تکنیک هایی بود که در طول رونق اخیر در ارزهای رمزپایه و فناوری های مرتبط به عموم مردم آمد. احتمالاً هر سوم مقاله در مورد منابع تخصصی در آن زمان کلمه "blockchain" را در عنوان داشت - بحث در مورد راه حل های نرم افزاری جدید و مدل های اقتصادی برای مدتی به روند غالب تبدیل شد که در پس زمینه آن سایر زمینه های کاربرد سیستم های محاسباتی توزیع شده به پس‌زمینه سقوط کرد.

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

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

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

جهت ممکن است درست باشد، یا ممکن است به بن بست منجر شود - هیچ راه گریزی از این وجود ندارد؛ عرضه متمرکز روشنفکران به جامعه فناوری اطلاعات هنوز دیر است. اما انتخاب باید به گونه‌ای انجام شود که در دام سنتی تیمی که منطقه‌ای بیش از حد وسیع می‌گیرد و تلاش می‌کند از همان ابتدا یک پروژه محاسباتی عمومی غیرتخصصی دیگر ایجاد کند، نیفتیم. به نظر می رسد که دامنه کار چندان ترسناک نیست، در بیشتر موارد ما فقط باید پیشرفت های موجود را اعمال کنیم: ترکیب گره ها در یک شبکه، تطبیق الگوریتم ها برای تعیین توپولوژی ها، تبادل داده ها و نظارت بر سازگاری آنها، معرفی روش هایی برای رتبه بندی گره ها و یافتن اجماع، و، البته، فقط زبان پرس و جو خود و کل زبان و محیط محاسباتی را ایجاد کنید. ایده یک مکانیسم جهانی بسیار وسوسه انگیز است و دائماً در یک منطقه ظاهر می شود، اما نتیجه نهایی هنوز یکی از سه چیز است: راه حل ایجاد شده یا یک نمونه اولیه محدود با یک دسته از "ToDos های معلق" است. یا تبدیل به یک هیولای غیرقابل استفاده می شود که آماده است هر کسی را که باتلاق کثیف تورینگ را لمس می کند، بکشد یا به سادگی بمیرد از این واقعیت که قو، خرچنگ و پیک که پروژه را به سمتی نامفهوم می کشیدند، به سادگی خود را تحت فشار قرار دادند.

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

  • آموزش شبکه های عصبی
  • جریان های سیگنال را پردازش کنید
  • محاسبه ساختار پروتئین
  • رندر صحنه های سه بعدی
  • شبیه سازی هیدرودینامیک
  • تست استراتژی های معاملاتی برای بورس اوراق بهادار

برای اینکه با گردآوری لیستی از چیزهای جالب که به خوبی موازی شده‌اند غافل نشویم، رندر توزیع شده را به عنوان موضوع بعدی خود انتخاب می‌کنیم.

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

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

بنابراین، ما ایجاد چارچوبی را در نظر خواهیم گرفت که باید از ادغام با مجموعه‌ای از موتورهای رندر محبوب پشتیبانی کند و شامل اجزایی باشد که ابزارهایی را برای سازماندهی شبکه‌ای از گره‌های ناهمگن و مدیریت جریان وظایف فراهم می‌کند.

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

سه طرف تعامل در شبکه وجود دارد: ارائه‌دهنده منبع، ارائه‌دهنده وظیفه و اپراتور شبکه (معروف به مرکز کنترل، شبکه و غیره در متن).

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

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

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

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

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

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

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

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

نتایج محاسبات مرحله ترکیب را طی می کند و پس از آن کاربر نتایج رندر را دریافت می کند و شبکه می تواند پاداش دریافت کند.

بنابراین، ترکیب عملکردی یک چارچوب منظر طراحی شده برای ساختن سیستم‌های رندر توزیع شده ظاهر می‌شود:

  1. حساب های کاربری شخصی با دسترسی به وب
  2. کیت نرم افزار برای نصب بر روی گره ها
  3. توسط سیستم کنترل:
    • زیرسیستم کنترل دسترسی
    • رندر زیرسیستم تجزیه وظیفه
    • زیرسیستم توزیع وظایف
    • زیر سیستم ترکیبی
    • زیرسیستم مدیریت توپولوژی شبکه و چشم انداز سرور
    • زیر سیستم ثبت و حسابرسی
    • زیرسیستم متخصص یادگیری
    • Rest API یا رابط دیگر برای توسعه دهندگان خارجی

شما چی فکر میکنید؟ این موضوع چه سوالاتی را مطرح می کند و به چه پاسخ هایی علاقه مند هستید؟

منبع: www.habr.com

اضافه کردن نظر