
Team des Objekt-S3-Speichers hat einen Artikel übersetzt, der die wichtigen Kriterien bei der Auswahl eines Objektspeichers beschreibt. Im Folgenden der Text aus der Autorensicht.
Wenn es um Objektspeicher geht, denken die Leute in der Regel nur an eine Kennzahl — den Preis pro TB/GB. Natürlich ist diese Kennzahl wichtig, jedoch macht sie den Ansatz einseitig und stellt den Objektspeicher als ein Werkzeug zur Archivierung dar. Außerdem mindert dieser Ansatz die Bedeutung des Objektspeichers im Technologiestack eines Unternehmens.
Bei der Auswahl eines Objektspeichers sollten Sie auf fünf Merkmale achten:
- Leistung;
- Skalierbarkeit;
- Kompatibilität mit S3;
- Reaktion auf Ausfälle;
- Integrität.
Diese fünf Merkmale sind neue Kennzahlen für Objektspeicher, gleichwertig mit den Kosten. Lassen Sie uns alle betrachten.
Leistung
Traditionelle Objektspeicher zeichnen sich nicht durch hohe Leistung aus. Dienstanbieter opferten ständig die Leistung im Streben nach niedrigen Preisen. Bei modernen Objektspeichern ist das jedoch anders.
Die Geschwindigkeit verschiedener Speichersysteme nähert sich Hadoop oder übertrifft sie sogar. Moderne Anforderungen an Lese- und Schreibgeschwindigkeiten liegen bei 10 GB/s für Festplatten bis zu 35 GB/s für NVMe.
Eine solche Bandbreite reicht aus für Spark, Presto, Tensorflow, Teradata, Vertica, Splunk und andere moderne Rechenframeworks im Analytics-Stack. Die Tatsache, dass MPP-Datenbanken auf Objektspeicher eingestellt werden, zeigt, dass sie zunehmend als primärer Speicher genutzt werden.
Wenn Ihr Speichersystem nicht die benötigte Geschwindigkeit bietet, können Sie die Daten nicht nutzen und daraus keinen Wert schöpfen. Selbst wenn Sie Daten aus dem Objektspeicher in eine In-Memory-Verarbeitung überführen, ist dennoch Bandbreite erforderlich, um Daten ins und aus dem Speicher zu übertragen. Bei veralteten Objektspeichern gibt es dafür nicht genügend Bandbreite.
Das ist der entscheidende Punkt: Das neue Leistungsmaß ist die Bandbreite, nicht die Latenz. Sie wird für skalierbare Daten benötigt und ist der Standard in der modernen Dateninfrastruktur.
Obwohl Leistungstests eine gute Möglichkeit zur Bestimmung der Leistung sind, lässt sie sich nicht genau messen, bevor die Anwendung in einer Umgebung gestartet wird. Erst danach kann gesagt werden, wo genau das Engpass liegt: in der Software, den Festplatten, dem Netzwerk oder auf der Ebene der Berechnungen.
Skalierbarkeit
Unter Skalierbarkeit versteht man die Menge an Petabyte, die in einen Namensraum passt. Anbieter geben an, dass sie leicht skalierbar sind, verschweigen jedoch, dass massive monolithische Systeme beim Wachstum brüchig, komplex, instabil und teuer werden.
Der neue Skalierbarkeitsindikator ist die Anzahl der Namensräume oder Clients, die Sie bedienen können. Diese Metrik stammt direkt von Hyperscalern, bei denen die Speicherbausteine klein sind, sich jedoch bis zu Milliarden Einheiten skalieren lassen. Insgesamt ist dies eine Cloud-Metrik.
Wenn Standardbausteine klein sind, lassen sie sich leichter optimieren, das heißt, Sicherheit, Zugriffskontrolle, Richtlinienmanagement, Lebenszyklusmanagement und Aktualisierungen können ohne Unterbrechung der Dienste sichergestellt werden. Und letztendlich sorgt dies für die Leistung. Die Größe des Bausteins ist eine Funktion der Manageability des Ausfallbereichs, so werden hochverfügbare Systeme gebaut.
Die Multitenancy hat viele Eigenschaften. Während der Parameter beschreibt, wie Organisationen Zugang zu Daten und Anwendungen gewähren, bezieht er sich auch auf die Anwendungen selbst und die Logik ihrer Isolation voneinander.
Die Merkmale des modernen Ansatzes zur Multitenancy:
- In kurzer Zeit kann die Anzahl der Clients von mehreren Hundert auf mehrere Millionen steigen.
- Die Clients sind vollständig voneinander isoliert. Dies ermöglicht es ihnen, verschiedene Versionen derselben Software zu betreiben und Objekte mit unterschiedlichen Konfigurationen, Berechtigungen, Funktionen, Sicherheits- und Wartungslevels zu speichern. Dies ist notwendig, wenn neue Server, Updates und geografische Regionen skaliert werden.
- Der Speicher skalierbar elastisch, Ressourcen werden nach Bedarf bereitgestellt.
- Jede Operation wird über eine API gesteuert und automatisiert ohne menschliches Eingreifen.
- Software kann in Containern bereitgestellt werden und standardisierte Orchestrierungssysteme wie Kubernetes nutzen.
Kompatibilität mit S3
Amazon S3 API — faktisch der Standard für objektbasierte Speicher. Jeder Softwareanbieter für objektbasierte Speicherung gibt seine Kompatibilität damit an. Die Kompatibilität mit S3 ist binär: entweder sie wird vollständig umgesetzt oder gar nicht.
In der Praxis gibt es Hunderte und Tausende von Grenzfällen, in denen bei der Nutzung von objektbasierter Speicherung etwas schiefgeht. Besonders bei Anbietern proprietärer Software und Dienste. Die Hauptverwendungszwecke sind direkte Archivierung oder Datensicherung, sodass es nur wenige Gründe für die API-Nutzung gibt und die Nutzungsszenarien homogen sind.
Es gibt erhebliche Vorteile für Software mit offenem Quellcode. Sie deckt die meisten Grenzfälle ab und berücksichtigt die Größe und Vielfalt von Anwendungen, Betriebssystemen und Hardwarearchitekturen.
Dies ist wichtig für Anwendungsentwickler, daher sollte man die Funktionsweise der Anwendung mit verschiedenen Speicheranbietern testen. Offener Quellcode vereinfacht den Prozess — es ist leichter zu verstehen, welche Plattform für Ihre Anwendung geeignet ist. Der Anbieter kann als ein einziger Einstiegspunkt zu den Speichern genutzt werden — das bedeutet, dass er Ihre Anforderungen erfüllt.
Offener Quellcode bedeutet: Anwendungen sind nicht an einen Anbieter gebunden und sind transparenter. Dies gewährleistet einen langen Lebenszyklus der Anwendung.
Und noch ein paar Anmerkungen zu offenem Quellcode und S3.
Wenn Sie eine Anwendung für große Datenmengen betreiben, verbessert S3 SELECT die Leistung und Effizienz erheblich. Dies geschieht durch die Verwendung von SQL, um nur die Objekte aus dem Speicher zu extrahieren, die Sie benötigen.
Ein wesentlicher Punkt ist die Unterstützung von Bucket-Benachrichtigungen. Bucket-Benachrichtigungen vereinfachen serverlose Berechnungen — ein wichtiger Bestandteil jeder als Dienst bereitgestellten Mikrodienstarchitektur. Da der objektbasierte Speicher faktisch ein Cloud-Speicher ist, wird diese Funktion entscheidend, wenn cloudbasierte Anwendungen den objektbasierten Speicher verwenden.
Schließlich sollte die Implementierung von S3 die Server-seitigen Verschlüsselungsschnittstellen des Amazon S3 API unterstützen: SSE-C, SSE-S3, SSE-KMS. Noch besser wäre es, wenn S3 unbefugten Zugriff schützt, der tatsächlich sicher ist.
Reaktion auf Ausfälle
Ein Indikator, der wahrscheinlich oft übersehen wird, ist, wie das System mit Ausfällen umgeht. Fehler passieren aus verschiedenen Gründen, und der Objektspeicher muss sie alle verarbeiten können.
Beispielsweise gibt es einen einzigen Ausfallpunkt, dessen Metrik gleich null ist.
Leider verwenden viele Objektspeichersysteme spezielle Knoten, die aktiviert werden müssen, damit der Cluster richtig funktioniert. Dazu gehören Namensserver oder Metadaten-Server – das schafft einen einzigen Ausfallpunkt.
Selbst dort, wo mehrere Ausfallpunkte vorgesehen sind, ist die Fähigkeit, katastrophale Ausfälle zu verkraften, von entscheidender Bedeutung. Festplatten fallen aus, Server fallen aus. Der Schlüssel ist die Entwicklung von Software, die darauf ausgelegt ist, Ausfälle als normalen Zustand zu behandeln. Bei einem Ausfall einer Festplatte oder eines Knotens wird diese Software weiterhin ohne Änderungen funktionieren.
Der eingebaute Schutz gegen Datenverlust und -degradation garantiert: Sie können so viele Festplatten oder Knoten verlieren, wie Sie Paritätsblöcke haben – normalerweise ist das die Hälfte der Festplatten. Erst dann kann die Software keine Daten mehr wiederherstellen.
Ein Ausfall wird selten unter Last überprüft, aber eine solche Überprüfung ist obligatorisch. Das Simulieren eines Ausfalls unter Last zeigt die kumulierten Kosten, die nach einem Ausfall entstehen.
Konsistenz
Ein Konsistenzindikator von 100 % wird auch als strikte Konsistenz bezeichnet. Konsistenz ist ein wesentlicher Bestandteil jedes Speichersystems, aber strikte Konsistenz kommt ziemlich selten vor. Zum Beispiel ist Amazon S3 ListObject nicht strikt konsistent, sondern nur am Ende konsistent.
Was bedeutet strikte Konsistenz? Für alle Operationen nach einer bestätigten PUT-Operation gilt Folgendes:
- Der aktualisierte Wert ist beim Lesen von jedem Knoten sichtbar.
- Das Update ist durch Ausfallschutz des Knotens gesichert.
Das bedeutet: Wenn der Stecker mitten im Schreiben gezogen wird, geht nichts verloren. Das System gibt niemals beschädigte oder veraltete Daten zurück. Das ist eine hohe Messlatte, die für viele Szenarien von Bedeutung ist: von Transaktionsanwendungen bis hin zu Backup und Wiederherstellung.
Fazit
Das sind neue Metriken für Object Storage, die die Nutzungsmuster in modernen Organisationen widerspiegeln, in denen Leistung, Konsistenz, Skalierbarkeit, Ausfallbereiche und S3-Kompatibilität die Bausteine für Cloud-Anwendungen und Big Data-Analysen sind. Ich empfehle, diese Liste zusätzlich zu den Preisen bei der Erstellung moderner Daten-Stacks zu verwenden.
Über das Object Storage von Mail.ru Cloud Solutions: .
Was Sie sonst noch lesen sollten:
- .
- .
- .
Quelle: habr.com
