NiFi به زبان ساده، برنامه‌ای است که برای خودکارسازی جریان داده‌ها بین سیستم‌ها ساخته شده است. در حالی که اصطلاح "Dataflow" در زمینه‌های مختلف مورد استفاده قرار می‌گیرد، منظور ما از آن همان جریان خودکار و مدیریت شده اطلاعات بین سیستم‌ها می‌باشد. مشکل فضای ذخیره‌سازی داده‌ها از زمانیکه شرکت‌ها دارای بیش از یک سیستم بوده‌اند بوجود آمده است، جایی که برخی از سیستم‌ها تولید کننده داده و برخی از سیستم‌های مصرف کننده آن می‌باشند. مشکلات این گونه فضاها و الگوهای راه حل آنها، به طور گسترده مورد بحث و تفسیر قرار گرفته است. راه حل جامع در الگوهای ادغام سازمانی [EIP] یافت می‌شود.

 

برخی از چالش‌های جریان داده‌ها عبارتند از:

  1. مشکلات سیستم‌ها مانند مشکل شبکه‌ها، خرابی دیسک، اشتباه افراد
  2. میزان درخواست به داده‌ها از ظرفیت شبکه بیشتر می‌شود
  3. خود داده‌ها دچار مشکل می‌باشند مانند خرابی، بزرگی یا کوچکی بیش از حد و اشتباه در داده‌ها
  4. تغییر مداوم جریان داده سازمان‌ها
  5. تغییر و تحول مداوم سیستم‌ها
  6. تغییر مقررات و قوانین و رویه‌ها

 

در طول سال‌ها، طراحی جریان داده‌ها یکی از مشکل‌ترین مباحث در معماری سازمان بوده است. در این میان ابزارهای گوناگونی برای مدیریت این جریان بوجود آمده‌اند مانند؛ معماری خدمات‌گرا [SOA]، ظهور رابط‌های کاربری API، اینترنت اشیاء [IOT] و عظیم‌داده [BigData]. NiFi برای کمک به مقابله با چالش‌های مدرن جریان داده ساخته شده است.

 

مفاهیم اصلی NIFI

این مدل از طراحی، شرایطی را فراهم می‌کند که به NIFI کمک می‌کند تا بعنوان یک پلت‌فرم بسیار موثر برای ساخت داده‌های قدرتمند و مقیاس‌پذیر عمل کند

  • FlowFile: نشان دهنده هر شیء درون سیستم بوده و نای فای با یک رشته کلید/ مقدار آن را شناسایی می‌کند
  • FlowFile Processor: پردازنده‌ها در واقع کار را انجام می‌دهند. یک پردازنده ترکیبی از مسیریابی، تبدیل داده یا میانجیگری بین سیستم‌ها را انجام می‌دهد.
  • Connection: ارتباط میان پردازنده‌ها با این آیتم صورت می‌گیرد
  • Flow Controller: به عنوان تسهیل کننده تبادل میان پردازنده‌ها و فایل‌ها عمل می‌کند
  • Process Group: مجموعه‌ای خاص از فرآیندها و اتصالات آنها است که می‌تواند داده‌ها را از طریق پورت‌های ورودی دریافت کند و از طریق پورت‌های خروجی ارسال کند

 

معماری NIFI

NIFI در یک JVM بر روی سیستم عامل میزبان اجرا می‌شود. اجزای اصلی NiFi در JVM به شرح زیر است:

  • وب سرور: هدف از سرور وب، میزبانی از HTTP و کنترل API مبتنی بر NIFI است.
  • کنترل کننده جریان: کنترل کننده جریان مغز عملیات بوده و جریان داده‌ها را مدیریت می‌کند.
  • پسوند: انواع مختلفی از افزونه‌های NIFI وجود دارد که در سایر اسناد وجود دارند
  • مخزن FlowFile: مخزن Flowfile جایی است که NIFI وضعیت جریان داده‌های فعال را پیگیری و مدیریت می‌کند.
  • مخزن محتوا: مکان اصلی محتوای ذخیره سازی داده‌ها می‌باشد

  • مخزن رویدادها یا Provennance: جایی که تمام رویدادها و تغییرات اعمال شده بر روی جریان داده‌ها را ذخیره می‌کند.

NiFi همچنین قادر به کار در یک ساختار خوشه‌ای است. شکل زیر این نوع ساختار را نشان می‌دهد.

از همان زمان انتشار 1.0 NiFi، یک پارادایم خوشه‌بندی در آن استفاده شده است. هر نود در یک خوشه از NiFi وظایف مشابه، اما بر روی مجموعه‌های مختلف از داده‌ها را اعمال می‌کند. Apache Zookeeper یک نود از خوشه را به عنوان هماهنگ کننده خوشه انتخاب می‌کند و عملیات Failover به طور خودکار توسط ZooKeeper اداره می‌شود. تمام نودهای خوشه، داده‌ها و وضعیت را به هماهنگ کننده خوشه گزارش می‌دهند. هماهنگ کننده خوشه مسئول قطع و اتصال نودها است. علاوه بر این، هر خوشه دارای یک نود اصلی می‌باشد که آن نیز توسط ZooKeeper انتخاب شده است. به عنوان یک مدیر جریان داده، شما می‌توانید با کلاستر NiFi از طریق رابط کاربر (UI) هر گره ارتباط برقرار کنید. هر گونه تغییری که شما انجام می‌دهید، به تمام نود ها در خوشه تکرار می‌شود، که اجازه می‌دهد چندین نقطه ورود را به دست آورید.

به طور کلی NIFI به گونه‌ای طراحی شده است که با داده‌های در حجم بسیار بالا نیز کار کرده و جریان داده‌ها را بخوبی مدیریت می‌کند. اگر در راهبری جریان داده‌های خود بدنبال یک ابزار مناسب هستید NIFI می‌تواند بعنوان یک گزینه انتخاب گردد.