انتشار rqlite 7.0، یک DBMS قابل تحمل خطا توزیع شده بر اساس SQLite

انتشار DBMS توزیع شده rqlite 7.0 انجام شد که از SQLite به عنوان یک موتور ذخیره سازی استفاده می کند و به شما امکان می دهد کار یک خوشه را از ذخیره سازی های همگام شده با یکدیگر سازماندهی کنید. یکی از ویژگی‌های rqlite سهولت نصب، استقرار و نگهداری یک ذخیره‌سازی با تحمل خطا توزیع‌شده است که تا حدودی شبیه به etcd و Consul است، اما از مدل داده‌های رابطه‌ای به جای قالب کلید/مقدار استفاده می‌کند. کد پروژه در Go نوشته شده و تحت مجوز MIT توزیع می شود.

برای حفظ تمام گره ها در یک حالت هماهنگ، از الگوریتم اجماع Raft استفاده می شود. Rqlite از کتابخانه اصلی SQLite و درایور go-sqlite3 استفاده می‌کند، که در بالای آن لایه‌ای راه‌اندازی می‌شود که درخواست‌های مشتری را پردازش می‌کند، همانندسازی را به گره‌های دیگر انجام می‌دهد و بر دستیابی به اجماع در انتخاب یک گره پیشرو نظارت می‌کند.

تغییرات در پایگاه داده فقط توسط گره ای که به عنوان رهبر انتخاب شده است انجام می شود، اما اتصالات با عملیات نوشتن می تواند به گره های دیگر در خوشه نیز ارسال شود، که آدرس رهبر را برای تکرار درخواست باز می گرداند (در نسخه بعدی آنها قول اضافه کردن ارسال خودکار درخواست ها به رهبر). تاکید اصلی بر روی تحمل خطا است، بنابراین DBMS تنها با عملیات خواندن مقیاس می شود و عملیات نوشتن گلوگاه است. امکان اجرای یک کلاستر rqlite از یک گره وجود دارد و از این راه حل می توان برای دسترسی به SQLite از طریق HTTP بدون ارائه تحمل خطا استفاده کرد.

داده های SQLite در هر گره در یک فایل ذخیره نمی شود، بلکه در حافظه ذخیره می شود. در سطح لایه با اجرای پروتکل Raft، یک گزارش از تمام دستورات SQLite که منجر به تغییرات در پایگاه داده می شود، نگهداری می شود. این گزارش در حین تکرار (تکثیر در سطح بازتولید درخواست ها در سایر گره ها)، هنگام شروع یک گره جدید، یا برای بازیابی از قطع اتصال استفاده می شود. برای کاهش اندازه گزارش از بسته بندی خودکار استفاده می شود که پس از تعداد مشخصی از تغییرات شروع می شود و منجر به تثبیت یک عکس فوری می شود که در رابطه با آن یک گزارش جدید شروع به نگهداری می کند (وضعیت پایگاه داده در حافظه یکسان با عکس فوری + گزارش تغییرات انباشته شده).

ویژگی های rqlite:

  • استقرار یک خوشه آسان، بدون نیاز به نصب جداگانه SQLite.
  • امکان به دست آوردن سریع ذخیره سازی SQL تکراری.
  • آماده برای استفاده در پروژه های تولیدی (درجه تولید).
  • وجود یک API HTTP(S) که به شما امکان می دهد داده ها را در حالت دسته ای به روز کنید و گره اصلی خوشه را تعیین کنید. یک رابط خط فرمان و کتابخانه های مشتری برای زبان های برنامه نویسی مختلف نیز ارائه شده است.
  • در دسترس بودن سرویسی برای شناسایی گره های دیگر که به شما امکان می دهد خوشه ها را به صورت پویا ایجاد کنید.
  • پشتیبانی از رمزگذاری تبادل داده بین گره ها.
  • امکان پیکربندی سطح بررسی ارتباط و سازگاری داده ها هنگام خواندن.
  • توانایی اختیاری برای اتصال گره ها در حالت فقط خواندنی، که در تعیین اجماع شرکت نمی کنند و برای افزایش مقیاس پذیری خوشه برای عملیات خواندن استفاده می شوند.
  • پشتیبانی از شکل تراکنش های خود بر اساس ترکیب دستورات در یک درخواست (معاملات مبتنی بر BEGIN، COMMIT، ROLLBACK، SAVEPOINT و RELEASE پشتیبانی نمی شوند).
  • پشتیبانی از ایجاد نسخه پشتیبان داغ

در نسخه جدید:

  • اضافه شدن پشتیبانی برای خوشه بندی خودکار rqlite با استفاده از یک سرویس جدید تشخیص گره که می تواند بر اساس Consul و ذخیره سازی توزیع شده etcd کار کند. این سرویس به گره‌های rqlite اجازه می‌دهد به طور خودکار یکدیگر را پیدا کنند - مدیر فقط باید چندین گره را در سرورهای مختلف راه‌اندازی کند، و آدرس کلاستر Consul یا etcd مشترک را مشخص کند (به عنوان مثال، "example.com:8500")، و گره‌ها به طور خودکار انجام می‌شوند. در یک خوشه ترکیب شده است. گره پیشرو به طور دوره ای اطلاعات مربوط به آدرس خود را در ذخیره سازی Consul یا etcd به روز می کند، که به شما امکان می دهد متعاقباً رهبر را بدون نیاز به پیکربندی مجدد سایر گره ها تغییر دهید و همچنین گره های جدید را حتی پس از تغییر رهبر اضافه کنید. سرویس قدیمی حالت Discovery که روی AWS Lambda اجرا می‌شود، متوقف شده است.
  • رابط CLI اجازه می دهد تا چندین میزبان را به طور همزمان مشخص کنید - اگر اولین گره در دسترس نباشد، میزبان بعدی تماس خواهد گرفت.
  • کد تجزیه آرگومان های خط فرمان rqlited دوباره کار شده است.
  • بسته پروتوباف منسوخ شده متوقف شده است.
  • ذخیره سازی BoltDB مورد استفاده در اجرای پروتکل Raft با bbolt جایگزین شده است، یک فورک از پروژه etcd.

منبع: opennet.ru

اضافه کردن نظر