2016-08-06 27 views
-1

Unser Unternehmen hat fünf Millionen Benutzer, wir Speicher-Benutzer-Code-Datei, Benutzer können bearbeiten und ihre Dateien hinzufügen, genau wie Web IDE, die Web-IDE-Liste Benutzer Datei. Wir verwenden die PHP-Funktionen, um diese Operationen zu implementieren, wie zum Beispiel readdir, file_get_contents und file_put_contents, wir haben die MooseFS verwendet, aber wenn wir die Dateien im Programm lesen, insbesondere die langsame Ladegeschwindigkeit.Schnelle Geschwindigkeit verteilte Dateisystem für kleine Datei

Also, wir müssen das Dateisystem ersetzen, ich hoffe, jemand kann mir einen Rat geben, wir haben eine große Anzahl von kleine Dateien, die verteilte Dateisystem sollte verwendet werden.

Antwort

1

Fünf Millionen Einträge sind klein für eine relationale Datenbank. Ich würde mich wundern, warum Sie das Bedürfnis haben, diese in einem Dateisystem zu speichern.

Muss jeder Benutzer beim Start alle Dateien laden? Wenn ja, würde ich mich über das Design des Systems wundern. Dieser Vorgang ist O(N), egal wie Sie ihn entwerfen.

Wenn Sie diese fünf Millionen kleinen Dateien in eine relationale oder NoSQL-Datenbank stellen und dann von jedem Benutzer eine Verbindung mit ihm herstellen und nach den gewünschten Abfragen suchen, müssen Sie diese beim Start nicht mehr laden. Problem gelöst.

0

In jedem verteilten Dateisystem ist einer der wichtigsten Aspekte bei der Verarbeitung kleiner Dateien die Netzwerklatenz - sie sollte so klein wie möglich (etwa 0,1 ms) zwischen solchen verteilten Dateisystemkomponenten sein. Der beste Weg, dies zu erreichen, ist die Verwendung eines zuverlässigen Schalters und die Verbindung aller Maschinen mit demselben Schalter.

Auch in verteilten Dateisystemen (vor allem in MooseFS) ist das Beste, was die Skalierbarkeit - es bedeutet, dass je mehr Knoten, die Sie haben (und desto mehr Berechnungen verteilt, das heißt gleichzeitig auf mehr als eine Halterung getan), Je schneller der Cluster ist.

Wenn Sie MooseFS verwenden, überprüfen Sie bitte MooseFS 3.0, weil die Operationen auf kleinen Dateien seit Version 3.0 verbessert sind. Dies ist ein einfacher Weg für jetzt, weil Sie keine "Revolution" machen müssen (vor dem Upgrade erinnern Sie sich, die/var/lib/mfs auf dem Master Server zu sichern - d. H. Metadaten). MooseFS kann kleine Dateien gut verarbeiten, also gibt es vielleicht ein Problem bei der Konfiguration? In MooseFS ist (zusätzlich zu den kleinen Dateioperationen) eines der wichtigsten Dinge, einen hohen CPU-Takt (wie zB 3,7 GHz) mit kleinen CPU-Kernen und deaktivierten Energiesparmöglichkeiten im BIOS für Master Server zu haben (weil Master Server ein single-threaded Prozess ist). Für Chunkserver und Clients ist die Situation anders - sie sind Multi-Threading, so dass Sie bessere Ergebnisse erhalten, wenn Sie Multicore-CPUs verwenden.

Zusätzlich wird, wie in MooseFS Best practices in Absatz 4 "Virtual Machines und MooseFS" erklärte:

[...] wir nicht empfehlen MooseFS Komponenten (insbesondere Master-Server (n)) auf virtuellen Maschinen laufen .

Wenn Sie also MFS auf VMs ausführen, haben Sie möglicherweise schlechte Ergebnisse.