منبع اصلی نوشتار زیر در این لینک قرار دارد

لذت برنامه نویسی: پروتکل ارتباطی ما بین ماشین‌ها

این یه تجربه پراکنده دیگه!

یه جاهایی لازم میشه که شما یه سری داده رو بین دوتا کامپیوتر ارسال کنی و یا یه فانکشن رو صدا بزنی. یکی از معمول ترین روش‌های این کار اینه که شما یه وب سرویس بالا بیاری و با json یا xml یا yaml اطلاعات رو ارسال کنی. اما این روش دوتا ایراد داره. اول اینکه مجبوری از پروتکل وب استفاده کنی یعنی یه وب سرور همیشه اجرا هست. همچنین parse کردن html تقریبا کار پرهزینه‌ای هست. پس شرکت‌های بزرگ مثل گوگل و فیسبوک به این نتیجه رسیدن که داده‌ها رو به یه فرمت استاندارد serialize کنن و بعد ارسال کنن و در نظر داشته باشن که این پروتکل‌های ارتباطی در طول زمان کامل میشن پس باید ماشین‌ها بتونن با نسخه‌های قدیمی تر با نسخه‌های جدید تر حرف بزنن. به همین خاطر یه سری کتابخانه ایجاد کردن که شما با اونها می‌تونید پروتکل خودتون رو طراحی کنید و توی زبان‌های مختلف ازش استفاده کنید. اینجا من سعی میکنم لیست این کتابخانه‌ها و یه توضیح تو دل برو غیر دقیق ازشون ارائه بدم تا اگه نیاز داشت سرنخ رو بگیره و ادامه بده!

  1. protocol buffer: این کتابخانه در گوگل طراحی شده و استفاده میشه که خروجی به زبان‌های c++ و جاوا و پایتون داره. به زبان‌های دیگه هم پورت شده اما حجم زیاد کد تولید شده و بهینه نبودن مصرف حافظه ایراد‌هایی هست که بهش میگیرن
    1. nanopb: یک پیاده‌سازی مجدد هست که سعی کرده حجم کد تولید شده کوچک باشه
  2. thrift: این کتابخانه در فیسبوک طراحی و استفاده شده. این کتابخانه خیلی شبیه protocol buffer هست با این تفاوت که لایه ارسال و دریافت این اطلاعات رو هم شامل میشه
  3. cap’n proto: این کتابخانه توسط نویسندگان کتابخانه گوگل که فکر کنم دیگه توی گوگل کار نمیکنن باز طراحی شده که در طراحیش سعی شده بسیار سریع باشه
  4. flatbuffers: این کتابخانه باز اخیرا توسط گوگل طراحی شده که مشکلات سرعت و مصرف حافظه protocol buffer رو نداشته باشه. همچنین بسیار سریع باشه که خودشون ادعا میکنن توی نوشتن بازی هم به درد میخوره
  5. apache avro: کتابخانه‌ای هست که برای ارتباط بین نود‌های hadoop طراحی شده

امیدوارم این سرنخ کوتاه به درد دیگران هم بخوره!

همین!



برچسب ها : ,