Konzepte¶
Architektur¶
koala besteht aus mehreren separaten Prozessen (rot) und Middleware-Komponenten (blau).
Middleware¶
Data Management (DB)¶
Interne Datenbank. Enthält Asset-Metadaten, Daten zu Ingest-/Retrieve-Vorgängen, Datetypen, Schemata und Nutzerdaten. Verwendet wird: mysql
Message Queue (MQ)¶
Die Message Queue wird verwendet um asynchron Ingest- und Retrieve-Anfragen den Loader-/Retriever-Applikationen zur Verfügung zu stellen. Verwendet wird: RabbitMQ
Archival Storage¶
Primärer Datenspeicher für die Asset-Archivdaten (Bitstream preservation). koala unterstützt IBM Spectrum Protect (SP) und das Dateisystem als Implementierung.
Cache¶
Speichert Informationen über die laufenden Applikationen und wird als Zwischenspeicher für flüchtige Daten wie Statistiken verwendet. Verwendet wird: redis
Applikationen¶
Scheduler¶
Überwacht das Upload-Verzeichnis auf neue Dateien (SIPs) und speichert die gesammelten Informationen in der Message Queue zur weiteren Verarbeitung durch die Loader/Retriever. Pro koala-System kann nur ein scheduler gleichzeitig aktiv sein.
Loader¶
Zur Erhöhung des Durchsatzes können mehrere Loader gleichzeitg betrieben werden. Ein Loader verbindet sich mit der Message Queue und bearbeitet jeweils ein SIP. Es wird eine Reihe von Prozessschritten durchlaufen u. a. nachfolgend:
- Entpacken
- Validierung der Dateien und Metadaten
- Überprüfung von Checksummen
- Speicherung der Metadaten in der internen Datenbank und der Archivdaten im primären Datenspeicher
Der Status des Ingest-Prozesses wird kontinuierlich aktualisiert und kann über das Dashboard oder die API verfolgt werden.
Proxy¶
Ein "reverse proxy" der für SSL-/TLS-Terminierung und die Bereitstellung von statischen Inhaltsdaten zuständig ist.
Web¶
Die Web-Applikation stellt die HTTP-API und die Admin-Oberfläche bereit.
Retriever¶
Zur Erhöhung des Durchsatzes können mehrere Retriever gleichzeitg betrieben werden. Ein Retriever verbindet sich mit der Message Queue und bearbeitet jeweils eine Anfrage. Der Retriever verbindet sich mit dem primären Datenspeicher, ruft dieses ab und konvertiert es in ein DIP. Dieses wird über den Proxy zum Herunterladen bereitgestellt.
Der Status des Retrieve-Prozesses wird kontinuierlich aktualisiert und kann über das Dashboard oder die API verfolgt werden.
Purger¶
Überwacht das Download-Verzeichnis. Sobald ein definierter Schwellwert überschritten ist werden alte DIPs abgeräumt.
Statistics¶
Erstellt Statistiken auf Basis der internen Datenbank und speichert diese im Cache.
Prozesse¶
Ingest¶
Der Ingest-Prozess ist als eine Reihe von Zuständen modelliert die nacheinander durchlaufen werden und entweder in dem Zustand "done", "error" oder "fatal" enden. Der Zustand "done" steht hierbei für die erfolgreiche Abarbeitung und garantiert dem Klienten, dass das AIP im "Archival Storage" konsistent gespeichert ist. Jede Abarbeitung eines SIPs wird als Transaktion behandelt. Dies hat zur Folge, dass ein abgebrochener Ingest-Vorgang zu einem "Rollback" führt, um das Auftreten von Inkonsistenzen zu vermeiden. Im Zustand "error" wird die Rollback-Aktion von der loader Applikation ausgeführt; Führte der Ingest-Vorgang zu einem Absturz, wird die Rollback-Aktion vom purger ausgeführt und der loader so lange beim Starten blockiert bis diese Aktion abgeschlossen ist.
Retrieve¶
Sobald ein Klient ein spezifisches Paket anfordert ruft der retriever die Daten aus dem "Archival Storage" ab, baut ein DIP-Paket und legt dieses HTTP-abrufbar im Download-Verzeichnis bereit. Das Paket wird so lange zur Verfügung gestellt, bis ein definierter oberer Schwellwert (typischerweise 70% Dateisystem-Kapazität) überschritten ist. Anschließend entfernt der purger alte Pakete bis ein unterer Schwellwert erreicht ist.
Authentifizierung¶
koala unterstützt die Authentifizierungsmechanismen "local" und "remote". Nach Möglichkeit sollte "remote" für Nutzer und "local" für Funktionskonten verwendet werden.
Local¶
Lokale Konten sind in der internen Datenbank mit gehashten und gesalzenen Passwörtern gespeichert.
Remote¶
Bei der "remote"-Authentifizierung gibt es die Möglichkeit LDAP oder Single Sign-On via OpenID Connect zu verwenden. Siehe hierzu: Configuration.
Um einem Konto Zugriff zu gewähren, muss dieses zunächst als lokales Konten angelegt und entsprechende Rechte zugewiesen werden. Siehe hierzu: Permissions.
Berechtigungen¶
koala stellt eine Reihe von Berechtigungen zur Verfügung die den Zugriff auf verschiedene APIs und Funktionen der Webseite einschränken. Berechtigungen können beim Erstellen oder Editieren von Konten angepasst werden.
Die folgenden Berechtigungen sind verfügbar:
- admin - Gewährt den Zugriff auf alle Funktionen der Webseite
- monitor - Gewährt den Zugriff auf das Dashboard
- api - Gewährt den Zugriff auf alle API-Funktionen
- api_restricted - Gewährt den Zugriff auf alle API-Funktionen außer der Löschung von Archivdaten.