Prima versione di wZD 1.0.0, un server per l'archiviazione compatta di piccoli file

A disposizione prima edizione wZD 1.0.0 - un server per archiviare in modo efficiente un gran numero di file in una forma compatta, che dall'esterno sembra un normale server WebDAV. Per l'archiviazione viene utilizzata una versione modificata BoltDB. Il codice del progetto è scritto in Go and distribuito da sotto licenza BSD.

Server permette Riduci significativamente il numero di file di piccole dimensioni su file system regolari o in cluster con il supporto completo del blocco. Il cluster supportato dagli sviluppatori wZD memorizza circa 250 milioni di piccoli file distribuiti in 15 milioni di directory nel file system del cluster MooseFS.

wZD consente di spostare (archiviare) il contenuto delle directory negli archivi nel formato BoltDB e quindi distribuire questi file da questi archivi (o posizionare file negli archivi utilizzando il metodo PUT), riducendo significativamente il numero di file nel file system e riducendo il sovraccarico di archiviazione dei metadati. Per aumentare l'efficienza dell'elaborazione di file di grandi dimensioni, tali file possono essere salvati separatamente dagli archivi Bolt. Questo approccio consente di organizzare l'archiviazione di un numero enorme di piccoli file senza essere limitati dal limite del numero di inode nel file system.

Prima versione di wZD 1.0.0, un server per l'archiviazione compatta di piccoli file

Il server può essere utilizzato anche come database NoSQL per dati in formato chiave/valore (con sharding basato sulla struttura delle directory) o per distribuire documenti html o json pregenerati dal database. In termini di prestazioni, l'invio e la scrittura di dati tramite archivi Bolt comporta un aumento della latenza di circa il 20-25% in lettura e del 40-50% in scrittura. Minore è la dimensione del file, minore è la differenza di latenza.

Prima versione di wZD 1.0.0, un server per l'archiviazione compatta di piccoli file

Il principale capacità:

  • Multithreading;
  • Multiserver, che fornisce tolleranza agli errori e bilanciamento del carico;
  • Massima trasparenza per l'utente o lo sviluppatore;
  • Metodi HTTP supportati: GET, HEAD, PUT e DELETE;
  • Controllo del comportamento di lettura e scrittura tramite intestazioni client;
  • Supporto per host virtuali flessibili;
  • Supporto per l'integrità dei dati CRC durante la scrittura/lettura;
  • Buffer semidinamici per un consumo minimo di memoria e un'ottimizzazione ottimale delle prestazioni di rete;
  • Packaging dei dati differito;
  • Inoltre, viene offerto un archiviatore multi-thread wZA per spostare i file negli archivi Bolt senza interrompere il servizio.

Alcune limitazioni della versione attuale: non c'è supporto per Multipart, il metodo POST, il protocollo HTTPS, collegamenti per linguaggi di programmazione, cancellazione ricorsiva di directory, non c'è supporto per montare una struttura sul file system tramite WebDAV o FUSE, file sono memorizzati sotto un utente di sistema. Il formato di archiviazione è specifico dell'architettura e non è portabile tra i sistemi Little Endian e Big Endian. Nonostante il fatto che il server wZD implementi il ​​supporto per il protocollo HTTP, deve essere avviato solo con il pretesto di proxy inversi, come nginx e haproxy.

Fonte: opennet.ru

Aggiungi un commento