erste Version — Server für die effiziente Speicherung einer großen Anzahl von Dateien in kompaktem Format, der von außen wie ein herkömmlicher WebDAV-Server aussieht. Für die Speicherung wird eine modifizierte Version verwendet von . Der Projektcode ist in Go geschrieben und unter der BSD-Lizenz.
Server verringert erheblich die Anzahl kleiner Dateien in herkömmlichen oder Cluster-Dateisystemen mit vollständiger Unterstützung für Sperren. Der von den Entwicklern unterstützte wZD-Cluster speichert etwa 250 Millionen kleine Dateien, die über 15 Millionen Verzeichnisse in einem Cluster-Dateisystem verteilt sind. .
wZD ermöglicht es, den Inhalt von Verzeichnissen in Archive im BoltDB-Format zu verschieben (zu archivieren) und diese Dateien anschließend aus diesen Archiven bereitzustellen (oder Dateien per PUT-Methode in Archive abzulegen), wodurch die Anzahl der Dateien im Dateisystem erheblich reduziert wird und die Kosten für die Speicherung von Metadaten gesenkt werden. Um die Effizienz bei der Verarbeitung großer Dateien zu erhöhen, können solche Dateien separat von Bolt-Archiven gespeichert werden. Dieser Ansatz ermöglicht die Organisation der Speicherung einer enormen Anzahl kleiner Dateien, ohne an die Inode-Begrenzung im Dateisystem zu stoßen.
Der Server kann auch als NoSQL-Datenbank für Schlüssel/Wert-Daten (mit Sharding auf Basis einer Verzeichnisstruktur) verwendet werden oder zur Auslieferung von vorab generierten HTML- oder JSON-Dokumenten aus der Datenbank. Hinsichtlich der Leistung führt die Verwendung von Bolt-Archiven zu einer Steigerung der Latenz von etwa 20-25 % beim Lesen und 40-50 % beim Schreiben. Je kleiner die Dateigröße, desto geringer sind die Unterschiede bei den Latenzen.
Haupt :
- Multithreading;
- Multiserver-Architektur, die Ausfallsicherheit und Lastenverteilung gewährleistet;
- Maximale Transparenz für den Nutzer oder Entwickler;
- Unterstützte HTTP-Methoden: GET, HEAD, PUT und DELETE;
- Steuerung des Verhaltens beim Lesen und Schreiben über Client-Header;
- Unterstützung von flexibel konfigurierbaren virtuellen Hosts;
- Unterstützung von CRC-Datenintegrität beim Schreiben/Lesen;
- Halb-dynamische Puffer für minimalen Speicherverbrauch und optimale Netzwerkanpassung;
- Verzögerte Datenverpackung;
- Darüber hinaus wird ein multithreaded Archivator angeboten zum Verschieben von Dateien in Bolt-Archive, ohne den Dienst zu stoppen.
Einige Einschränkungen der aktuellen Version: Keine Unterstützung für Multipart, POST-Methode, HTTPS-Protokoll, Bindungen für Programmiersprachen, rekursive Verzeichnisextraktion, keine Unterstützung für das Einbinden der Struktur in das Dateisystem über WebDAV oder FUSE, Dateien werden unter einem Systembenutzer gespeichert. Das Speicherformat ist an die Architektur gebunden und nicht zwischen Systemen mit Little Endian und Big Endian portierbar. Obwohl der wZD-Server das HTTP-Protokoll unterstützt, muss er nur hinter einem Reverse Proxy, wie nginx oder haproxy, ausgeführt werden.
Quelle: opennet.ru
