از Pista Academy حمایت کنید
خلاصه آموزشی
مرور سریع مفاهیم اصلی پیش از تماشای کامل یا برای جمعبندی بعد از آموزش.
در جلسه 19 دوره متخصص مهندسی داده و بیگ دیتا، مدرس به بررسی دو فناوری مهم در حوزه میکروسرویسها پرداخته است: پروتوکل بافر (Protobuf) و جیآرپی سی (gRPC). پروتوکل بافر یک روش سریالیزاسیون داده است که باعث کاهش حجم داده و افزایش سرعت پردازش میشود، در حالی که جیآرپی سی یک فریم ورک برای ارتباط بین برنامهها و سرویسها است که معمولاً با پروتوکل بافر همکاری میکند. همچنین، مفهوم مسج (message) در پروتوکل بافر به عنوان یک مدل داده مستقل از زبان برنامهنویسی معرفی شده است که میتواند برای تولید کد در زبانهای مختلف استفاده شود.
نکات کلیدی
پروتوکل بافر یک روش سریالیزاسیون داده است که باعث کاهش حجم داده و افزایش سرعت پردازش میشود.
جیآرپی سی یک فریم ورک برای ارتباط بین برنامهها و سرویسها است که معمولاً با پروتوکل بافر همکاری میکند.
مسج در پروتوکل بافر به عنوان یک مدل داده مستقل از زبان برنامهنویسی عمل میکند.
فایل پروتو مستقل از زبان برنامهنویسی است و میتواند برای تولید کد در زبانهای مختلف استفاده شود.
متن ویدیو
متن زمانبندیشده این جلسه برای مرور، جستجو و دسترسی سریعتر.
سلام عرض میکنم خدمت دوستان عزیز. بریم سراغ
ادامه بحثمون. ما یه چند جلسهای قراره در
رابطه با بحث پروتوکل بافر و جیآر پی سی
صحبت بکنیم. شاید مثلاً ۵ جلسه، ۶ جلسه
طول بکشه و سعی میکنیم که یه پروژه
به درد بخور هم انتهاش انجام بدیم که
مفاهیم براتون جا بیفته.
هدف این قسمت اینه که قبل از نوشتن کد متوجه بشیم که دقیقا پروتوکل بافر دقیقاً
چه مشکلی رو حل میکنه
و جیآرپی سی با چه ارتباطی با اون داره.
فرض کنید د تا برنامه داریم. یه برنامه
کلاینت و یه برنامه سرور.
برای مثال کلاینت میخواد اطلاعات یک کاربر
از سرور دریافت بکنه.
اطلاعات کاربر میتونه شامل سنش، اسمش،
آیدیش، ایمیلش یا هر چیز دیگهای باشه.
مشکلی که وجود داره اینه که کامپیوتر نمیتونه ساختارهای داخل حافظه یه برنامه
رو مستقیماً از طریق شبکه برنامه دیگه
ارسال بکنه.
بنابراین باید اطلاعاتو با یک فرمت قابل
انتقال تبدیل بکنیم.
به این میگن چی؟ س سریال سری سریال و تبدیل دوباره اون به ساختار قابل
استفاده در برنامه رو چی میگن؟ میگن دی
سریالشن.
رمش متداور توی ایپیآی بچهها جیسونه که احتمالاً
اسمشو شنیدید و باهاش کار کردید جاهای
مختلف.
مثلاً وقتی شما به یه سروری ریکوست
میزنید دیتا میخواید در جواب یه همچین
چیزی بهتون برمیگردونه در قالب یک آبجکتی
که از آیدی و از کلید و ولیو ساخته شده
مزعیت مهم جسون چیه برای انسان قابل
خواندنه
اما در ارتباط بین سرویسها همیشه بهترین
انتخاب نیست
فرض کنید میلیونها درخواست بین
میکروسرویسها جابهجا میشه
در جیسون نام فیلتها مرتباً دار همراه
داده ارسال میشه راست بگیرید مثلاً کلیدم
داره مرتباً ارسال میشه
میگه تو حجم بالا این موضوع باعث افزایش
حجم داده و هزینه پردازش میشه اینجاست که
پروتوکل بافر وارد میشه
پروتوکل بافر که به اختصار بچهها بهش بهش میگن پروتوباف یک روش سریولیزیشنه که توسط
گوگل توصیه داده شده به جای اینکه ساختار
داده را هر بار همراه اطلاعات ارسال بکنیم
ابتدا ساختار اطلاعاتو در یه فایل ارسال
میکنیم یعنی اول میا اینو ارسال میکنن
مثلاً
و بعد این فایلم میگه پسوندش معمولاً اینه
پروتو مثلاً یه همچین چیزی
که یک یوزر ۴ تا فیلد داره
احتمالاً اول اینو میفرستم بعدش میا خود
دیتا رو فقط میفرستن دیگه شما نیاز نیست
هر دفعه باید در حقیقت اون آیدیا رو
همراهش بفرستید
میگه جیسون یک فرمت تکستیسه اما پروتوباف اطلاعاتو به شکل باینری
تحویل میکنه
سمت دیگر اون باینری رو برعکسش میکنه به همین دلیل معمولاً دادهای که پورتوباف
منتقل میشود نسبت به جیسون کوچکتر و
پردازش سریعتر است. البته این بد معنا
نیست که پورتو باب همیشه باید جای جیسون
رو بگیره.
جیسون برای پابلیک ایپیآیها بسیار مناسب
است چون تقریباً همه زبانها و ابزارها به
سادگی باهاش کار میکنن. پورت و باف
معمولاً در ارتباط بین سرویسها بسیار
جذابه.
حالا اینجا من یه نکته کوچیک یه پرانتز
باز بکنم اصلاً سرویس یعنی چی؟ ببینید
بچهها توی برنامههای بزرگ
میان کارای مختلفو تبدیل میکنن به یه سری
سرویسهای کوچیکتر که بهش میگن
میکروسرویس.
مثلاً شما فرض کنید توی اینستاگرام
مثلاً چه میدونم ریلز یه میکروسرویسه
بعد مثلاً اون لایک و دیسلایک اون پایین
یه میکروسرویسه کامنت یه میکروسرویسه مثال
میزنم اینا میشن میکروسرویسهای مختلف که
کنار همدیگه رو یک سرور دارن کار میکنن و
میتونن تیمهای جدا داشته باشن کاملاً از
همدیگه ایزوله باشن میگه پروتوباف جاهایی
که در حقیقت قراره بین این سرویس یک
ارتباطی برقرار بشه کار میکنه چون این
سرویسها لزوماً همیشه مستقل از هم نیستن
این هست که بین همدیگه یک ارتباطی هم دارن
اسکیما یکی از مهمترین تفاوتهای بین جیسون و
پروتوباف مفهوم اسکیما
توی جیسون
ما یه همچین چیزی رو دریافت میکنیم
اما از خود جیسون ارزا مشخص نیست که سن
باید همیشه عدد باشه یا نیم اجباریه یا
مثلاً آیا نیم اجباریه یعنی شما تو جس
نمیتونی اینو بفهمی چیزی به نام اسکیما
یا فارسی مثلاً میشه قالب وجود نداره
اما توی پروتوباف ساختارو شما از قبل مشخص
کردید همون فایل اولی هست که اول میفرسته
بعد دیتا رو میفرسته
این فایل در واقع یک کانترکت قرار داده
بین کلاینت و سرور
یعنی کلانت سرور هر دو میدونن که چه
اطلاعاتی باید ارسال و دریافت بشه.
اینجا یکی از تواضع مهم دوره رو بدون بچهها میگه که پروتوکل بافر هیچ ارتباطی
با جیآر پی سی نداره. این دو تا یه چیز
نیستن.
میگه پروتوکل بافر وظیفه تعریف ساختار داده سلریزیشن رو دارد. اما جیآرپی سی یک
فریمورک برای ارتباط بین برنامهها و
سرویسهاست.
به عبارت ساده پروتوبا
این این کار انجام میده که میاد چگونه داده رو تعریف و سریال بکنیم در حالی که
جیآرپی سی چیه چگونه ارتباطو برقرار بکنیم
جیآرپی سی معمولاً برای
به طور معمول از پروتوباف برای تعریف
ایپیآی استفاده میکنن
یعنی جالب اجرا یک فانکشن رو یک سیستم دیگر به شکلی تت شبیه فراخوانی یک فانکشن
معمولی باشد مثلاً تصور کن روی سرور تابعی
داریم به این شکل اگر سرور روی کامپیوتر
دیگری باشد کلاینت نمیتوان مستقیماً این
فانکشنو اجرا کند اما با جیآرپی سی
میتواند چیز شبیه این داشته باشد
از دید برنامه کلاینت تقریباً شبیه
فراخوان یک فانکشن است اما در واقع عملیات
زیر اتفاق افتاده کلاینت یه ریکوست
میفرسته به نتوک سرور اون فانکشن اجرا
میشه سلولایز میشه جوابش میاد تو نتورک
میرسه به کلاینت
بسیاری از این مراحل رو ما برای جیآرپی سی
بسیاری از این مراحل رو برای ما مدیریت
میکنه
علاوه بر تعریف دیتا استراکچر در فال پروتو میتوان ایپیآی را نیز تعریف کرد.
مثلاً
یه همچین فایلی داریم میشه تعریف کرد.
ایپیآ میشه تعریف کرد علاوه بر خود ساختار
اون دیتا.
تو این مثال اومده یک سرویس ساختیم.
یوزر سرویس. این سرویس یک متد گت یوزر و
ورودی آن یوزر ریکوسته و خروجیشم یوزر
ریسپانسه.
یعنی قرارداد ایپی قبل از نوشتن کد کلاینت
و سرور کاملاً مشخص شده است.
پس ما یه یوزر سرویس داریم که به عنوان
ورودی یک روز ریکوستی رو قبول میکنه و یک
جوابی رو برمیگرده.
معماری جبی سی معماری معمولاً یه چیز شبیه
اینه. یه دونه دات پروتو داریم بعد کد
جنریت میشه و بعد ارتباط بین کلاینت و
سروه ایجاد میشه. یکی از فناوریهای مهم
پشت جیآرپی سی اچتی پی ورژن د
اچیتی پی ورژن د
امکان یه ارتباط این چپ و راست شده خوندنشم سخت شده یه ارتباط کارآمد
مثل استریمینگو فراهم میکنه به همین دلیل
جیآرپی سی قابلیتهایی داره که در ادامه
دوره بسیار مهم خواهد شد حالا بهش میرسیم
مثلاً ششم همراه
میکنیم. اوکی گفتمتون بچهها ما پروژه
خواهیم داشت برای این م این موضوع یعنی
پروژه کامل خواهیم زد.
یه مثال واقعی فرض کنید یه فروشگاه
اینترنتی بزرگ داریم چند میکروسرویس مختلف
داره یوزر سرویس پروداکت سرویس اردر سرویس
پیمنت سرویس و اینونتوری یا اون موجودی
انوارش
مثلاً اردر سرویس باید قبل از ثبت سفارش
بررسی کنه که محصول موجود است یا خیر.
میتواند به اینونتور سرویس یک درخواست
ارسال بکنه. در پروتوباف ممکنه چیزی مانع
داشته باشه.
بنابراین اردر سرویس
میتواند به شکل بسیار سریع و ساختاری
یافته با اینونتوری سرویس ارتباط برقرار
کند. این دقیقاً یکی از کاربردای رایج
جیآرپی سی در معماری میکروسرویسه.
تقریباً برامون جا افتاد که جیآرپی سی
داره چیکار میکنه.
فعلا مقایسه رو در ذهن داشته باشید که رست با جیآر پی سی تفاوتشون چیه؟ رست اچیتی پی
معمولاً با جیسون کار میکنه پابلیک ایپی
برای مناسب پابلیک ایپیآی خانه بالا و
بروزر فرندلیه اما جیآرپی سی با ورژن د
ایتی پی کار میکنه معمولاً با پروتوباف
کار میکنه برای میکروسرویس خوبه باینری
کار میکنه استریمینگ قدرتمند و کد جنریشن
البته هیچ کدام مطلقاً بهتر از دیگری نیست
بچهها اینا کاربرداشو متفاوته بستگی به
نوع پروژه داره برای مثال ایپیومی که قرار
است از جاوا اسکریپت موبایل و سرویسهای
شخص ثالث استفاده کنه ممکنه رست انتخاب
بهتری باشه اما برای ارتباط سریع بین
میکروسرویسها جیآرپی سی میتواند گزینه
بسیار مناسبی باشد.
خب اینم جمعبندی قسمت اول. بریم سراغ
قسمت دوم.
ببینم چند دقیقه شد ویدیومون. یه کوچولو این قسمتو بگم بعد بقشمون یعنی
جلسه بعدی
میخوام راجع به ساختار فایل پروتو و
تعریف دادهها در پروتوکل بافر صحبت بکنیم
در قسمت قبل دیدیم که پروتوکل بافر یا
همون پروتوباف برای تعریف ساختار داده و
سلریزیشن استفاده میشه در این قسمت
میخوایم یاد بگیریم فایل پروتوتول دقیقاً
چگونه نوشته میشه و اجزای اصلی اون چیست
بریم ادامه بدیم
فایل پروتوکل بافل معمولاً پسوند پروتوئه برای مثال user.پرو
یا مثلاً پروداکت.پروتو
این فایل در واقع قرارداد دادهای بین
کلاینت و سروره
و خط اولم میگه که نسخه پروتوبافو مشخص
میکنیم. مثلاً اینجا میگیم نسخه سه از
نسخه سومش داریم استفاده میکنیم.
مفهوم مسج مهمترین مفهوم پروتوبا عبارت است از مسج یک مسیج رو میتوان تقریباً
شبیه کلس یا استراکت در زبان برنامهی در
نظر گرفت استراکت فکر کنم مال برنامه
راسته کلاسم که خب خیلی جا داره
مثلاً مسج یوزر اینجا
یک مدل داده به نام یوزر داریم
اگر بخوایم اون رو در پایتون تصور کنیم یه
همچین چیزی میشد مثلاً یه کلاس یوزر مثلاً
البته فایل پروتو مستقل از زبان برنامه
سیست یعنی همین مسیجو میتوان برای تولید
کد در زبانهای مختلف استفاده کرد. این
یکی از بزرگترین مزعیتهای پروتوبافه.
تا اینجاش بمونه ادامهشو جلسه بعدی صحبت
کنیم. فعلاً خداحافظ. ‏M.
پرسشهای رایج
پاسخ کوتاه و مستقیم به پرسشهایی که معمولاً هنگام یادگیری این موضوع مطرح میشوند.
پروتوکل بافر یک روش سریالیزاسیون داده است که باعث کاهش حجم داده و افزایش سرعت پردازش میشود.
جیآرپی سی یک فریم ورک برای ارتباط بین برنامهها و سرویسها است که معمولاً با پروتوکل بافر همکاری میکند.
مسج در پروتوکل بافر به عنوان یک مدل داده عمل میکند و میتواند شبیه کلاس یا استراکت در زبانهای برنامهنویسی باشد.
آخرین بهروزرسانی محتوای متنی:
🎓 دوره جامع «متخصص مهندسی داده و بیگ دیتا» | Pista Academy در دنیای امروز، حجم عظیمی از دادهها هر روز توسط سازمانها، کسبوکارها و سرویسهای آنلاین تولید میشود؛ اما داده زمانی ارزشمند است که بتوانیم آن را بهدرستی جمعآوری، ذخیره، پردازش و مدیریت کنیم. در دوره «متخصص مهندسی داده و بیگ دیتا» در Pista Academy، قدمبهقدم با مفاهیم، ابزارها و تکنولوژیهای مهم حوزه Data Engineering و Big Data آشنا میشویم و تلاش میکنیم مسیر یادگیری را از مفاهیم پایه تا ابزارهای حرفهای این حوزه طی کنیم. 📚 در این دوره با موضوعاتی مانند موارد زیر آشنا خواهید شد: 🔹 Linux Server و ابزارهای موردنیاز مهندسی داده 🔹 Python و Java برای کار با ابزارهای Data Engineering 🔹 مفاهیم دادههای توزیعشده و پایگاه داده 🔹 پایگاه دادههای رابطهای و SQL 🔹 پایگاه دادههای NoSQL 🔹 مفاهیم Big Data 🔹 اکوسیستم Hadoop 🔹 کار با ابزارهای Hadoop و مثالهای کاربردی 🔹 Apache Spark و پردازش دادههای حجیم 🔹 کار عملی با ابزارهای Spark 🔹 Kubernetes 🔹 خودکارسازی و مدیریت فرایندهای انتشار در مهندسی داده 🎯 این دوره برای چه کسانی مناسب است؟ اگر قصد دارید وارد حوزه مهندسی داده شوید، دانش خود را در زمینه Big Data گسترش دهید یا با ابزارهایی مانند Hadoop، Spark، SQL، NoSQL و Kubernetes بهصورت جدیتر آشنا شوید، این دوره میتواند مسیر مناسبی برای شروع و توسعه مهارتهای شما باشد. در طول دوره تلاش میکنیم مفاهیم را به زبان ساده و کاربردی بررسی کنیم و در کنار مباحث تئوری، با ابزارها و سناریوهای واقعی نیز آشنا شویم. ━━━━━━━━━━━━━━━━━━ 📌 نام دوره: متخصص مهندسی داده و بیگ دیتا 🏫 Pista Academy آموزش تخصصی، ساده و کاربردی اگر این آموزش برای شما مفید بود، با 👍 لایک کردن ویدیو و Subscribe کردن کانال Pista Academy از ادامه تولید آموزشهای تخصصی حمایت کنید. همچنین اگر درباره مباحث دوره سؤال یا پیشنهادی دارید، در بخش نظرات مطرح کنید. 👇 #مهندسی_داده #بیگ_دیتا #DataEngineering #BigData #Python #SQL #NoSQL #Hadoop #Spark #Kubernetes #PistaAcademy