Forwarded from Linuxor ?
توی دوران دانشگاه از این علامتای ریاضی میدادن ما میخواستیم تبدیل به کدش کنیم دهنمون سرویس میشد نمیدونستیم بازه بالا رو کوچیکتر بگیریم کوچیکتر مساوی بگیریم و همیشه هم جواب اشتباه در میاومد
اینجا اومده همه علامتای ریاضی رو به کد تبدیل کرده چیزی گیر کردین از اینجا ببینید:
github.com/Experience-Monks/math-as-code
@Linuxor
اینجا اومده همه علامتای ریاضی رو به کد تبدیل کرده چیزی گیر کردین از اینجا ببینید:
github.com/Experience-Monks/math-as-code
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
دوره گیت هاب کوپایلوت در ویژوال استودیو | زیرنویس فارسی
یوتیوب
https://youtube.com/playlist?list=PLIYFrSI-Jz_bA4zRegP2FU0K5jJDzHtE7&si=8FTu2_eewqOGkVDL
آپارات (نیم بها)
https://www.aparat.com/v/evxkis5
@DevTwitter | <Hamed/>
یوتیوب
https://youtube.com/playlist?list=PLIYFrSI-Jz_bA4zRegP2FU0K5jJDzHtE7&si=8FTu2_eewqOGkVDL
آپارات (نیم بها)
https://www.aparat.com/v/evxkis5
@DevTwitter | <Hamed/>
Forwarded from Linuxor ?
تیم تحقیقاتی دانشگاه Tsinghua توی چین یه لیستی از GNN ها یا شبکه های عصبی گرافی رو جمع کرده همه نوع چیز توشه، مثلا یه سری مقالات داره برای کاربرد های GNN توی حوزه های مختلف مثل شیمی و فیزیک و... چیز های جالبی میشه توش پیدا کرد از NLP بگیر تا بینایی ماشین هم توش هست:
github.com/thunlp/GNNPapers
@Linuxor
github.com/thunlp/GNNPapers
@Linuxor
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 آتشسوزی در مرکز داده ملی کره جنوبی (NIRS – دائجون) در تاریخ ۲۶ سپتامبر ۲۰۲۵ به علت انفجار باتری لیتیوم-یونی UPS هنگام جابجایی در پی این حادثه ۶۴۷ سامانه دولتی از کار افتاد و خدمات حیاتی مثل بانکداری، پست، حملونقل، احراز هویت و اینترانت دولتی مختل شدند.
علتهای فنی اصلی این موضوع باتریها (LG Energy Solution، نصب ۲۰۱۲–۲۰۱۳) که از عمر مفید ۱۰ ساله گذشته بودند و احتمال خطای انسانی در جداسازی کابلها بدون قطع کامل برق گزارش شده و باتریها در نزدیکی سرورها (۶۰ سانتیمتر فاصله) نصب شده بودند و اولین انفجار باعث این مشکل شد.
برخی از سیستمها ممکن است به طور کامل از بین رفته باشند؛ بهعنوان مثال گفته شده است یکی از درایوها (در سامانه G-Drive دولتی) در آتشسوزی از بین رفته و نمیتوان آن را بازیابی کرد.
https://www.youtube.com/watch?v=IeU69n-yV-s
#خبر
@TheRaymondDev
علتهای فنی اصلی این موضوع باتریها (LG Energy Solution، نصب ۲۰۱۲–۲۰۱۳) که از عمر مفید ۱۰ ساله گذشته بودند و احتمال خطای انسانی در جداسازی کابلها بدون قطع کامل برق گزارش شده و باتریها در نزدیکی سرورها (۶۰ سانتیمتر فاصله) نصب شده بودند و اولین انفجار باعث این مشکل شد.
برخی از سیستمها ممکن است به طور کامل از بین رفته باشند؛ بهعنوان مثال گفته شده است یکی از درایوها (در سامانه G-Drive دولتی) در آتشسوزی از بین رفته و نمیتوان آن را بازیابی کرد.
https://www.youtube.com/watch?v=IeU69n-yV-s
#خبر
@TheRaymondDev
YouTube
국가 전산망 화재 일주일째…추석 연휴 불편 불가피 / 연합뉴스 (Yonhapnews)
[영상] 국가 전산망 화재 일주일째…추석 연휴 불편 불가피
(서울=연합뉴스) 대전 국가정보자원관리원 화재로 국가 전산망이 마비된 지 일주일이 지났지만, 복구는 더디게 진행되고 있어 추석 연휴에도 국민 불편이 불가피할 전망입니다.
지난달 26일 전산실 화재로 총 647개 정부 행정서비스와 내부 업무망이 동시에 중단됐습니다. 이 중 96개 시스템은 완전히 전소돼 최소 한 달 이상 복구가 어려운데요.
공무원들이 업무 자료를 저장해온…
(서울=연합뉴스) 대전 국가정보자원관리원 화재로 국가 전산망이 마비된 지 일주일이 지났지만, 복구는 더디게 진행되고 있어 추석 연휴에도 국민 불편이 불가피할 전망입니다.
지난달 26일 전산실 화재로 총 647개 정부 행정서비스와 내부 업무망이 동시에 중단됐습니다. 이 중 96개 시스템은 완전히 전소돼 최소 한 달 이상 복구가 어려운데요.
공무원들이 업무 자료를 저장해온…
Forwarded from IRCF | اینترنت آزاد برای همه
This media is not supported in your browser
VIEW IN TELEGRAM
پنل رایگان #BPB و راهحلهای دورزدن فیلترینگ به کمک کلودفلر
💡 filtershekan.sbs/BPB
© GhostOfSarina
🔍 ircf.space
@ircfspace
💡 filtershekan.sbs/BPB
© GhostOfSarina
🔍 ircf.space
@ircfspace
Forwarded from Bardiaism
Media is too big
VIEW IN TELEGRAM
آموزش Qt و Qml - انجام پروژه پنل بازی - قسمت دهم
تو این قسمت از توسعه پنل بازیمون، ظاهر بقیه کلیدهای نوار ابزار بالا رو پیادهسازی میکنیم، کامپوننتهای بیشتری میسازیم، یک مقدار کد رو مرتب میکنیم و همینطور دستی به ظاهر پنل کناری میزنیم تا جذابتر بشه.
این ویدیو بخاطر طولانی بودن به دو قسمت ۱۰ و ۱۱ شکسته شد، این قسمت دوم از اون ویدیو هست و قسمت اولش قبلا آپلود شده.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در کانال یوتیوب:
https://youtu.be/BxBpkpb45MA
@Bardiaism
تو این قسمت از توسعه پنل بازیمون، ظاهر بقیه کلیدهای نوار ابزار بالا رو پیادهسازی میکنیم، کامپوننتهای بیشتری میسازیم، یک مقدار کد رو مرتب میکنیم و همینطور دستی به ظاهر پنل کناری میزنیم تا جذابتر بشه.
این ویدیو بخاطر طولانی بودن به دو قسمت ۱۰ و ۱۱ شکسته شد، این قسمت دوم از اون ویدیو هست و قسمت اولش قبلا آپلود شده.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در کانال یوتیوب:
https://youtu.be/BxBpkpb45MA
@Bardiaism
Forwarded from Bardiaism
Media is too big
VIEW IN TELEGRAM
آموزش Qt و Qml - انجام پروژه پنل بازی - قسمت یازدهم
تو این قسمت از توسعه پنل بازیمون، پنل کناری رو کامل میکنیم. لیستی از آیتمها درون اون اضافه میکنیم، افکت انتخاب هر آیتم رو میسازیم و اون رو جوری پیادهسازی میکنیم که با باز و بسته شدنش شکل نمایشش بهم نریزه.
این ویدیو بخاطر طولانی بودن به دو قسمت ۱۰ و ۱۱ شکسته شد، این قسمت دوم از اون ویدیو هست و قسمت اولش قبلا آپلود شده.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در کانال یوتیوب:
https://youtu.be/zfU4J-xKXfA
@Bardiaism
تو این قسمت از توسعه پنل بازیمون، پنل کناری رو کامل میکنیم. لیستی از آیتمها درون اون اضافه میکنیم، افکت انتخاب هر آیتم رو میسازیم و اون رو جوری پیادهسازی میکنیم که با باز و بسته شدنش شکل نمایشش بهم نریزه.
این ویدیو بخاطر طولانی بودن به دو قسمت ۱۰ و ۱۱ شکسته شد، این قسمت دوم از اون ویدیو هست و قسمت اولش قبلا آپلود شده.
گیتهاب پروژه:
https://github.com/realbardia/game-panel
لینک ویدیو در کانال یوتیوب:
https://youtu.be/zfU4J-xKXfA
@Bardiaism
Forwarded from DevTwitter | توییت برنامه نویسی
جنگو ۶ رسید!
جنگو نسخه ۶.۰ (آلفا) منتشر شده و تغییرات بزرگی همراه خودش آورده
چند مورد مهم:
- تسکهای پسزمینه داخلی → دیگه برای کارهای ساده نیازی به Celery نیست
- بهبود پشتیبانی از async: مقیاسپذیری راحتتر
- فرمها و ORM بهتر: کوئریهای تمیزتر و تایپینگ قویتر
- بهبودهای پنل ادمین: امکانات بیشتر برای دولوپرها
- تایپ annotation در همه جا: تجربه بهتر در ویرایشگرها
برای من جذابترین بخش، تسکهای پسزمینه داخلی هست — چون دیگه برای پروژههای کوچک و متوسط، نیاز به نصب و کانفیگ سلری نداریم.
@DevTwitter | <Benyamin Medghalchi/>
جنگو نسخه ۶.۰ (آلفا) منتشر شده و تغییرات بزرگی همراه خودش آورده
چند مورد مهم:
- تسکهای پسزمینه داخلی → دیگه برای کارهای ساده نیازی به Celery نیست
- بهبود پشتیبانی از async: مقیاسپذیری راحتتر
- فرمها و ORM بهتر: کوئریهای تمیزتر و تایپینگ قویتر
- بهبودهای پنل ادمین: امکانات بیشتر برای دولوپرها
- تایپ annotation در همه جا: تجربه بهتر در ویرایشگرها
برای من جذابترین بخش، تسکهای پسزمینه داخلی هست — چون دیگه برای پروژههای کوچک و متوسط، نیاز به نصب و کانفیگ سلری نداریم.
@DevTwitter | <Benyamin Medghalchi/>
Forwarded from Linuxor ?
خیلیا فکر میکنن RTX 3090 یه مدل کاملاً جدید و قویتر از 3080ه، ولی در واقع هر دو از یه تراشه ساخته شدن (GA102)، و تفاوتشون در واقع نقص بعضی کارت گرافیکا توی تولیده.
در واقع تفاوتشون توی تعداد هستههای فعال و مقدار حافظهست، یعنی 3090 نسخهی کاملتر اون تراشهست و 3080 معمولاً همون تراشهست که بخشهایی ازش بهدلیل نقص جزئی یا برای تفکیک بازار غیرفعال شده.
ساخت تراشه مثل چاپ کاغذ نیست که همیشه بینقص دربیاد؛ گاهی بخشی از سیلیکون دچار ایراد میشه. شرکتها اون تراشهها رو دور نمیریزن، بلکه با هستههای کمتر میفروشنش، همون چیزیه که باعث میشه مدلهای مختلف مثل 3080 و 3090 وجود داشته باشن.
این روش بهش میگن binning؛ یعنی شرکتها تراشههایی که از یک ویفر ساخته شدن رو تست میکنن، و بسته به کیفیت و سلامتشون در دستههای مختلف قرار میدن.
@Linuxor
در واقع تفاوتشون توی تعداد هستههای فعال و مقدار حافظهست، یعنی 3090 نسخهی کاملتر اون تراشهست و 3080 معمولاً همون تراشهست که بخشهایی ازش بهدلیل نقص جزئی یا برای تفکیک بازار غیرفعال شده.
ساخت تراشه مثل چاپ کاغذ نیست که همیشه بینقص دربیاد؛ گاهی بخشی از سیلیکون دچار ایراد میشه. شرکتها اون تراشهها رو دور نمیریزن، بلکه با هستههای کمتر میفروشنش، همون چیزیه که باعث میشه مدلهای مختلف مثل 3080 و 3090 وجود داشته باشن.
این روش بهش میگن binning؛ یعنی شرکتها تراشههایی که از یک ویفر ساخته شدن رو تست میکنن، و بسته به کیفیت و سلامتشون در دستههای مختلف قرار میدن.
@Linuxor
Forwarded from نوشتههای ترمینالی
اگه به git hook ها علاقه مند شدید، یکسری ابزار ساده هم هست که میتونید استفاده کنید تا کمی کارتون راحت تر باشه. من husky رو پیدا کردم که میاد با کمک core hooks براتون هوک ها رو مدیریت میکنه. سبک وزن و بامزهست ولی بدون اون هم کارتون راه میوفته.
https://typicode.github.io/husky/
یکسری امکانات. pre commit hook هم میتونید توی این پروژه پیدا کنید.
https://pre-commit.com/
و گیتهابشون:
https://github.com/pre-commit/pre-commit-hooks
https://typicode.github.io/husky/
یکسری امکانات. pre commit hook هم میتونید توی این پروژه پیدا کنید.
https://pre-commit.com/
و گیتهابشون:
https://github.com/pre-commit/pre-commit-hooks
typicode.github.io
Husky
Git hooks made easy
Forwarded from shahriaarrr (Shahriar)
رفقا سلام🤞
📣 ویدیو جدید توی کانال یوتیوب آپلود شد👀
📱 مشاهده ویدیو
🗣 توی این ویدیو به مناسبت رویداد هکتوبرفست ۲۰۲۵ درباره این هکاتون جذاب سالانه صحبت و معرفی کردم و بهتون یاد دادم چجوری میتونید توی این رویداد شرکت کنید و جوایز جذابشو بگیرید😎 🔥 🔥
((دوستان انتقادات و پیشنهاداتون باعث میشه تا نقاط ضعف کار مشخص بشه و برای اصلاحش گام برداریم.پس حتما نظراتتون رو زیر ویدیو کامنت کنین❤️ ))
🔴 🔴 🔴 🔴 🔴 🔴 🔴 🔴
چنل یوتیوبمون رو حتما سابسکرایب کنین و در ضمن لایک و کامنت یادتون نره😉
⭐️ @shahriaarrr12
((دوستان انتقادات و پیشنهاداتون باعث میشه تا نقاط ضعف کار مشخص بشه و برای اصلاحش گام برداریم.پس حتما نظراتتون رو زیر ویدیو کامنت کنین
چنل یوتیوبمون رو حتما سابسکرایب کنین و در ضمن لایک و کامنت یادتون نره
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from CleverDevs (Mammad)
کتاب هایی که خوندین و پیشنهاد میکنید (چه تخصصی چه سایر کتاب ها)
اگه خواستید تو کامنتا معرفی کنید
@CleverDevs - @CleverDevsGp
اگه خواستید تو کامنتا معرفی کنید
@CleverDevs - @CleverDevsGp
Forwarded from DevTwitter | توییت برنامه نویسی
چطور بتونیم کوئریهای کند توی لاراول رو پیدا کنیم؟
یکی از فیچرهای باحالی که لاراول داره اینه که بدون نصب پکیجی خیلی راحت و ساده میتونی کوئریهای سنگین اپلیکیشنت رو شناسایی کنی و کاملا خودکار اون کوئری رو مثلا لاگ کنی یا توی اسلک یا ایمیل یا هر کانالی برای خودت یا تیمت بفرستی که بعدا اونا رو ریفکتور کنی.
توی این مقاله توضیح دادم که با یه پیاده سازی تمیز و اصولی بدون هیچ پکیج اضافی چطور میتونی پرفورمنس اپلیکیشنت رو بالا ببری
https://farshadth.medium.com/a-clean-way-to-detect-slow-queries-in-laravel-d9d4ae57183c
@DevTwitter | <Farshad Tofighi/>
یکی از فیچرهای باحالی که لاراول داره اینه که بدون نصب پکیجی خیلی راحت و ساده میتونی کوئریهای سنگین اپلیکیشنت رو شناسایی کنی و کاملا خودکار اون کوئری رو مثلا لاگ کنی یا توی اسلک یا ایمیل یا هر کانالی برای خودت یا تیمت بفرستی که بعدا اونا رو ریفکتور کنی.
توی این مقاله توضیح دادم که با یه پیاده سازی تمیز و اصولی بدون هیچ پکیج اضافی چطور میتونی پرفورمنس اپلیکیشنت رو بالا ببری
https://farshadth.medium.com/a-clean-way-to-detect-slow-queries-in-laravel-d9d4ae57183c
@DevTwitter | <Farshad Tofighi/>
Forwarded from DevTwitter | توییت برنامه نویسی
سلاممممم
دیروز یه پکیج کاربردی برای بچه های فرانت (vue.js) ساختم که بتونن به کمک کامپوننت <Transition> که خود vue ارائه میکنه state های مختلف کامپوننت ها و node ها رو مدیریت کنن و کلی ترنزیشن و انیمیشن خفن به پروژشون اضافه کنن
حتما حتما استفاده کنید فیدبک بدید و اگر موردی مدنظرتون بود میتونید تو گیت هاب مطرح کنید
برای نحوه استفاده و قابلیت هاش داکیومنت رو مطالعه کنید
لینک گیت هاب:
https://github.com/Redskullvue/vue-transify
لینک دمو:
https://vue-transify.netlify.app/
@DevTwitter | <Pooya Goodarzi/>
دیروز یه پکیج کاربردی برای بچه های فرانت (vue.js) ساختم که بتونن به کمک کامپوننت <Transition> که خود vue ارائه میکنه state های مختلف کامپوننت ها و node ها رو مدیریت کنن و کلی ترنزیشن و انیمیشن خفن به پروژشون اضافه کنن
حتما حتما استفاده کنید فیدبک بدید و اگر موردی مدنظرتون بود میتونید تو گیت هاب مطرح کنید
برای نحوه استفاده و قابلیت هاش داکیومنت رو مطالعه کنید
لینک گیت هاب:
https://github.com/Redskullvue/vue-transify
لینک دمو:
https://vue-transify.netlify.app/
@DevTwitter | <Pooya Goodarzi/>
Forwarded from SoniaCircuit (Sonia Fatholahi)
همچین رقم هایی یکم عجیبه
دوستان عزیز که تو شرکت های ایرانی مشغول کار هستید ممنون میشم یه رنج حقوقی بگین بسی مشخص شه تجربه ها چطور بوده
دوستان عزیز که تو شرکت های ایرانی مشغول کار هستید ممنون میشم یه رنج حقوقی بگین بسی مشخص شه تجربه ها چطور بوده
Forwarded from Gopher Academy (Bardia.go)
یکی از سوال های محبوب مصاحبه بک اند: فرق Kafka و RabbitMQ چیه؟
۱. Performance and Scalability
کافکا برای throughput بالا و horizontal scalability ساخته شده است. هرچند RabbitMQ پرفرمنس بالایی دارد وقتی throughput و حجم داده زیاد باشد کافکا مناسب تر است.
۲. Message Ordering
در RabbitMQ در یک صف ترتیب پیام ها حفظ میشود. در کافکا در یک پارتیشن ترتیب پیام های یک topic حفظ میشود اما نه در پارتیشن های مختلف.
۳. Message Priority
در RabbitMQ از اولویت پیام ها پشتیبانی میشود که اجازه میدهد پیام های با اولویت بالا زودتر پردازش شوند. کافگا به صورت built-in از اولویت پشتیبانی نمیکند.
۴. Message Model
مدل پیام های RabbitMQ مبتنی بر صف است و از پروتکل AMQP تبعیت میکند اما کافکا مدل لاگ توزیع شده دارد.
۵. Durability:
برای اینکه پیام ها Durable باشند یعنی اگر failure رخ دهد از بین نروند، در RabbitMQ نیاز به تنظیمات است اما کافکا به طور درونی از این مورد پشتیبانی میکند.
۶. Message Routing
در Rabbit برای مسیریابی پیام ها پیشرفته تر و با استفاده از exchange و binding انجام میشود اما در کافکا ابتدایی تر و با استفاده از topic و پارتیشن ها انجام میشود.
۷. Replication
در Rabbit برای replication می توان از Mirrored Queue استفاده کرد. و کافکا نیز به صورت درونی از partition replication پشتیبانی میکند.
8. Stream Processing
هر دو کافکا و Rabbit از پردازش Stream پشتیبانی می کنند.
9. Latency
طراحی RabbitMQ برای تاخیر کم است و در جایی که نیاز به پردازش نزدیک به realtime است، استفاده میشود.
10. License
لایسنس Rabbit از نوع Mozilla Public License و لایسنس کافکا از نوع 2.0 Apache است.
RabbitMQ یک message broker اما کافکا یک distributed streaming platform است.
یک فرق اساسی این است که کافکا pull-based اما RabbitMQ داری پروتکل push-based است.
یک سیستم pull-based صبر می کند تا مصرف کننده ها داده را درخواست کنند.
یک سیستم push-based به صورت اتوماتیک پیام ها را به مصرف کنندهای که subscribe کردهاند میفرستد.
یک سیستم pull-based برای کافکا معنی میدهد. چون در کافکا پیام های هر پارتیشن ترتیب دارد و کاربران می توانند با throughput بیشتری داده ها را دریافت کنند.
RabbitMQ یک push model با محدودیت prefetch دارد. برای پیام هایی با low-latency مناسب است. هدف اصلی مدل push این است که پیام ها هر چه سریعتر توزیع شوند اما یکی یکی.
RabbitMQ می تواند هر ثانیه 4k تا 10k پیام هر ثانیه بفرستد اما کافکا می تواند ۱ میلیون پیام هر ثانیه بفرستد.
در Rabbit مدل smart broker و dumb consumer استفاده میشود اما در کافکا مدل dumb broker و smart consumer استفاده میشود.
نگه داری پیام در RabbitMQ به صورت acknownledge-based اما در کافکا به صورت policy-based است.
در RabbitMQ هیچ محدودیتی برای سایز payload نیست اما در کافکا به صورت پیش فرض یک مگابایت است.
تمرین عملی: یک اپلیکیشن چت بنویسید که چند نمونه از بک اند بالا باشد و هر کلاینت به یک بک اند وصل شود و از طریق کافکا یا RabbitMQ بک اند ها رو با هم sync کنید.
#DevTwitter | <Pouria Jahandideh/>
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers
۱. Performance and Scalability
کافکا برای throughput بالا و horizontal scalability ساخته شده است. هرچند RabbitMQ پرفرمنس بالایی دارد وقتی throughput و حجم داده زیاد باشد کافکا مناسب تر است.
۲. Message Ordering
در RabbitMQ در یک صف ترتیب پیام ها حفظ میشود. در کافکا در یک پارتیشن ترتیب پیام های یک topic حفظ میشود اما نه در پارتیشن های مختلف.
۳. Message Priority
در RabbitMQ از اولویت پیام ها پشتیبانی میشود که اجازه میدهد پیام های با اولویت بالا زودتر پردازش شوند. کافگا به صورت built-in از اولویت پشتیبانی نمیکند.
۴. Message Model
مدل پیام های RabbitMQ مبتنی بر صف است و از پروتکل AMQP تبعیت میکند اما کافکا مدل لاگ توزیع شده دارد.
۵. Durability:
برای اینکه پیام ها Durable باشند یعنی اگر failure رخ دهد از بین نروند، در RabbitMQ نیاز به تنظیمات است اما کافکا به طور درونی از این مورد پشتیبانی میکند.
۶. Message Routing
در Rabbit برای مسیریابی پیام ها پیشرفته تر و با استفاده از exchange و binding انجام میشود اما در کافکا ابتدایی تر و با استفاده از topic و پارتیشن ها انجام میشود.
۷. Replication
در Rabbit برای replication می توان از Mirrored Queue استفاده کرد. و کافکا نیز به صورت درونی از partition replication پشتیبانی میکند.
8. Stream Processing
هر دو کافکا و Rabbit از پردازش Stream پشتیبانی می کنند.
9. Latency
طراحی RabbitMQ برای تاخیر کم است و در جایی که نیاز به پردازش نزدیک به realtime است، استفاده میشود.
10. License
لایسنس Rabbit از نوع Mozilla Public License و لایسنس کافکا از نوع 2.0 Apache است.
RabbitMQ یک message broker اما کافکا یک distributed streaming platform است.
یک فرق اساسی این است که کافکا pull-based اما RabbitMQ داری پروتکل push-based است.
یک سیستم pull-based صبر می کند تا مصرف کننده ها داده را درخواست کنند.
یک سیستم push-based به صورت اتوماتیک پیام ها را به مصرف کنندهای که subscribe کردهاند میفرستد.
یک سیستم pull-based برای کافکا معنی میدهد. چون در کافکا پیام های هر پارتیشن ترتیب دارد و کاربران می توانند با throughput بیشتری داده ها را دریافت کنند.
RabbitMQ یک push model با محدودیت prefetch دارد. برای پیام هایی با low-latency مناسب است. هدف اصلی مدل push این است که پیام ها هر چه سریعتر توزیع شوند اما یکی یکی.
RabbitMQ می تواند هر ثانیه 4k تا 10k پیام هر ثانیه بفرستد اما کافکا می تواند ۱ میلیون پیام هر ثانیه بفرستد.
در Rabbit مدل smart broker و dumb consumer استفاده میشود اما در کافکا مدل dumb broker و smart consumer استفاده میشود.
نگه داری پیام در RabbitMQ به صورت acknownledge-based اما در کافکا به صورت policy-based است.
در RabbitMQ هیچ محدودیتی برای سایز payload نیست اما در کافکا به صورت پیش فرض یک مگابایت است.
تمرین عملی: یک اپلیکیشن چت بنویسید که چند نمونه از بک اند بالا باشد و هر کلاینت به یک بک اند وصل شود و از طریق کافکا یا RabbitMQ بک اند ها رو با هم sync کنید.
#DevTwitter | <Pouria Jahandideh/>
➖➖➖➖➖➖➖➖
🕊 @gopher_academy | @GolangEngineers