ناتوانی در نرم افزار چیست؟
ناتوانی در ساده ترین شکل آن این است:
توانایی یک سرویس یا مصرف کننده برای خواندن چندین بار یک پیام مشابه که گویی فقط یک بار آن را خوانده است.
به عنوان مثال بیان کنم:
تصور کنید پروژه ای دارید که موضوع کافکا با یک تولید کننده و یک مصرف کننده دارد.
تولیدکننده دادههای «کاربر جدید» را از یک رابط کاربری وب میگیرد و آنها را در پیامی برای کافکا در قالب «createUserRequest» منتشر میکند.
وظیفه مصرف کننده خواندن CreUserRequest و:
یک ردیف در جدول پایگاه داده ایجاد کنید
ایمیل خوش آمدگویی بفرستید
فرقی نمیکند که مصرفکننده آن CreUserRequest را 1 بار بخواند یا 100 بار، فقط باید یک ردیف در پایگاه داده وجود داشته باشد و یک ایمیل خوشآمدگویی ارسال شود. بیتوانی این را تضمین میکند. اگر یک یا چند بار با آن سرویس تماس بگیرید، همان نتیجه را از آن سرویس خواهید گرفت.
به عنوان مثال یک سرویس idempotent می تواند یک درخواست را بیش از یک بار بدون اینکه عوارض جانبی بیش از یک بار اتفاق بیفتد پردازش کند.
عدم توانایی در سیستم های توزیع شده ضروری است، جایی که خرابی شبکه یا خرابی سیستم می تواند منجر به چندین بار پردازش یک پیام شود.
توابع ناتوان
علاوه بر داشتن خدمات idempotent، شما دارای عملکردهای idempotent نیز هستید.
توابع بی توان با توجه به ورودی های یکسان، خروجی یکسانی را تولید می کنند، صرف نظر از …