کنجکاو در مباحث مهندسی نرم افزار
چرا Kafka سریع است؟
کافکا با استفاده از I/O ترتیبی و اصل کپی صفر(Zero Copy Principle)، به برتری انتقال پیام با تأخیر زمانی کم دست پیدا میکند. همین تکنیکها به طور معمول در بسیاری از پلتفرمهای پیامرسانی/جریان اطلاعاتی دیگر نیز استفاده میشوند. نمودار زیر نحوه انتقال داده بین تولیدکننده و مصرفکننده و مفهوم کپی صفر را نشان میدهد.


این نمودارها نشان میدهد که چگونه دادهها بین تولیدکننده و مصرفکننده منتقل میشود و کپی صفر به چه معناست.
مرحله ۱.۱ - ۱.۳: تولیدکننده دادهها را روی دیسک مینویسد.
مرحله ۲: مصرفکننده دادهها را بدون کپی صفر میخواند.
- ۲.۱: دادهها از دیسک به کش (cache) سیستمعامل بارگذاری میشوند.
- ۲.۲: دادهها از کش سیستمعامل به اپلیکیشن کافکا کپی میگردند.
- ۲.۳: اپلیکیشن کافکا دادهها را به بافر سوکت (socket buffer) کپی میکند.
- ۲.۴: دادهها از بافر سوکت به کارت شبکه کپی میشوند.
- ۲.۵: کارت شبکه دادهها را به سمت مصرفکننده ارسال میکند.
مراحل با کپی صفر (مراحل ۳.۱ تا ۳.۳):
مرحله ۳: مصرفکننده دادهها را با کپی صفر میخواند.
- ۳.۱: دادهها از دیسک به کش سیستمعامل بارگذاری میشوند.
- ۳.۲: کش سیستمعامل با استفاده از دستور ()sendfile مستقیماً دادهها را به کارت شبکه کپی میکند.
- ۳.۳: کارت شبکه دادهها را به سمت مصرفکننده ارسال میکند.
کپی صفر میانبری است برای صرفهجویی در کپیهای متعدد دادهها بین محیط برنامه (application context) و محیط هسته (kernel context).این رویکرد زمان را تقریباً 65% کاهش میدهد.
باکیفیت ترین دوره آموزش برنامه نویسی چیست ؟
⭐⭐⭐⭐⭐ دوره ی آموزش دوازده قدم برنامه نویسی مهندس سام نیک زاد با کسب امتیاز بالاترین کیفیت دوره ی آموزشی بعنوان با کیفیت دوره انتخاب شده است برای مشاهده کلیک کنید
ثبت نام دوره با تخفیف از ویرگول
مطلبی دیگر از این انتشارات
چهارصد بار سریع تر داده ها رو بخوانید (فایل باینری)
مطلبی دیگر از این انتشارات
حل یک مسئله NLP با قانون بیزین
مطلبی دیگر از این انتشارات
تجربه لذت بخشِ برنامه نویسیِ وب با پایتون