معرفی کانوپی ابزار توسعه دهنده Svelte Reimagined

به Canopy، یک ابزار توسعه‌دهنده Svelte Reimagined خوش آمدید


Svelte با برخی از بالاترین رتبه‌بندی‌های رضایت‌مندی و معیارهای رشد در میان چارچوب‌های جاوا اسکریپت موجود، بارها و بارها ثابت کرده است که سرعت و نزدیکی آن به وانیلی جاوا اسکریپت ویژگی‌هایی است که توسعه‌دهندگان دوست دارند. جوامع آنلاین آن درگیر هستند، شهودی بودن آن فریبنده است، و قابلیت‌های بسته‌بندی کم ذخیره‌سازی آن همگی برای ارائه یک تجربه توسعه‌دهنده با کیفیت بالا هم‌افزایی می‌کنند.

سفارش طراحی سایت با بهترین طراحان سایت

با وجود این مزایای چشمگیر، جعبه ابزار توسعه دهنده Svelte به اندازه برخی از فریمورک های دیگر کامل نیست. برخی از ابزارهای توسعه‌دهنده Svelte موجود هستند که دیگر نگهداری نمی‌شوند، اما هیچ کدام مجموعه کاملی از ویژگی‌های اصلی مانند اشکال‌زدایی در سفر در زمان و تجسم اجزا را ارائه نمی‌دهند.


و بنابراین Canopy متولد شد: یک ابزار توسعه دهنده همه کاره برای جامعه توسعه دهندگان Svelte که به طور مداوم در حال رشد هستند، که تحت نظارت شتاب دهنده فناوری OSLabs ایجاد شده است.

اشکال زدایی سفر در زمان


همانطور که برای هر کاربر افزونه DevTools محبوب برای کتابخانه یا چارچوب جاوا اسکریپت دیگری مانند React یا Vue شناخته شده است، تجسم تغییرات حالت از راحتی پنجره DevTools اغلب مفید است، اگر ضروری نباشد - و از اینجاست که عملکرد Canopy شروع می شود.


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

کامپوننت ویژوالایزر

متلب انجام پروژه متلب با متلب دانان

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


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

متن باز


همانطور که در بالا ذکر شد، Canopy یک محصول منبع باز است که توسط شتاب دهنده فناوری OSLabs امکان پذیر شده است. این با Svelte (البته!) و TypeScript ساخته شده است تا محصولی سریع و قابل اعتماد ارائه دهد. ما از همه نوع مشارکت‌های انجمن Svelte استقبال می‌کنیم: نظرات، سؤالات، پیشنهادات، گزارش‌های اشکال، درخواست‌های ویژگی - و البته افزوده‌هایی به پایگاه کد. برای استفاده از Canopy، می توانید به سادگی از صفحه Github دیدن کنید و دستورالعمل های آنجا را دنبال کنید. بنابراین اگر شما یک برنامه نویس شیک هستید - آن را بررسی کنید!کانوپی

معرفی کتابخانه QueryMock: An Apollo GraphQL Module و توضیح درمورد آن و ویژگی های آن

معرفی کتابخانه QueryMock: An Apollo GraphQL Module


QueryMock بسته NPM عالی برای اضافه کردن به همه برنامه های Apollo GraphQL است.


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

طراحی سایت سفارش طراحی سایت سفارش ساخت سایت

Apollo GraphQL چیست؟


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


آپولو در رابطه با GraphQL چگونه کار می کند؟ آپولو به طور خاص تحت PaaS یا پلتفرم به عنوان پشته فناوری خدمات قرار می گیرد. نقش آپولو ردیابی طرحواره های ایجاد شده در یک رجیستری است. این به ویژه هنگامی مفید است که با Apollo Studio همراه شود، که پلتفرمی است که به شما امکان می‌دهد با داده‌هایی که دریافت می‌کنید، پرس و جوهایی که ایجاد می‌کنید بازی کنید و آن‌ها را در برابر طرحی که ذخیره کرده‌اید بررسی کنید. آپولو همچنین به بسته‌ها و کتابخانه‌های مختلف برای کمک به ایجاد برنامه GraphQL شما دسترسی دارد.


با این حال GraphQL، حتی همراه با آپولو، دارای یک منحنی یادگیری شیب دار است. علاوه بر آن، به طور کلی یک فناوری نسبتاً جدید است. GraphQL برای اولین بار در سال 2012 ایجاد شد و در سال 2015 منبع باز شد و آپولو در سال 2016 راه اندازی شد. از آنجایی که بسیار جدید است، ویژگی های زیادی وجود دارد که هنوز در حال پیشرفت هستند، که منجر به این می شود که باید خودتان راه حل هایی برای مشکلات خود بیابید یا منتظر بمانید. تا زمانی که ویژگی کار در حال انجام آپولو ایجاد و اجرا شود. هنگام تصمیم گیری در مورد استفاده از Apollo GraphQL برای برنامه خود خوب است این معایب را در نظر داشته باشید.

متلب انجام پروژه متلب با متلب دانان قهار و بزرگ

اولین ویژگی QueryMock چیست؟


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


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


تابع mockQuery با ایجاد داده های ساختگی برای توسعه دهندگانی که هنوز به یک باطن کامل دسترسی ندارند، مشکل توصیف شده را حل می کند. تیم ما آن را برای تقلید از useQuery Hook از بسته npm @apollo/client نوشت که فقط به یک آرگومان نیاز دارد: جستجوی GraphQL. در اینجا یک نمونه از useQuery Hook آورده شده است:


تابع DisplayLocations() {


const { بارگیری، خطا، داده } = useQuery(GET_LOCATIONS);


اگر (در حال بارگیری) بازگشت <p>در حال بارگیری…</p>;


if (error) return <p>خطا :(</p>


داده ها را برگرداند

طراحی لوگو با بهترین طراح لوگو و طراحی لوگو حرفه ای

locations.map(({ شناسه، عنوان، تصویر، نام، توضیحات، آدرس، تلفن، پوستر}) => (


[با کد اینجا کاری انجام دهید


))؛


)


}


با جایگزین کردن useQuery با mockQuery، با گذاشتن آرگومان جستجوی GraphQL در محل، تابع ما فقط رشته‌هایی را برای هر فیلد در جستجو برمی‌گرداند.


مثلا:


تابع DisplayLocations() {


const { بارگیری، خطا، داده } = MockQuery(GET_LOCATIONS);


اگر (در حال بارگیری) بازگشت <p>در حال بارگیری…</p>;


if (error) return <p>خطا :(</p>


داده ها را برگرداند

تصویر داده های ارائه شده: title_01 location-reference درباره این مکان: name_01 description_01 address_01 phone_01 location-reference name user_01 age_01


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


const { بارگیری، خطا، داده } = MockQuery (GET_LOCATIONS، "درج");

تصویر پاپ آپ و فیلدهای مورد نظر: QueryMock: سلام! برای استفاده از mockQuery متشکریم! فیلدهای داده های ساختگی را از قبل با متن پر کرده ایم. هر یک از جعبه های ورودی از پیش پر شده را با داده های ساختگی شخصی خود جایگزین کنید

سپس روی ارسال کلیک کنید. می توانید تابع mockQuery را بدون تگ P دوباره اجرا کنید و اطلاعات شما حفظ خواهد شد. اگر سؤالی دارید، لطفاً اسناد ما را بررسی کنید. پرس و جو! فیلدها: شناسه، عنوان، تصویر، نام، توضیحات، آدرس، تلفن، نام کاربری پوستر، سن پوستر و تصویر کوچک پوستر. در پایان یک دکمه ارسال وجود دارد.


به منظور سرعت بخشیدن به این فرآیند، قابلیت استفاده از کلمات کلیدی را برای تعیین نوع داده ای که می خواهید ارائه دهید اضافه کردیم. در تصویر زیر، فیلد "تصویر" دارای یک آدرس اینترنتی است که قبلا ارائه شده است. با این حال، فیلد "تصویر کوچک پوستر" دارای ~عکس است. استفاده از ~photo مانند چسباندن آدرس اینترنتی در فیلد عمل می کند.

تصویری از همان پاپ آپ همانطور که در بالا توضیح داده شد با برخی از فیلدها وارد شده است. اینها فیلدهایی هستند که وارد شده اند: عنوان: بهترین فروشگاه نان تا کنون! تصویر: نام آدرس اینترنتی خودکار: توضیحات Ben’s Baker: ~text299 آدرس: ~ آدرس تلفن: ~ نام کاربری پوستر تلفن: ben_theBaker93 سن پوست: ~int poster thumbnail: ~photo. در پایان یک دکمه ارسال وجود دارد.


می بینید که ما از ~address, ~phone, ~int, ~text299 استفاده کردیم. کلمه کلیدی متن متفاوت است زیرا به شما نیاز دارد که یک عدد زیر ~text ارائه دهید. در مثال ما از عدد 299 استفاده کردیم که تضمین می کند که یک بلوک متنی با 299 کاراکتر دریافت می کنید.

پروژه انجام پروژه سفارش پروژه

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

تصویر رندر شده شامل یک تصویر انتزاعی آبرنگ با رنگ های مختلف از جمله زرد، قرمز، سبز و آبی تیره. عنوان بالای سربرگ می گوید: The Best Bread Store Ever. در زیر تصویر آمده است: درباره این مکان: Ben’s Bakery. متن بعدی نوشته شده: یک دلار و هشتاد و هفت سنت. این همه بود. و شصت سنت آن به سکه بود. پنی ها هر بار یکی و دو نفر را با بولدوزر زدن خواربارفروش و سبزی خوار و قصاب نجات دادند تا اینکه گونه های آدم با انتساب بی صدا انزجاری که چنین برخورد نزدیک حاکی از آن بود، سوخت. سه. 2300 Oracle Way Austin, TX 78741 (737)867–1000. یک تصویر دایره ای با چرخش های رنگی وجود دارد و سپس زیر آن: ben_theBaker93 128.


تمام اطلاعات ورودی در sessionStorage ذخیره می شود. تا زمانی که برگه باز نگه داشته شود، باقی خواهد ماند. این اطمینان حاصل می کند که اگر پرچم "درج" را حذف کنید، داده های شما به حیات خود ادامه می دهند. ویژگی ما همچنین می تواند آرایه ای از اشیاء را با ضرب داده ها مدیریت کند.


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


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


UseQuery Hook از Apollo یک شی را برمی‌گرداند که به طور خاص دارای یک جفت کلید/مقدار «بارگیری» و «true» است در حالی که منتظر نتایج پرس و جو است. در حالی که منتظر ورودی کاربر هستیم، این رفتار را با ارسال یک شی "بارگیری" تقلید می کنیم تا زمانی که کاربر ورودی های مورد نظر خود را ارسال کند، سپس داده ها با useState Hook به روز می شوند.

مجری ذیصلاح لیست مجریان نظام مهندسی اراک مجری ساختمان

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


چگونه اولین ویژگی را نصب می کنید؟


ابتدا مطمئن شوید که @apollo/client، GraphQL و React را نصب کرده اید. سپس می توانید به مخزن github ما بروید تا پروژه را فورک و کلون کنید. دوم، پوشه ای با عنوان MockData را در پروژه خود کپی کنید و سپس تابع mockQuery را به صورت زیر وارد کنید:


وارد کردن mockQuery از «[مسیر شما]/MockData/MockQuery».


اکنون می‌توانید با جایگزین کردن useQuery Hook با mockQuery، برخی از داده‌ها را مسخره کنید.


دومین ویژگی QueryMock چیست؟


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

طرحواره ای را بر اساس پرس و جوی کاربر مورد نظر ایجاد کنید.


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

پوشه QueryTest با فایل query.js که در داخل آن قرار دارد.


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

این نمونه ای از پرس و جوی است که با محصول ما کار می کند: const { gql } = require('apollo-graphql'); const dndChar = gql ` query class { class { name hit_die spellcasting { spellcasting_ability { name } } } `

مثال پرس و جو: const{gql} = require('apollo-graphql'); const dndChar = gql ` query class { class { name hit_die spellcasting { spellcasting_ability { name } } } `


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

تصویری از آنچه در داخل ترمینال رخ می دهد: create-schema — پرس و جو شما در کجا ذخیره می شود؟ — ./QueryTest/query.js — لطفاً مسیری را که می خواهید طرحواره شما ذخیره شود، اعلام کنید: — ./QueryTest/schema.js — فایل ضمیمه شده است


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

تصویر فایل: پوشه QueryTest با فایل‌های query.js و schema.js موجود در آن.

تصویر طرحواره خروجی: `type class { نام: String! hit_die: رشته! spellcasting: رشته! } type spellcasting { spellcasting_ability: String! } spellcasting_ability را تایپ کنید { نام: رشته! } `


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


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


چگونه ویژگی دوم را نصب می کنید؟


ابتدا از مخزن github فورک و کلون کنید و مطمئن شوید که فایل MockSchema به همراه package.json موجود است. دوم، در ترمینال خود npm install را اجرا کنید و سپس npm install -g را اجرا کنید تا فایل به صورت سراسری نصب شود. برای استفاده از دستورات اجرایی، بسته باید در سطح جهانی نصب شود. در مرحله بعد، مطمئن شوید که apollo-graphql را در برنامه خود نصب کرده اید و یک پرس و جوی Apollo GraphQL را با پیروی از تگ gql ایجاد کرده اید و پرس و جو خود را در بکتیک ها قرار داده اید. پس از آن دستور create-schema را اجرا کنید و دستورات برای اجرای عملکرد در ترمینال شما ظاهر می شود!


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


آینده QueryMock چیست؟


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

o کتابخانه را به طور کامل نصب کنید. امیدواریم در آینده نزدیک این را منتشر کنیم. با توجه به اولین ویژگی ما، امیدواریم که به مشکل مربوط به انواع مختلف اشیاء بپردازیم. مشکل این است که ما نمی توانیم ارزیابی کنیم که آیا کاربر انتظار دارد یک شی واحد برگردانده شود یا آرایه ای از اشیا. ما می‌خواهیم قابلیت‌هایی را پیاده‌سازی کنیم تا به کاربر این نوع تنوع را بدهیم. در مورد ویژگی دوم ما می‌خواهیم بتوانیم طرحواره‌ای را مسخره کنیم که می‌تواند پیش‌بینی کند که آیا طرحواره به نوع مورد انتظار دیگری نیاز دارد که رشته‌ای نیست. مشکل از تلاش برای تعیین آنچه کاربر از یک پرس و جو پیش بینی می کند ناشی می شود. ما می‌خواهیم با اجازه دادن به چند دستور دیگر به ترمینال به عنوان راهی برای جمع‌آوری داده‌های پیش‌بینی‌شده از کاربر، سعی کنیم با این مشکل مقابله کنیم. در مورد گام‌های بعدی کلی، ویژگی سومی وجود داشت که باید آن را به یک هدف کششی تبدیل می‌کردیم که تیم هنوز به آن علاقه دارد. امیدوار بودیم به موضوع رسیدگی به درخواست در فدراسیون آپولو بپردازیم. این ایده در حال حاضر هنوز به طور کامل شکل نگرفته است. با این حال، از آنچه ما می‌توانیم استنباط کنیم، مشکلاتی در نحوه رسیدگی به درخواست‌های گره توسط آپولو گیت‌وی وجود داشت که از کار با React Relay ناشی می‌شدند. در نسخه های بعدی QueryMock، ما دوست داریم این قابلیت را اضافه کنیم.


گروه را ملاقات کن!


QueryMock در حال حاضر تیمی متشکل از چهار مهندس نرم افزار است که در مورد امکانات Apollo GraphQL هیجان زده هستند. تیم ما اینجاست:


متشکرم!


از اینکه برای خواندن مقاله ما وقت گذاشتید سپاسگزاریم. اگر این محصول را مفید می‌دانید یا اگر کنجکاو هستید که بیشتر بدانید، از مخزن github ما و صفحه splash ما دیدن کنید! به زودی ما این را در npmjs راه اندازی خواهیم کرد تا بتوانید مستقیماً بسته ما را از آنجا نصب کنید.


تشکر ویژه از کاترین کیم (github، linkedin) برای راهنمایی و راهنمایی ما.



نرم افزار DenoGres 2.0 منتشر شد . توضیح ویژگی های آن

DenoGres 2.0 منتشر شد


DenoGres 2.0 اکنون فعال است! در این نسخه مجموعه جدیدی از ویژگی های ساخته شده بر روی DenoGres 1.0 گنجانده شده است که به توسعه دهندگان ابزارها و دلایل بیشتری برای کار در DenoGres می دهد.

سایت سفارش طراحی سایت با بهترین طراحان سایت

    رابط کاربری گرافیکی کاربرپسند، همگام سازی پایگاه داده دو جهته، بذر پایگاه داده، و گزارش مهاجرت تنها تعداد انگشت شماری از ویژگی های موجود در DenoGres 2.0 هستند!


مقدمه


امروز ما نسخه بعدی DenoGres، نسخه 2.0 را منتشر می کنیم. نسخه 2.0 با تعداد قابل توجهی بهبود در عملکرد اصلی ارائه می شود که DenoGres را نه تنها آسان تر می کند، بلکه یک راه حل ORM جامع تر را ایجاد می کند که PostgreSQL را به زمان اجرا Deno پیوند می دهد.


نکات برجسته در این نسخه عبارتند از:


    همگام سازی دو جهته پایگاه داده/مدل

    بذردهی پایگاه داده

    یک رابط مرورگر پرس و جوی گرافیکی

    گزارش مهاجرت پایگاه داده


همگام سازی پایگاه داده دو جهته

طراحی لوگو با بهترین طراح لوگو و طراحی لوگو حرفه ای

یکی از ویژگی های اصلی که به عنوان بخشی از نسخه 2.0 پیاده سازی شده است، افزودن همگام سازی پایگاه داده دو جهته است. پس از فراخوانی فرمان "-db-pull"، DenoGres یک فایل model.ts ایجاد می کند. این فایل طرحواره پایگاه داده کاربر را از PostgreSQL به شکل شی TypeScript نشان می دهد. هر تغییری که در PostgreSQL رخ می‌دهد را می‌توان با فراخوانی « — db-pull» به دایرکتوری پروژه کاربر کشید، که فایل مدل فعلی را در DenoGres بازنویسی می‌کند. یکی دیگر از قابلیت‌هایی که در این ویژگی وجود دارد، توانایی همگام‌سازی تغییرات در طرح پایگاه داده PostgreSQL از طریق مدل ORM (model.ts) در DenoGres است. اگر کاربر بخواهد تغییراتی را در طرح PostgreSQL خود ایجاد کند، می‌تواند این کار را در IDE خود با تغییر فایل model.ts و فراخوانی فرمان « — db-sync» انجام دهد. فراخوانی « — db-sync» سپس از model.ts به عنوان پایه آن استفاده می کند و طرح پایگاه داده PostgreSQL را برای مطابقت با Models از فایل model.ts همگام می کند.

تصویر فایل model.ts

model.ts


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


پس از ایجاد تغییرات در مدل، دستور " — db-sync" را اجرا کنید و تمام تغییرات ایجاد شده در مدل شما با طرح پایگاه داده PostgreSQL شما همگام سازی می شود.

بذریابی پایگاه داده

متلب انجام پروژه متلب با متلب دانان

با جدیدترین افزوده ما از بذردهی پایگاه داده، اکنون می توانید داده های آزمایشی را مستقیماً از طریق DenoGres در پایگاه داده PostgreSQL خود وارد کنید! برای شروع، ابتدا باید فایلی به نام seed.ts در داخل دایرکتوری ریشه ایجاد کنید. در مرحله بعد، آرایه ای از اشیاء ایجاد کنید و آن را به برچسبی که با نام جدولی که می خواهید در پایگاه داده PostgreSQL ایجاد کنید، اختصاص دهید. در متغیر تازه ایجاد شده شما، هر شی در آرایه یک رکورد (ردیف) را نشان می دهد که باید به پایگاه داده PostgreSQL اضافه شود.


توجه: مطمئن شوید که هر یک از آبجکت های داده مطابق با طرحی که در فایل model.ts آمده است.


نمونه ای از فایل seed.ts به شکل زیر است:

قطعه کد نمونه ای از فایل seed.ts را نشان می دهد.

مثال: مدل seed.ts


اکنون، تنها کاری که باید انجام دهید این است که اجرا کنید: denogres - db-seed

مرورگر GUI Query

صفحه ورود به سیستم DenoGres


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

افزودن یک اتصال

انجام پروژه با بهترین متخصصان پروژه

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

اتصال به یک اتصال ذخیره شده


در جستجوگر پرس و جو، کاربران می توانند کلاس های Model مرتبط با یک پایگاه داده مشخص را ببینند. آنها همچنین می توانند پرس و جوهایی را در برابر مدل های خود ایجاد و اجرا کنند.

تعریف و ذخیره پرس و جو

گزارش مهاجرت پایگاه داده


DenoGres 1.0 فاقد توانایی ردیابی یا ذخیره مهاجرت های پایگاه داده بود. اگر کاربر تصمیم گرفت که شکل مدل خود را تغییر دهد و بعداً یک هفته بعد تصمیم گرفت که آن را تغییر دهد، هیچ راهی برای بازگشت به طرح قبلی خود وجود نخواهد داشت. DenoGres 2.0 این مشکل را حل می کند.

Denogres Log همه مهاجرت ها را ردیابی می کند


قبل از DenoGres 2.0، زمانی که کاربر دستور CLI "-db-pull" را وارد می کند، یک مدل ORM واحد بر اساس طرح PostgreSQL فعلی آنها ایجاد می شود. اگر کاربر تغییراتی در مدل داده ایجاد کند و متعاقباً بخواهد به مدل اصلی خود برگردد، جزئیات مربوط به مدل اصلی برای همیشه از بین می‌رود. اکنون، زمانی که کاربر طرح پایگاه داده خود را به فایل model.ts خود می کشد، DenoGres به طور خودکار یک نسخه پشتیبان از آن مدل ایجاد می کند و آن را برای استفاده بعدی ذخیره می کند.


با افزودن همگام سازی پایگاه داده دو جهته، هر زمان که دستور « — db-sync» اجرا شود، DenoGres به صورت خودکار

y یک نسخه پشتیبان از مدل ORM پس از همگام سازی ایجاد کنید. این به کاربر این امکان را می دهد که مدلی برای همگام سازی مجدد شکل طرحواره پایگاه داده PostgreSQL خود در صورت نیاز به بازگشت به هر مدل ذخیره شده در هر نقطه از زمان داشته باشد.

در حال توسعه


با گسترش پشتیبانی از DenoGres، تیم امیدوار است تغییرات زیر را با نسخه بعدی DenoGres اعمال کند:


    پشتیبانی بیشتر از dbSync - در نهایت برای چندین ارتباط و کلیدهای منحصر به فرد ترکیبی در مدل DenoGres در نظر گرفته شود.

    دستور جدید «مقایسه» - تفاوت‌های مدل‌های قبلی (در صورت وجود) را در کنار هم نمایش دهید.

    به روز رسانی های بیشتر برای گزارش مهاجرت - گزارش در رابط کاربری گرافیکی قابل مشاهده خواهد بود تا کاربران بتوانند نسخه های مدل را ردیابی/مشاهده/مقایسه کنند.

    نمودارهای به سبک ERD - در رابط کاربری گرافیکی ایجاد می‌شوند، بنابراین کاربران می‌توانند دید جامعی از مدل داده‌های خود داشته باشند.

    پشتیبانی اضافی برای MySQL، SQL Server و غیره




هدف مقیاس پذیری چیست و در تلاش است که به چی دست یابد؟

مقیاس پذیری: Kubernetes دقیقاً در تلاش است به چه چیزی دست یابد؟

درک انتزاع پشت گره ها و غلاف ها


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

انجام پروژه در فریلنس پروژه

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

منبع: Unreal Engine 5 Pixel Streaming Overview

سفارش طراحی سایت با بهترین طراحان سایت

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


با در نظر گرفتن این موضوع، بیایید شروع کنیم!

تجسم ابر


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


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

متلب انجام پروژه متلب با متلب دانان

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


    پیگیری همه منابع - ببینید چه چیزی در دسترس است، چه چیزی در دسترس نیست و چه چیزی نادرست است.

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

    اطمینان حاصل کنید که چیزها از هم جدا شده اند، بنابراین مستاجران به منابعی که به آنها تعلق ندارد دسترسی پیدا نکنند.

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

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


همه موارد فوق مستلزم سیستمی است که بتواند همه چیز را با پشتکار پیگیری و مدیریت کند. Kubernetes چندین مؤلفه را ارائه می دهد که در کنار هم قرار گرفتن آنها می تواند به هدف مورد نظر دست یابد. در اینجا برخی از این مؤلفه ها وجود دارد که به نظر من درک آنها از نظر مفهومی ساده تر از سایرین است:


    kube-apiserver - یک سرور API REST که می تواند توسط مستاجرین برای ارسال درخواست های استقرار برنامه به ابر استفاده شود.

    kubelet - عاملی که بر روی هر کامپیوتری نصب شده است و اساساً آن را به بخشی از شبکه Kubernetes تبدیل می کند. این مسئول استقرار برنامه های مستاجر و اجرای بررسی های سلامت بر اساس مجموعه ای از دستورالعمل های ارسال شده از apiserver است.

    etcd - یک پایگاه داده کلید-مقدار که متغیرهای مربوط به ابر Kubernetes را ذخیره می کند، به عنوان مثال، پیکربندی ها، و وضعیت هر رایانه و برنامه هایی که باید در آنها اجرا شوند. برای هماهنگی وظایف در سطح سیستم استفاده می شود. به عبارت دیگر - این منبع حقیقت ابر در هر نقطه است.

طراحی لوگو با بهترین طراح لوگو با طراحی لوگو حرفه ای

اگر می‌خواهید به لیست کامل اجزای Kubernetes بروید، نمودار رسمی را به شما ارائه می‌دهم که در وب‌سایت رسمی Kubernetes قابل مشاهده است:

لیست کامل اجزای Kubernetes، از وب سایت رسمی Kubernetes


همانطور که می بینید، مشخصات Kubernetes دوست دارد از انتزاعات در بالای چیزهایی استفاده کند که قبلاً با آنها آشنا هستیم. خوشه به معنای مزرعه یا استخر و گره به معنای رایانه یا ماشین است. در مقطعی از تاریخ، یک گره حتی مینیون نامیده می شد (همانطور که در این شماره GitHub از سال 2014 بحث شد). برای من، نام ها یکی از گیج کننده ترین چیزها در مورد Kubernetes هستند، زیرا تعداد زیادی از آنها وجود دارد، و لزوما معنی زیادی ندارند. اما زمانی که فهمیدم Kubernetes چیزی بیش از یک چارچوب برای مدیریت نیست

مجموعه ای از منابع - همه چیز سریعتر کلیک می کرد. برای مرجع، می‌توانید به این فرهنگ لغت نگاهی بیندازید که فهرست کاملی از اصطلاحات Kubernetes و تعاریف آنها را دارد.

ذخیره سازی یک مشکل کاملا متفاوت است


مشابه شبکه کامپیوترهای Kubernetes، وقتی صحبت از فضای ذخیره‌سازی به میان می‌آید، شبکه‌ای از هارد دیسک‌ها وجود دارد و استراتژی‌های مختلفی برای استفاده از آنها وجود دارد. قبل از توضیح بیشتر، اجازه دهید به چند مورد لبه در مورد ذخیره سازی فکر کنیم:


    یک مستاجر دوست دارد یک بازی با حجم 120 گیگابایت آپلود کند، اما فقط هارد دیسک‌هایی با حداکثر 100 گیگابایت در دسترس هستند.

    یکی از هارد دیسک‌ها کار نمی‌کند و ممکن است شامل فایل‌های مهمی باشد که برای برخی از مستاجران بسیار حیاتی است.

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

    همه موارد فوق، در حالی که فضای ذخیره سازی را بین رایانه ها به اشتراک می گذارند و دسترسی مناسب خواندن / نوشتن را حفظ می کنند.


حل این مشکلات بی‌اهمیت نیستند و نیاز به تخصص ویژه در زمینه ذخیره‌سازی و نحوه عملکرد آن دارند. برخی از ارائه دهندگان ابر راه حل های ذخیره سازی مدیریت شده اختصاصی مانند AWS EBS، GCE Disk و Azure Disk را ارائه می دهند. اما اگر برای لحظه‌ای تصور کنیم که شما یک اتاق کامل پر از هارد دیسک دارید و می‌خواهید آن‌ها را به مستاجران بالقوه اجاره کنید - احتمالاً می‌خواهید این کار را با یک راه‌حل منبع باز داده‌های بزرگ مانند Ceph انجام دهید.


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

منبع: Ceph Intro and Architectural Review by Ross Turk


ممکن است متوجه شده باشید که Ceph چگونه با سخت افزار به عنوان یک گراف از گره ها برخورد می کند که بسیار شبیه به Kubernetes است. این بدان معنی است که هنگام استفاده از یک بک‌اند Kubernetes، ما به احتمال زیاد با چند خوشه و نه تنها با یکی از آنها ارتباط برقرار می‌کنیم، این درک باعث شد که درک بهتری از نحوه مدیریت سخت‌افزار در همه ابعاد داشته باشم.

این فقط یک سرور HTTP است


برای شروع یک تماس API Kubernetes، باید یک درخواست به kube-apiserver ارسال کنیم. همانطور که قبلا ذکر شد، kube-apiserver یک مؤلفه است که توسط ارائه دهنده ابر نصب شده است و یک سرور REST است. بر این اساس، هر کلاینت HTTP را می توان برای پرس و جو از back-end استفاده کرد، به عنوان مثال، cURL یا axios. با این حال، درخواست‌ها باید مجاز باشند، و پاسخ‌ها باید تجزیه شوند، بنابراین، بسته به زبان و محیطی که استفاده می‌کنید، بسیاری از پیاده‌سازی‌های مشتری Kubernetes را مشاهده خواهید کرد. یکی از واضح ترین و محبوب ترین مشتریان Kubernetes ابزار CLI آن است - kubectl.


با kubectl می‌توانید به راحتی تماس‌های API مجاز برقرار کنید، و پاسخ‌ها همیشه در قالبی قابل خواندن بر روی صفحه نمایش داده می‌شوند، که هنگام کار با ترمینال عالی است. ما حتی می‌توانیم از kubectl در حالت کلامی استفاده کنیم تا جزئیات تماس HTTP اساسی را ببینیم:


kubectl دریافت pods --v=6



در حال حاضر، می توانید به pods به عنوان برنامه های کاربردی فکر کنید (خوب، به نوعی). اگر مقاله را مرور کرده باشید، احتمالاً متوجه خواهید شد که آنها می توانند بر روی هر رایانه ای که خودسرانه انتخاب شده است، بسته به آنچه در دسترس بوده اجرا شود.

شبیه سازی درخواست Kubernetes


بنابراین بازگشت به مشکل اصلی که شروع کل این مقاله بود – ما می‌خواهیم کاربران را به رایانه‌های روی ابر متصل کنیم تا بتوانند بدون داشتن سخت‌افزار گران‌قیمت بازی کنند. هنگامی که یک کاربر تمام شد، سخت افزار اشغال شده دوباره برای میزبانی کاربر بعدی در صف در دسترس خواهد بود. بیایید سعی کنیم با این موضوع مقابله کنیم!


موارد زیر به ما داده می شود:


    یک صف از کاربران.

    یک خوشه Kubernetes.

    یک تصویر Docker با یک بازی نصب شده است.


مشخصات پیشنهادی برای اجرای بازی به شرح زیر است:


    4 هسته.

    رم 16 گیگابایت.

    50 گیگابایت فضای ذخیره سازی.

    RTX A4000.


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


    هنگامی که کاربر به انتهای صف می رسد، درخواستی را با URL تصویر و مشخصات سخت افزاری مورد نظر به kube-apiserver ارسال کنید.

    Kube-apiserver از etcd برای جستجوی رایانه ای با منابع کافی برای میزبانی تصویر استفاده می کند.

    اگر چیزی پیدا شد، kube-apiserver از شناسه گره برای ارسال درخواست استقرار به kubelet مربوطه خود استفاده می کند.

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

    Kube-apiserver پورت بازی را به همراه آدرس IP رایانه مورد نظر به کاربر باز می گرداند.

    کاربر می تواند از http://{IP}:{port} برای اتصال به جریان بازی از طریق مرورگر وب استفاده کند.


شبیه سازی درخواست Kubernetes ساده شده


امیدوارم از مقدمه من برای Kubernetes و اصول زیربنایی آن لذت برده باشید. اگر تصمیم به یادگیری یا استفاده از آن دارید، من را خبر کنید