اینم یه تجربه پراکنده دیگه!
همیشه در سیستمهایی که بصورت توزیع شده اجرا میشن و نیاز هست که یک سری اطلاعات رو اولا با هم دیگه توافق کنن و دوما همه به اون اطلاعات دسترسی داشته باشن و سوما اینکه بتونن اون اطلاعات رو آپدیت کنن. این عملیات رو میشه بصورتها مختلف انجام داد. ایدههایی که واقعا پیاده سازی شدن همونهایی هستن که به ذهن من و شما میرسن. میشه از یه دیتابیس برای اینکار استفاده کرد. میشه اطلاعات رو بوسیله یک سرویس مشترک در اختیار بقیه گذاشت. این دوتا روش بزرگترین ایرادشون اینه که اگه از دسترس خارج بشن معمولا هیچ کس دیگهای به این اطلاعات که معمولا حیاتی هم هستن دسترسی نداره. خب راه حل بعدی اینه که سرویسهای توزیع شده یا کلاستر شده استفاده کرد که خب یه راهحل هایی مثل zookeeper این راهبرد رو انتخاب کردن. راهبرد سوم برای این مساله استفاده از روشهای نقطه به نقطه یا peer-to-peer هست که توی این روشها همه نودها همه اطلاعات رو دارن و در صورتی که یکی از دست بره بقیه این اطلاعات رو به تازه واردهای اطلاع رسانی میکنن. خوبی این روشها معمولا اینه که مقاومتشون نسبت به از دست رفتن نودهای زیاد بالاست.
یکی از مهمترین پروتکلهایی که توی این زمینه استفاده میشه به اصطلاح پروتکلهای شایعه است. بدین صورت که هر نودی وقتی شایعهای رو میشنوه بصورتی انتخابی اون شایعه به چندتا از نودهای همسایش انتقال میده. این رفتار، رفتار شیوع پیدا کردن بیماریهای مسری هم هست. مقالات زیادی در این زمینه به چاپ رسیده ولی دوتا از پیادهسازیهای متن بازی که من میشناسم etcd و serf هست. هر دوی اینها براساس «یک کلاغ چل کلاغ» عمل میکنند و بصورت کاملا توزیع شده به کارشون ادامه میدن.
همین.