Bereitstellung von Microservices mit einer konvergierten Datenbank und Helidon
Architektur
Diese Architektur zeigt die Ressourcen und Topologie, die zur Verwendung von Microservices mit Cloud Infrastructure, einer konvergierten Oracle Database und Helidon erforderlich sind.
Eine konvergierte Oracle Database ist eine optimierte Datenbank, die native Unterstützung für moderne Datentypen, wichtige Data Center-Komponenten und die neuesten Entwicklungsparadigmen bietet. Beispiel: Eine konvergierte Datenbank unterstützt räumliche Daten für die Standorterkennung, JSON für Dokumentspeicher, IoT für die Geräteintegration, In-Memory-Technologien für Echtzeitanalysen und herkömmliche relationale Daten. Durch die Unterstützung all dieser Datentypen kann eine konvergierte Datenbank alle Arten von Workloads von IoT bis hin zu Blockchain und Analytics und Machine Learning ausführen. Sie kann auch jedes Entwicklungsparadigma verarbeiten, einschließlich Microservices.
Die Microservices-Architektur umfasst drei wichtige Ebenen – die Messaging-Ebene, die Anwendungsebene und die Datenbankebene –, um Agilität, horizontale Skalierung und Robustheit für Unternehmensanwendungen zu schaffen. Diese Referenzarchitektur enthält standardbasierte Komponenten, die in der Cloud von Oracle Gen 2 verfügbar sind, um robuste Microservices mit Oracle Database als Persistenzschicht zu erstellen.
Die Messaging-Tier ist ein Java Message Service-(JMS-)Transaktionsnachrichten, das in die Datenbank integriert ist, Transactional Event Queues (TEQ) oder Kafka-basierter Transportmechanismus wie Oracle Cloud Infrastructure Streaming Service.
- Ereignisüberwachung und -warnung: Grafana und Prometheus
- Beobachtbarkeit und Verfolgung: Kiali und Jaeger
- Herkömmliche Anwendungen: Java Enterprise Edition und Oracle Weblogic
- Java-Microservices: Java, helidon.io und Oracle GraalVM Enterprise
- Mehrsprachige Microservices: node.js und python
- Service-Mesh mit Oracle Container Engine for Kubernetes: Istio, Kubernetes und Docker
Die Datenbankebene besteht aus zwei Autonomous Transaction Processing-Instanzen (ATP-1 und ATP-2). Die Architektur verwendet relationale Daten, räumliche Daten, Dokument-, Text- und JSON-Daten in der konvergierten Datenbank und integriertes Transaktionsnachrichten in der Datenbank für Microservices zur Vereinfachung von Workflows.
Das folgende Diagramm zeigt ein Beispiel einer Microservices-Architektur für eine Online-App zur Bereitstellung mobiler Lebensmittel.

Beschreibung der Abbildung helidon_microservices_db_architecture.png
Die Architektur umfasst folgende Komponenten:
- Load Balancer
Der Oracle Cloud Infrastructure Load Balancing-Service ermöglicht automatisierte Trafficverteilung von einem einzelnen Einstiegspunkt auf mehrere Server im Backend.
- Container Engine for Kubernetes
Oracle Cloud Infrastructure Container Engine for Kubernetes ist einen vollständig verwalteten, skalierbaren und hochverfügbaren Service, mit dem Sie Ihre containerisierten Anwendungen in der Cloud bereitstellen können. Sie geben die für Ihre Anwendungen erforderlichen Compute-Ressourcen an, und Container Engine for Kubernetes stellt sie in Oracle Cloud Infrastructure in einem vorhandenen Mandanten bereit. Container Engine for Kubernetes verwendet Kubernetes, um das Deployment, die Skalierung und die Verwaltung containerisierter Anwendungen auf mehreren Hostclustern zu automatisieren.
- Service Connector for Kubernetes
Verbinden Sie die Oracle Autonomous Transaction Processing-Datenbank mit dem OCI Service Broker for Kubernetes mit der Oracle Container Engine for Kubernetes.
OCI Service Broker for Kubernetes ist eine Implementierung der Open Service Broker API. OCI Service Broker for Kubernetes dient insbesondere für die Interaktion mit Oracle Cloud Infrastructure-Services aus Kubernetes-Cluster. Es umfasst drei Servicebrokeradapter für das Binding mit den folgenden Oracle Cloud Infrastructure-Services: Object Storage, Autonomous Transaction Processing, Autonomous Data Warehouse und Oracle Streaming Service.
Sie können OCI Service Broker for Kubernetes zu Clustern hinzufügen, die Sie mit Oracle Cloud Infrastructure Container Engine for Kubernetes erstellt haben, um mit den oben aufgeführten Oracle Cloud Infrastructure-Services zu kommunizieren. Wenn Sie OCI Service Broker for Kubernetes zu einem Cluster hinzufügen, müssen Sie die Oracle Cloud Infrastructure-Services nicht jedes Mal manuell durch Provisioning bereitstellen und die Bereitstellung aufheben, wenn Sie eine Anwendung im Cluster bereitstellen oder das Deployment aufheben. Stattdessen kommunizieren Sie mit den Oracle Cloud Infrastructure-Services, indem Sie mitkubectl
die von OCI Service Broker for Kubernetes implementierten Open Service Broker-APIs aufrufen. - Registrierung
Oracle Cloud Infrastructure Registry ist eine von Oracle verwaltete Registry, mit der Sie Ihren Workflow von der Entwicklung bis zur Produktion vereinfachen können. Mit Registry können Sie auf einfache Weise Entwicklungsartefakte wie Docker-Images speichern, freigeben und verwalten. Die skalierbare Architektur von Oracle Cloud Infrastructure stellt sicher, dass Sie Ihre Anwendungen zuverlässig bereitstellen und verwalten können.
- Objektspeicher
Object Storage bietet schnellen Zugriff auf große Mengen strukturierter und unstrukturierter Daten eines beliebigen Inhaltstyps, einschließlich Datenbankbackups, Analysedaten und umfangreicher Inhalte wie Bilder und Videos. Verwenden Sie den Standardspeicher für "hot"-Speicher, auf den Sie schnell, sofort und häufig zugreifen müssen. Verwenden Sie Archivspeicher für "kalten" Speicher, den Sie über lange Zeiträume beibehalten und selten oder nur selten zugreifen.
- Microservices
Verwenden Sie Istio Service Mesh, um die Microservices mit einem Proxy zu verbinden, um in Kiali visualisierte Tracing-Informationen bereitzustellen.
Verwenden Sie Jaeger zur Rückverfolgung und Kiali zur Beobachtung des Istio-Meshes.
- Helidon
Verwenden Sie Helidon MicroProfile-Annotationen, um die Integrität und Verfügbarkeit von Microservices zu überwachen.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing ist ein selbststeuernder, selbstsichernder, selbstreparierender Datenbankservice, der für Transaktionsverarbeitungs-Workloads optimiert ist. Sie müssen keine Hardware konfigurieren und installieren. Oracle Cloud Infrastructure verarbeitet das Erstellen der Datenbank sowie das Backup, Patching, Upgrade und Tuning der Datenbank.
Das folgende Diagramm zeigt ein Beispiel für den Workflow einer Microservices-Architektur für eine Online-App zur Bereitstellung mobiler Lebensmittel.

Beschreibung der Abbildung microservices_converged_db.png
In dieser Architektur werden die folgenden Schritte angezeigt:
- Der Kunde sucht online nach Bewertungen und gibt einen Auftrag an. Der Order Service-Mikroservice verfügt über eine Suchprüfungsfunktion. Suchprüfungsanforderungen und -aufträge werden über einen Load Balancer an den Order Service-Microservice gesendet. Der Order Service kommuniziert mit der Datenbank.
- Text- und JSON-Datensuche und -Sentimentanalyse werden an die Funktion "Suchprüfungen" gesendet.
- Der Order Service und die Microservices von Inventory Service kommunizieren über Transaktionsnachrichten miteinander.
- Der Order Service sendet einen Platzauftrag für eine Lieferanfrage an den Microservice des Delivery Service.
- Die räumliche Berechnung für einzelne oder mehrere Auslieferungen wird von der Datenbank an das Feature "Routenzuordnung" des Delivery Service gesendet.
- Betriebsanalysen mit Lowcode werden von der Datenbank an das Analytics Dashboard gesendet.
Empfehlungen
Ihre Anforderungen können sich von der hier beschriebenen Architektur unterscheiden. Verwenden Sie die folgenden Empfehlungen als Ausgangspunkt:
- Benutzerfreundlichkeit
Die Architektur verstärkt die Notwendigkeit, die Persistenzschicht für Microservices mit einer konvergierten Oracle-Datenbank einfacher zu entwerfen. Datenbanksicherheitsmodelle sind ein guter Ausgangspunkt für Authentifizierungs- und Autorisierungssicherheit. Darüber hinaus vereinfacht die Verwendung von Backup und High Availability der Datenbank die Entwicklung von Microservices.
Ein gutes Verständnis der Anwendung steigert den Datenzugriff für jeden Microservice mit dem Design in gebundenen Kontexten und der lockeren Kopplung innerhalb der Vielzahl dieser Services. Beginnen Sie mit der Isolation auf Schemaebene.
Die richtige Größe des Microservice ist wichtig, um Datenabhängigkeiten besser zu verwalten.
Ereignisgesteuertes Transaktions-Messaging, das in der konvergierten Datenbank erstellt wurde, ermöglicht eine lose Kopplung zwischen Microservices und behält gleichzeitig einmaliges Messaging bei. Dadurch wird eine effiziente Implementierung eventuell konsistenter Transaktionen über Microservices hinweg (sagas genannt) bereitgestellt.
- Transparenz und Verwaltbarkeit
Beobachtbarkeit und Verwaltbarkeit mit Helidon-Annotationen und der Verwendung von Tracing-Tools ermöglichen eine Automatisierung beim skalierbaren Betrieb einer Microservices-basierten Anwendung. Dies ist ein Bereich, der sowohl auf der Anwendungsebene als auch auf der Datenbankebene gut konzipiert werden kann, insbesondere da die Belastung der Microservices zunimmt und Anpassungen für Performance und Verfügbarkeit im großen Maßstab erforderlich sind.
- Erweiterung
Die Containerisierung von Microservices, die von Oracle Cloud Infrastructure Container Engine for Kubernetes verwaltet werden, ermöglicht die Erweiterbarkeit der Anwendungsebene. Obwohl nicht immer empfohlen wird, dass jeder Microservice eine eigene Datenbank hat, ist dies mit der Architektur der konvergierten Datenbank sicher möglich. Häufig bewirkt die Isolierung auf Schemaebene zwischen Microservices eine gute Isolation vor unnötigen Datenabhängigkeiten.
- Sicherheit
Eine konvergierte Datenbank bietet ein hohes Maß an Sicherheit, mit dem eine Anwendung Rollen auf Benutzerebene, Authentifizierung, Autorisierung und Datenverschlüsselung bereitstellen kann. Ein sicherer Zugriff auf die Microservices wird auch von Helidon in Verbindung mit der Sicherheit in der Persistenzschicht bereitgestellt.
- Skalierung
Diese Architektur fügt Microservices-Instanzen hinzu, die sie mit Oracle Container Engine for Kubernetes verwalten. Außerdem ermöglicht ein Load Balancer die nahtlose Verwendung mehrerer Instanzen für jeden Service. Verfügbarkeit und Skalierung werden mithilfe dieses Paradigmas für Microservices behoben. Die Datenbank bietet eine einfache autonome Skalierung auf eine bestimmte Ebene (2 bis 48 Oracle Compute Units (OCPUs) pro Datenbanksystem), die für die meisten Anwendungen funktionieren kann.
Überlegungen
Beachten Sie beim Deployment dieser Referenzarchitektur die folgenden Punkte.
- Performance
Skalieren Sie die Anwendungsperformance horizontal, indem Sie zusätzliche Instanzen für den Microservice hinzufügen und mit Kubernetes verwalten.
Skalieren Sie die Datenbankperformance, indem Sie die Datenbanklast in der Oracle Autonomous Transaction Processing-Performancekonsole beobachten und die Anzahl der OCPUs erhöhen (bis zu 48 in ATP-Shared).
- Sicherheit
Die Sicherheit für Microservices basiert auf der Sicherheit von Helidon Microservices und dem Oracle Database-Sicherheitsmodell – Authentifizierung, Autorisierung, Zugriffskontrolle für Ressourcen. Oracle empfiehlt, dass Anwendungen die Sicherheitsüberwachungsmechanismen der Datenbank so weit wie möglich verwenden.
- Verfügbarkeit
High Availability besteht aus zwei Teilen: der Anwendungsschicht und der Datenebene.
Die Anwendungsverfügbarkeit wird erreicht, indem zustandslose Container vorhanden sind, von Kubernetes repariert werden und jeder Status aus den Metadaten der mittleren Netzwerkebene oder der Datenbank wiederhergestellt wird.
Für High Availability-Architekturen wird eine physische Standby-Datenbank für PDBs in Oracle Cloud-Availability-Domains oder regionsübergreifend empfohlen. Weitere Empfehlungen finden Sie in den High Availability-Parametern von Oracle Database.
- Kostenfaktor
Cloud-Wirtschaft trifft auf diese Microservices-Referenzarchitektur zu. Alle Komponenten sind in Oracle Cloud Infrastructure als verwalteten Service verfügbar. Sie zahlen für das, was Sie verwenden, und nicht für Provisioning-Hardware.
Bereitstellen
Der Terraform-Code für diese Referenzarchitektur ist in GitHub verfügbar. Sie können den Code von GitHub auf Ihren Computer herunterladen, den Code anpassen und die Architektur mit der Terraform-CLI bereitstellen.
- Mit dem Terraform-Code in GitHub bereitstellen:
- Gehen Sie zu GitHub.
- Klonen Sie das Repository, oder laden Sie es auf Ihren lokalen Computer herunter.
- Befolgen Sie die Anweisungen im Dokument
README
.
- Stellen Sie mit Oracle LiveLabs Microservices mit Oracle Converged Database Workshop erstellen bereit.
Weitere Informationen
Weitere Informationen finden Sie in den folgenden Ressourcen:
- Erstellen von Microservices mit Oracle Converged Database Workshop
- Whitepaper zu den ersten Schritten von Microservices
- Helidon Microservices
- Jaeger Tracing
- Istio Service Mesh and Service Management
- Kiali Service Mesh Management für Istio
- Transactional Event Queues und Advanced Queuing - Benutzerdokumentation
- Oracle Database - Überblick über High Availability
- Oracle Database Security Guide
Änderungslog
In diesem Log werden nur die wesentlichen Änderungen aufgeführt:
Juni 14, 2021 |
|