Zdecentralizowane magazynowanie LF zostało przeniesione na licencję otwartą

Dostępna jest już wersja LF 1.1.0, zdecentralizowany, replikowany magazyn danych klucz/wartość. Projekt rozwija firma ZeroTier, która opracowuje wirtualny przełącznik Ethernet umożliwiający łączenie hostów i maszyn wirtualnych zlokalizowanych u różnych dostawców w jedną wirtualną sieć lokalną, której uczestnicy wymieniają dane w trybie P2P. Kod projektu napisany jest w języku C. Nowa wersja wyróżnia się przejściem na bezpłatną licencję MPL 2.0 (Mozilla Public License).

Wcześniej kod LF był dostępny na podstawie licencji BSL (Business Source License), która nie jest bezpłatna ze względu na dyskryminację niektórych kategorii użytkowników. Licencja BSL została zaproponowana przez współzałożycieli MySQL jako alternatywa dla modelu Open Core. Istotą BSL jest to, że kod o zaawansowanej funkcjonalności jest początkowo dostępny do modyfikacji, jednak przez pewien czas można z niego korzystać bezpłatnie jedynie po spełnieniu dodatkowych warunków, których obejście wymaga zakupu licencji komercyjnej.

LF jest systemem całkowicie zdecentralizowanym i umożliwia wdrożenie pojedynczego magazynu danych w formacie klucz-wartość na dowolnej liczbie węzłów. Dane są synchronizowane we wszystkich węzłach, a wszystkie zmiany są w pełni replikowane we wszystkich węzłach. Wszystkie węzły w LF są sobie równe. Brak odrębnych węzłów koordynujących pracę magazynu pozwala pozbyć się pojedynczego punktu awarii, a obecność pełnej kopii danych na każdym węźle eliminuje utratę informacji w przypadku awarii lub rozłączenia poszczególnych węzłów.

Aby podłączyć nowy węzeł do sieci, nie trzeba uzyskiwać odrębnych uprawnień – każdy może uruchomić własny węzeł. Model danych LF jest zbudowany wokół skierowanego grafu acyklicznego (DAG), co upraszcza synchronizację i pozwala na różnorodne strategie rozwiązywania konfliktów i bezpieczeństwa. W przeciwieństwie do systemów rozproszonych tablic mieszających (DHT), architektura IF jest początkowo zaprojektowana do użytku w zawodnych sieciach, w których nie jest gwarantowana stała dostępność węzłów. Wśród obszarów zastosowań LF wymienia się tworzenie najbardziej trwałych systemów przechowywania, w których przechowywane są stosunkowo niewielkie ilości krytycznych danych, które rzadko się zmieniają. Na przykład LF nadaje się do magazynów kluczy, certyfikatów, parametrów tożsamości, plików konfiguracyjnych, skrótów i nazw domen.

Aby zabezpieczyć się przed przeciążeniem i nadużyciami, stosuje się ograniczenie intensywności operacji zapisu do pamięci współdzielonej, realizowane na podstawie dowodu pracy - aby móc zapisać dane, uczestnik sieci pamięci masowej musi spełnić określony zadanie, które można łatwo zweryfikować, ale wymaga dużych zasobów obliczeniowych (podobnie jak organizowanie rozbudowy systemów w oparciu o blockchain i CRDT). Obliczone wartości są również używane jako znak przy rozwiązywaniu konfliktów.

Alternatywnie można uruchomić w sieci urząd certyfikacji, który będzie wydawał uczestnikom certyfikaty kryptograficzne, dając prawo do dodawania rekordów bez potwierdzenia pracy i dając pierwszeństwo w rozwiązywaniu konfliktów. Domyślnie magazyn dostępny jest bez ograniczeń w zakresie przyłączania jakichkolwiek uczestników, ale opcjonalnie, w oparciu o system certyfikatów, istnieje możliwość tworzenia odgrodzonych magazynów prywatnych, w których uczestnikami mogą zostać wyłącznie węzły certyfikowane przez właściciela sieci.

Główne cechy LF:

  • Łatwe wdrażanie własnej pamięci masowej i łączenie się z istniejącymi publicznymi sieciami pamięci masowej.
  • Nie ma pojedynczego punktu awarii i możliwość zaangażowania wszystkich w utrzymanie magazynu.
  • Wysoka prędkość dostępu do wszystkich danych oraz możliwość dostępu do danych pozostałych na jego węźle, nawet po zakłóceniu łączności sieciowej.
  • Uniwersalny model bezpieczeństwa, który pozwala łączyć różne mechanizmy rozwiązywania konfliktów (lokalna heurystyka, waga na podstawie wykonanej pracy, uwzględnienie poziomu zaufania innych węzłów, certyfikaty).
  • Elastyczny interfejs API do wykonywania zapytań o dane, który umożliwia określenie wielu zagnieżdżonych kluczy lub zakresów wartości. Możliwość powiązania wielu wartości z jednym kluczem.
  • Wszystkie dane, łącznie z kluczami, są przechowywane w formie zaszyfrowanej i weryfikowane. System można wykorzystać do zorganizowania przechowywania poufnych danych na niezaufanych węzłach. Rekordy, do których nie są znane klucze, nie mogą zostać ustalone metodą brute-force (bez znajomości klucza nie da się uzyskać powiązanych z nim danych).

Ograniczenia obejmują skupienie się na przechowywaniu małych, rzadko zmieniających się danych, brak blokad i gwarantowaną spójność danych, wysokie wymagania dotyczące procesora, pamięci, miejsca na dysku i przepustowości oraz stały wzrost rozmiaru pamięci masowej w czasie.

Źródło: opennet.ru

Dodaj komentarz