Einführung in die AEM-Plattform
- Themen:
- Deploying
Erstellt für:
- Developer
Die AEM-Plattform in AEM 6 basiert auf Apache Jackrabbit Oak.
Apache Jackrabbit Oak implementiert ein skalierbares und leistungsstarkes, hierarchisches Inhalts-Repository, das als Grundlage für moderne, erstklassige Websites und andere anspruchsvolle Inhaltsanwendungen dienen soll.
Es handelt sich hierbei um die Nachfolgeversion von Jackrabbit 2 und die Lösung wird von AEM 6 als Standard-Backend für dessen Inhalts-Repository, CRX, verwendet.
Designrichtlinien und -ziele
Oak implementiert die JSR-283-Spezifikation (JCR 2.0). Hauptziele sind:
- Bessere Unterstützung für große Repositorys
- Mehrere verteilte Clusterknoten für hohe Verfügbarkeit
- Bessere Leistung
- Unterstützung für eine Vielzahl von untergeordneten Knoten und Zugriffssteuerungsebenen
Architekturkonzept
Speicherung
Die Speicherschicht hat folgenden Zweck:
- Baummodell implementieren
- Speicher als Plug-in einrichten
- Bereitstellung eines Clustering-Mechanismus
Oak Core
Der Oak-Kern fügt mehrere Ebenen zur Speicherschicht hinzu:
- Zugriffsstufenkontrollen
- Suche und Indizierung
- Beobachrung
Oak JCR
Das Hauptziel des Oak-JCR besteht darin, die JCR-Semantik in Strukturvorgängen zu transformieren. Darüber hinaus erfüllt es folgende Zwecke:
- Implementieren der JCR-API
- Enthält Commit-Hooks, die JCR-Einschränkungen implementieren
Darüber hinaus sind jetzt nicht-Java-basierte Implementierungen möglich, die Teil des Oak-JCR-Konzepts bilden.
Speicherübersicht
Die Oak-Speicherschicht bietet eine Abstraktionsebene für die tatsächliche Speicherung des Inhalts.
Derzeit stehen in AEM 6 zwei Speicher zur Verfügung: der TAR-Speicher und der MongoDB-Speicher.
Tar-Speicher
Der TAR-Speicher nutzt TAR-Dateien. Er speichert Inhalte als unterschiedliche Datensätze innerhalb größerer Segmente. Journale werden verwendet, um den aktuellen Status des Repositorys zu verfolgen.
Es gibt mehrere grundlegende Designprinzipien, um die es herum aufgebaut wurde:
- Unveränderliche Segmente
Die Inhalte werden in Segmenten von bis zu 256 KB gespeichert. Sie sind unveränderlich, sodass häufig genutzte Segmente problemlos zwischengespeichert und Systemfehler vermieden werden, die das Repository beschädigen können.
Jedes Segment wird durch einen eindeutigen Bezeichner (Unique Identifier, UUID) identifiziert und enthält eine kontinuierliche Teilmenge der Inhaltsstruktur. Darüber hinaus können Segmente andere Inhalte referenzieren. Jedes Segment verwaltet eine Liste von UUIDs anderer referenzierter Segmente.
- Lokalität
Verwandte Datensätze wie etwa ein Knoten und dessen unmittelbare, untergeordnete Elemente werden normalerweise im selben Segment gespeichert. Dadurch wird die Suche im Repository sehr schnell und die meisten Cache-Fehler für typische Clients, die auf mehr als einen zugehörigen Knoten pro Sitzung zugreifen, werden vermieden.
- Kompaktheit
Die Formatierung von Datensätzen ist für die Größe optimiert, um IO-Kosten zu reduzieren und so viel Inhalt wie möglich in Caches zu integrieren.
Mongo-Speicher
Der MongoDB-Speicher nutzt MongoDB für Sharding und Clustering. Die Repository-Struktur wird in einer MongoDB-Datenbank gespeichert, wobei jeder Knoten ein separates Dokument ist.
Sie weist mehrere Besonderheiten auf:
- Revisionen
Bei jeder Aktualisierung (Commit) von Inhalten wird eine neue Revision erstellt. Eine Revision ist im Grunde eine Zeichenfolge, die aus drei Elementen besteht:
- Ein Zeitstempel, der von der Systemzeit des Geräts abgeleitet wird, auf dem er generiert wurde
- Ein Zähler, der Revisionen unterscheidet, die mit demselben Zeitstempel erstellt wurden
- Die Clusterknoten-ID, unter der die Revision erstellt wurde
- Zweige
Verzweigungen werden unterstützt, die es dem Client ermöglichen, mehrere Änderungen zu testen und sie mit einem einzigen Zusammenführungsaufruf sichtbar zu machen.
- Frühere Dokumente
Der MongoDB-Speicher fügt bei jeder Änderung Daten zu einem Dokument hinzu. Daten werden jedoch nur gelöscht, wenn explizit eine Bereinigung ausgelöst wird. Alte Daten werden verschoben, wenn ein bestimmter Grenzwert erreicht wird. Frühere Dokumente enthalten nur unveränderliche Daten, d. h. sie enthalten nur übergebene und zusammengeführte Revisionen.
- Clusterknotenmetadaten
Daten zu aktiven und inaktiven Clusterknoten werden in der Datenbank gespeichert, um Cluster-Vorgänge zu erleichtern.
Eine typische AEM-Clusterkonfiguration mit MongoDB-Speicher:
Was unterscheidet sich von Jackrabbit 2?
Da Oak für Abwärtskompatibilität mit dem JCR 1.0-Standard entwickelt wurde, gibt es auf Benutzerebene so gut wie keine Änderungen. Es gibt jedoch einige merkliche Unterschiede, die Sie beim Einrichten einer Oak-basierten AEM-Installation berücksichtigen müssen:
- Indizes in Oak werden nicht automatisch erstellt. Aus diesem Grund müssen bei Bedarf benutzerdefinierte Indizes erstellt werden.
- Im Gegensatz zu Jackrabbit 2, bei dem Sitzungen immer den aktuellen Status des Repositorys angegeben, zeigen Oak-Sitzungen eine unveränderte Ansicht des Repositorys zum Zeitpunkt, an dem die Sitzung erfasst wurde. Dies liegt an dem MVCC-Modell, auf dem Oak basiert.
- Same Name Siblings (SNS), d. h. untergeordnete Elemente mit demselben Namen, werden in Oak nicht unterstützt.
Weitere plattformbezogene Dokumentation
Weitere Informationen zur AEM Plattform finden Sie in den folgenden Artikeln:
Experience Manager
- Bereitstellungshandbuch für Benutzer
- Einführung in die AEM-Plattform
- Bereitstellen von AEM
- Bereitstellen und Verwalten
- Empfohlene Bereitstellungen
- Anwendungsserver-Installation
- Benutzerdefinierte Standalone-Installation
- Start und Stopp über die Befehlszeile
- Konfigurieren von Knotenspeichern und Datenspeichern in AEM 6
- Revisionsbereinigung
- Ausführen von AEM mit der TarMK-Cold-Standby-Funktion
- RDBMS-Unterstützung in AEM 6.4
- Oak-Abfragen und Indizierung
- Indizieren mit dem Oak-run JAR
- Oak-run.jar – Indizierungsanwendungsfälle
- Fehlerbehebung bei Oak-Indizes
- Aktivieren der aggregierten Sammlung von Nutzungsstatistiken
- Fehlerbehebung
- Konfigurieren von AEM
- Grundlegende Konfigurationskonzepte
- Protokollierung
- Konfigurieren von OSGi
- OSGi-Konfigurationseinstellungen
- Ausführungsmodi
- Web-Konsole
- Replikation
- Replizieren mit MSSL
- Fehlerbehebung bei Replikationsproblemen
- Ablauf statischer Objekte
- Versionsbereinigung
- Überwachung und Wartung der AEM-Instanz
- Abladen von Aufträgen
- Single Sign-On
- Ressourcenzuordnung
- Aktivieren von HTTP über SSL
- Konsistenz- und Ausnahmeprüfungen
- Leistungsrichtlinien
- Leistungsoptimierung
- Handbuch zur Leistung von Assets
- Artikel mit Anleitungen für die Konfiguration
- Entfernen der Geometrixx Sites
- Konfigurieren der Web-Konsole
- Aktualisieren auf AEM 6.4
- Aktualisieren auf AEM 6.4
- Planung der Aktualisierung
- Bewertung der Komplexität der Aktualisierung mit dem Musterdetektor
- Abwärtskompatibilität in AEM 6.4
- Upgrade-Verfahren
- Verwenden der Offline-Neuindizierung, um Ausfallzeiten während eines Upgrades zu reduzieren
- Durchführen einer ersetzenden Aktualisierung
- Lazy-Content-Migration
- Verwendung des CRX2Oak-Migrations-Tools
- Wartungsaufgaben vor einer Aktualisierung
- Prüfungen und Fehlerbehebung nach einer Aktualisierung
- Aktualisieren von benutzerdefinierten Suchformularen
- Nachhaltige Aktualisierungen
- Aktualisierung von Code und Anpassungen
- Schritte zur Aktualisierung von Installationen auf Anwendungsservern
- Liste der nach dem Upgrade deinstallierten veralteten Bundles
- Repository-Neustrukturierung
- Repository-Neustrukturierung in AEM 6.4
- Repository-Neustrukturierung für alle Lösungen in AEM 6.4
- Repository-Neustrukturierung in AEM 6.4
- Assets-Repository-Neustrukturierung in AEM 6.4
- Dynamic Media: Repository-Neustrukturierung in AEM 6.4
- Forms-Repository-Neustrukturierung in AEM 6.4
- E-Commerce-Repository-Neustrukturierung in AEM 6.4
- Repository-Neustrukturierung für AEM Communities in 6.4
- eCommerce
- Best Practices