RAID als Cache: Discord baut eigenes Speichersystem in Google-Cloud

Discord betreibt seine Server in der Cloud - und baute sich ein schnelles und gleichzeitig sicheres Speichersystem.

Artikel veröffentlicht am , Johannes Hiltscher
Discord zeigt: Auch in der Cloud lassen sich Speichersysteme an die eigenen Bedürfnisse anpassen.
Discord zeigt: Auch in der Cloud lassen sich Speichersysteme an die eigenen Bedürfnisse anpassen. (Bild: Sandor Somkuti, Flickr/CC-BY 2.0)

Wie jeder datenintensive Dienst ist auch Discord darauf angewiesen, auf seinen Servern Daten möglichst schnell abzurufen. Interessant ist, dass das Unternehmen die Rechner, auf denen seine Datenbanken liegen, nicht selbst betreibt: Sie liegen in der Cloud von Google. Mit dem Speicherangebot waren die Entwickler aber unzufrieden, Google bietet nur eine schnelle oder eine sichere Variante an. Also bastelte Discord eine eigene Lösung.

Entwickler Glen Oakley führt im oben verlinkten Blog-Post aus, dass das Speichersystem in Stoßzeiten oft an seine Grenzen kam: Die Festplatten - Discord nutzt Googles Persistent Disks (GCP) - konnten die Anfragen der NoSQL-Datenbank nicht mehr bewältigen. Das führte zu langen Zugriffszeiten und Überschreitungen der Antwortzeit. Grund für das Problem ist, dass GCP selbst virtuelle Hardware ist. Der physische Speicher liegt in irgendeinem Storage Server und ist per Netzwerk mit dem Datenbank-Server verbunden. Beide befinden sich im selben Rechenzentrum.

Das hat einige angenehme Aspekte: Sicherungen können jederzeit erstellt werden, der Storage Server schützt mit RAID gegen Datenausfall und die virtuelle Festplatte kann beliebig vergrößert werden. Da aber die Anfragen durch zwei Rechner und möglicherweise mehrere Netzwerk-Switches laufen, brauchen die Antworten ziemlich lang, zwischen einer und zwei Millisekunden.

Lokaler und Cloud-Speicher als ideale Lösung

Die naheliegende Lösung, statt GCP lokale SSDs zu nutzen, kam für das Entwicklerteam von Discord nicht in Frage: Zu groß war die Angst vor Datenverlusten durch ausfallende Laufwerke oder ganze Server. Ausfallende Server fängt Googles Cloud zwar durch Umzug auf andere Hardware ab, die gespeicherten Daten sind dann aber futsch. Also suchte das Team nach anderen Lösungen.

Der erste Schritt war, die Anforderungen an das Speichersystem genau zu betrachten: Wichtig war, jederzeit ein Backup der Daten erstellen zu können und sie gegen den Ausfall einzelner Laufwerke geschützt zu wissen. Die Zugriffszeit ist für Discord nur beim Lesen von Daten wichtig. Schnell entdeckten die Entwickler die Kombination von GCP und lokalen SSDs als den richtigen Weg. Letztere werden dabei nur als Cache genutzt.

Zuerst untersuchte das Team dm-cache, lvm-cache und bcache, Caching-Module des Linux-Kernels. Die entsprachen aber nicht ganz den Ansprüchen des Teams, da sie bei Ausfällen der als Cache genutzten SSDs Fehler verursachten, die zum Ausfall der Datenbank führten.

Ein Software-RAID machts möglich

Die für sie perfekte Lösung fanden die Entwickler letztlich in einem Software-RAID namens md. Das hat ein wichtiges Feature: Es ermöglicht, die zusammengefassten Speicher für Lese- oder Schreiboperationen zu priorisieren. Mit dem Flag "write-mostly" wird festgelegt, dass ein Gerät beim Lesen nur die zweite Wahl ist. Auf sie wird nur zurückgegriffen, wenn kein anderes Gerät die gewünschten Daten bereitstellen kann.

Also packten Discords Entwickler ein lokal im Server installiertes RAID0 aus NVMe-SSDs mit dem GCP-Speicher in ein RAID1. Das verteilt die Zugriffe auf beide Speichersysteme, die SSDs werden so zu einem Cache der geschriebenen Daten. Damit warten die Server jetzt nur noch halb so lang auf Daten wie bei der vorherigen GCP-Lösung, die Datenbanken können mehr Anfragen bewältigen.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


gaym0r 18. Aug 2022

"Eine lokale NVMe kommt ja schon fast an RAM ran. " DDR2 RAM oder was?

jhi (Golem.de) 17. Aug 2022

Damit ist schon alles gesagt was ich auch hätte dazu schreiben können, danke. Es wird...

GwhE 16. Aug 2022

Erstmal interessant Thema, bei dieser Fragestellungen stehen momentan viele...

JouMxyzptlk 16. Aug 2022

trotzdem erwähnenswert. An sich kann Linux auch allgemein besseres Tiering als nur mit...



Aktuell auf der Startseite von Golem.de
Whistleblower
Ehemaliger US-Konteradmiral äußert sich zu Außerirdischen

Wieder hat sich in den USA ein ehemals hochrangiger Militär und Beamter über Kontakte mit Aliens geäußert.

Whistleblower: Ehemaliger US-Konteradmiral äußert sich zu Außerirdischen
Artikel
  1. Schadstoffnorm 7: Neue Grenzwerte für Abrieb gelten auch für E-Autos
    Schadstoffnorm 7
    Neue Grenzwerte für Abrieb gelten auch für E-Autos

    Die neue Euronorm 7 legt nicht nur Grenzwerte für Bremsen- und Reifenabrieb fest, sondern auch Mindestanforderungen für Akkus.

  2. Ramjet: General Electric testet Hyperschalltriebwerk
    Ramjet
    General Electric testet Hyperschalltriebwerk

    Das Triebwerk soll Flüge mit Mach 5 ermöglichen.

  3. Elektroautos: Mercedes und Stellantis übernehmen komplette Umweltprämie
    Elektroautos
    Mercedes und Stellantis übernehmen komplette Umweltprämie

    Nach dem abrupten Aus der staatlichen Förderung springen erste Hersteller von Elektroautos ein.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    • Daily Deals • Last-Minute-Angebote bei Amazon • Avatar & The Crew Motorfest bis -50% • Xbox Series X 399€ • Cherry MX Board 3.0 S 49,95€ • Crucial MX500 2 TB 110,90€ • AVM FRITZ!Box 7590 AX + FRITZ!DECT 500 219€ [Werbung]
    •  /