Richten Sie einen serverlosen Mobilfunkrouter für eine zellenbasierte Architektur ein - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Richten Sie einen serverlosen Mobilfunkrouter für eine zellenbasierte Architektur ein

Erstellt von Mian Tariq (AWS) und Ioannis Lioupras () AWS

Quellcode-Repository: Serverless-Cell-Router

Umgebung: PoC oder Pilot

Technologien: Serverlos; Bereitstellung von Inhalten; Infrastruktur

Arbeitslast: Open Source

AWSDienste: Amazon API Gateway; AWSCLI; Amazon Cognito AWS CloudFormation; Amazon DynamoDB; AWS Lambda; Amazon S3; Amazon; Step Functions SQS AWS

Übersicht

Als Einstiegspunkt in das System einer globalen zellbasierten Anwendung ist der Mobilfunkrouter dafür verantwortlich, Benutzer effizient den entsprechenden Zellen zuzuweisen und den Benutzern die Endpunkte zur Verfügung zu stellen. Der Mobilfunkrouter übernimmt Funktionen wie das Speichern von user-to-cell Zuordnungen, die Überwachung der Zellkapazität und das Anfordern neuer Zellen bei Bedarf. Es ist wichtig, die Funktionalität des Mobilfunkrouters bei möglichen Störungen aufrechtzuerhalten.

Das Design-Framework für Mobilfunkrouter in diesem Muster konzentriert sich auf Stabilität, Skalierbarkeit und allgemeine Leistungsoptimierung. Das Muster verwendet statisches Routing, bei dem Clients Endpunkte bei der ersten Anmeldung zwischenspeichern und direkt mit Zellen kommunizieren. Diese Entkopplung erhöht die Ausfallsicherheit des Systems, indem sie dazu beiträgt, die unterbrechungsfreie Funktionalität der zellbasierten Anwendung bei einem Ausfall des Mobilfunkrouters sicherzustellen.

Dieses Muster verwendet eine AWS CloudFormation Vorlage für die Bereitstellung der Architektur. Einzelheiten dazu, was die Vorlage bereitstellt, oder dazu, wie dieselbe Konfiguration mithilfe von bereitgestellt wird AWS Management Console, finden Sie im Abschnitt Zusätzliche Informationen.

Wichtig: Die Demonstration, der Code und die AWS CloudFormation Vorlage in diesem Muster dienen nur zur Erläuterung. Das bereitgestellte Material dient ausschließlich der Veranschaulichung des Entwurfsmusters und der Verständlichkeit. Die Demo und der Code sind nicht produktionsbereit und sollten nicht für Live-Produktionsaktivitäten verwendet werden. Von jedem Versuch, den Code oder die Demo in einer Produktionsumgebung zu verwenden, wird dringend abgeraten und erfolgt auf eigenes Risiko. Wir empfehlen, sich mit geeigneten Fachleuten in Verbindung zu setzen und gründliche Tests durchzuführen, bevor Sie dieses Muster oder eine seiner Komponenten in einer Produktionsumgebung implementieren.

Voraussetzungen und Einschränkungen

Voraussetzungen

Produktversionen

  • Python 3.12

Architektur

Das folgende Diagramm zeigt ein allgemeines Design des Mobilfunkrouters.

Der fünfstufige Prozess des Mobilfunkrouters.

Das Diagramm durchläuft den folgenden Arbeitsablauf:

  1. Der Benutzer kontaktiert Amazon API Gateway, das als Front für die API Mobilfunk-Router-Endpunkte dient.

  2. Amazon Cognito kümmert sich um die Authentifizierung und Autorisierung.

  3. Der AWS Step Functions Workflow besteht aus den folgenden Komponenten:

    • Orchestrator ‒ Wird Orchestrator verwendet AWS Step Functions , um einen Workflow oder eine Zustandsmaschine zu erstellen. Der Workflow wird vom Mobilfunkrouter API ausgelöst. Der Orchestrator führt Lambda-Funktionen basierend auf dem Ressourcenpfad aus.

    • Dispatcher ‒ Die Dispatcher Lambda-Funktion identifiziert und weist jedem registrierten neuen Benutzer eine statische Zelle zu. Die Funktion sucht nach der Zelle mit der geringsten Anzahl von Benutzern, weist sie dem Benutzer zu und gibt die Endpunkte zurück.

    • Mapper ‒ Der Mapper Vorgang verarbeitet die user-to-cell Zuordnungen innerhalb der RoutingDB Amazon DynamoDB DynamoDB-Datenbank, die mit der Vorlage erstellt wurde. AWS CloudFormation Wenn die Mapper Funktion ausgelöst wird, stellt sie den bereits zugewiesenen Benutzern ihre Endpunkte zur Verfügung.

    • Scaler ‒ Die Scaler Funktion verfolgt die Zellbelegung und die verfügbare Kapazität. Bei Bedarf kann die Scaler Funktion über Amazon Simple Queue Service (AmazonSQS) eine Anfrage an die Ebene „Bereitstellung und Bereitstellung“ senden, um neue Zellen anzufordern.

    • Validator ‒ Die Validator Funktion validiert die Zellenendpunkte und erkennt mögliche Probleme.

  4. Die RoutingDB speichert Zellinformationen und Attribute (APIEndpunkte, Status AWS-Region, Metriken).

  5. Wenn die verfügbare Kapazität von Zellen einen Schwellenwert überschreitet, fordert der Mobilfunkrouter Bereitstellungs- und Bereitstellungsdienste über Amazon SQS an, um neue Zellen zu erstellen.

Wenn neue Zellen erstellt werden, RoutingDB wird es aus der Bereitstellungs- und Bereitstellungsebene aktualisiert. Dieser Prozess würde jedoch den Rahmen dieses Musters sprengen. Einen Überblick über die Voraussetzungen für den Entwurf zellenbasierter Architekturen und Einzelheiten zum in diesem Muster verwendeten Mobilfunkrouter-Design finden Sie im Abschnitt Zusätzliche Informationen.

Tools

AWS-Services

  • Amazon API Gateway unterstützt Sie bei der Erstellung, Veröffentlichung, Wartung, Überwachung und Sicherung REST — HTTP und das WebSocket APIs in jeder Größenordnung.

  • AWS CloudFormationhilft Ihnen dabei, AWS Ressourcen einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus über AWS-Konten und zu verwalten AWS-Regionen.

  • Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.

  • Amazon DynamoDB ist ein vollständig verwalteter Service ohne SQL Datenbank, der eine schnelle, vorhersehbare und skalierbare Leistung bietet.

  • AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie Code ausführen können, ohne dass Sie Server bereitstellen oder verwalten müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.

  • Amazon Simple Storage Service (Amazon S3) ist ein cloudbasierter Objektspeicherservice, der Sie beim Speichern, Schützen und Abrufen beliebiger Datenmengen unterstützt.

  • Amazon Simple Queue Service (AmazonSQS) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können.

  • AWS Step Functionsist ein serverloser Orchestrierungsservice, mit dem Sie Lambda-Funktionen und andere Funktionen kombinieren können, um geschäftskritische Anwendungen AWS-Services zu erstellen.

Andere Tools

  • Python ist eine Allzweck-Computerprogrammiersprache.

Code-Repository

Der Code für dieses Muster ist im GitHub Serverless-Cell-Router-Repository verfügbar.

Bewährte Methoden

Bewährte Methoden für den Aufbau zellenbasierter Architekturen finden Sie in der folgenden AWS Well-Architected-Anleitung:

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Klonen Sie das Beispielcode-Repository.

Verwenden Sie den folgenden Befehl, um das Serverless-Cell-Router GitHub Repository auf Ihren Computer zu klonen:

git clone https://github.com/aws-samples/Serverless-Cell-Router/
Developer

Richten Sie AWS CLI temporäre Anmeldeinformationen ein.

Konfigurieren Sie die AWS CLI mit Anmeldeinformationen für Ihre AWS-Konto. In dieser exemplarischen Vorgehensweise werden temporäre Anmeldeinformationen verwendet, die über die AWS IAM Identity Center-Befehlszeile oder die programmatische Zugriffsoption bereitgestellt werden. Dadurch werden den AWS_SESSION_TOKEN AWS Umgebungsvariablen AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, und die entsprechenden Anmeldeinformationen für die Verwendung mit dem zugewiesen. AWS CLI

Developer

Erstellen Sie einen S3-Bucket.

Erstellen Sie einen S3-Bucket, der zum Speichern und Zugreifen auf die Serverless-Cell-Router Lambda-Funktionen für die Bereitstellung durch die AWS CloudFormation Vorlage verwendet wird. Verwenden Sie den folgenden Befehl, um den S3-Bucket zu erstellen:

aws s3api create-bucket --bucket <bucket name> --region eu-central-1 --create-bucket-configuration LocationConstraint=eu-central-1
Developer

Erstellen Sie ZIP-Dateien.

Erstellen Sie eine ZIP-Datei für jede Lambda-Funktion, die sich im Verzeichnis Functions befindet. Diese ZIP-Dateien werden zur Bereitstellung der Lambda-Funktionen verwendet. Verwenden Sie auf einem Mac die folgenden Befehle: zip

zip -j mapper-scr.zip Functions/Mapper.py zip -j dispatcher-scr.zip Functions/Dispatcher.py zip -j scaler-scr.zip Functions/Scaler.py zip -j cp validator-scr.zip Functions/Validator.py zip -j dynamodbDummyData-scr.zip Functions/DynamodbDummyData.py
Developer

Kopieren Sie die ZIP-Dateien in den S3-Bucket.

Verwenden Sie die folgenden Befehle, um alle ZIP-Dateien der Lambda-Funktion in den S3-Bucket zu kopieren:

aws s3 cp mapper-scr.zip s3://<bucket name> aws s3 cp dispatcher-scr.zip s3://<bucket name> aws s3 cp scaler-scr.zip s3://<bucket name> aws s3 cp validator-scr.zip s3://<bucket name> aws s3 cp dynamodbDummyData-scr.zip s3://<bucket name>
Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Stellen Sie die AWS CloudFormation Vorlage bereit.

Führen Sie den folgenden AWS CLI Befehl aus, um die AWS CloudFormation Vorlage bereitzustellen:

aws cloudformation create-stack --stack-name serverless.cell-router \ --template-body file://Serverless-Cell-Router-Stack-v10.yaml \ --capabilities CAPABILITY_IAM \ --parameters ParameterKey=LambdaFunctionMapperS3KeyParameterSCR,ParameterValue=mapper-scr.zip \ ParameterKey=LambdaFunctionDispatcherS3KeyParameterSCR,ParameterValue=dispatcher-scr.zip \ ParameterKey=LambdaFunctionScalerS3KeyParameterSCR,ParameterValue=scaler-scr.zip \ ParameterKey=LambdaFunctionAddDynamoDBDummyItemsS3KeyParameterSCR,ParameterValue=dynamodbDummyData-scr.zip \ ParameterKey=LambdaFunctionsS3BucketParameterSCR,ParameterValue=<S3 bucket storing lambda zip files> \ ParameterKey=CognitoDomain,ParameterValue=<Cognito Domain Name> \ --region <enter your aws region id, e.g. "eu-central-1">
Developer

Überprüfen Sie den Fortschritt.

Melden Sie sich bei der an AWS Management Console, öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation/und überprüfen Sie den Fortschritt der Stack-Entwicklung. Wenn der Status lautetCREATE_COMPLETE, wurde der Stack erfolgreich bereitgestellt.

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Weisen Sie dem Benutzer Zellen zu.

Um das zu initiierenOrchestrator, führen Sie den folgenden curl-Befehl aus:

curl -X POST \ -H "Authorization: Bearer {User id_token}" \ https://xxxxxx.execute-api.eu-central-1.amazonaws.com/Cell_Router_Development/cells

Der Orchestrator löst die Ausführung der Dispatcher Funktion aus. Das Dispatcher wiederum überprüft die Existenz des Benutzers. Wenn der Benutzer gefunden wird, Dispatcher gibt der die zugehörige Zellen-ID und den zugehörigen Endpunkt URLs zurück. Wenn der Benutzer nicht gefunden wird, Dispatcher weist der dem Benutzer eine Zelle zu und sendet die Zellen-ID an die Scaler Funktion zur Bewertung der Restkapazität der zugewiesenen Zelle.

Die Antwort der Scaler Funktion lautet wie folgt:

"cellID : cell-0002 , endPoint_1 : https://xxxxx.execute-api.eu-north-1.amazonaws.com/ , endPoint_2 : https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/"

Developer

Ruft Benutzerzellen ab.

Führen Sie Orchestrator den folgenden Befehl aus, um die Mapper Funktion auszuführen:

curl -X POST \ -H "Authorization: Bearer {User id_token}" \ https://xxxxxxxxx.execute-api.eu-central-1.amazonaws.com/Cell_Router_Development/mapper

Das Orchestrator sucht nach der Zelle, die dem Benutzer zugewiesen ist, und gibt die Zellen-ID und URLs die folgende Antwort zurück:

"cellID : cell-0002 , endPoint_1 : https://xxxxx.execute-api.eu-north-1.amazonaws.com/ , endPoint_2 : https://xxxxxxx.execute-api.eu-central-1.amazonaws.com/"

Developer
AufgabeBeschreibungErforderliche Fähigkeiten

Bereinigen Sie die Ressourcen.

Gehen Sie wie folgt vor, um zusätzliche Gebühren auf Ihrem Konto zu vermeiden:

  1. Leeren Sie den S3-Bucket, den Sie für die Lambda-Funktionen erstellt haben.

  2. Löschen Sie den Bucket.

  3. Löschen Sie den AWS CloudFormation Stack.

App-Developer

Zugehörige Ressourcen

Referenzen

Video

Physalia: Zellenbasierte Architektur für höhere Verfügbarkeit bei Amazon EBS

Zusätzliche Informationen

Prämissen für den Entwurf zellbasierter Architektur

Dieses Muster konzentriert sich zwar auf den Mobilfunkrouter, es ist jedoch wichtig, die gesamte Umgebung zu verstehen. Die Umgebung ist in drei separate Schichten gegliedert:

  • Die Routing-Schicht oder dünne Schicht, die den Mobilfunkrouter enthält

  • Die Zellschicht, bestehend aus verschiedenen Zellen

  • Die Bereitstellungs- und Bereitstellungsebene, die Zellen bereitstellt und die Anwendung bereitstellt

Jede Schicht behält ihre Funktionalität auch bei Beeinträchtigungen anderer Schichten bei. AWS-Konten dienen als Grenze zur Fehlerisolierung.

Das folgende Diagramm zeigt die Schichten auf einer hohen Ebene. Die Zellschicht und die Bereitstellungs- und Bereitstellungsschicht fallen nicht in den Geltungsbereich dieses Musters.

Die Routing-Ebene, die Zellenebene mit mehreren Zellkonten und die Bereitstellungs- und Bereitstellungsschicht.

Weitere Informationen zur zellenbasierten Architektur finden Sie unter Reduzierung des Wirkungsbereichs durch zellenbasierte Architektur: Zellenrouting.

Entwurfsmuster für Mobilfunkrouter

Der Mobilfunkrouter ist eine von allen Zellen gemeinsam genutzte Komponente. Um mögliche Auswirkungen zu minimieren, ist es wichtig, dass die Routing-Ebene ein vereinfachtes und horizontal skalierbares Design verwendet, das so dünn wie möglich ist. Die Routing-Schicht dient als Einstiegspunkt des Systems und besteht nur aus den Komponenten, die für die effiziente Zuweisung von Benutzern zu den entsprechenden Zellen erforderlich sind. Komponenten innerhalb dieser Ebene sind nicht an der Verwaltung oder Erstellung von Zellen beteiligt.

Dieses Muster verwendet statisches Routing, was bedeutet, dass der Client die Endpunkte bei der ersten Anmeldung zwischenspeichert und anschließend eine direkte Kommunikation mit der Zelle herstellt. Regelmäßige Interaktionen zwischen dem Client und dem Mobilfunkrouter werden initiiert, um den aktuellen Status zu bestätigen oder Aktualisierungen abzurufen. Diese gezielte Entkopplung ermöglicht bestehenden Benutzern einen unterbrechungsfreien Betrieb bei einem Ausfall des Mobilfunkrouters und sorgt für kontinuierliche Funktionalität und Stabilität innerhalb des Systems.

In diesem Muster unterstützt der Mobilfunkrouter die folgenden Funktionen:

  • Abrufen von Zellendaten aus der Zellendatenbank in der Bereitstellungs- und Bereitstellungsschicht und Speichern oder Aktualisieren der lokalen Datenbank.

  • Zuweisen einer Zelle zu jedem neuen registrierten Benutzer der Anwendung mithilfe des Zellenzuweisungsalgorithmus.

  • Speichern der user-to-cells Zuordnung in der lokalen Datenbank.

  • Überprüfung der Kapazität der Zellen während der Benutzerzuweisung und Auslösen eines Ereignisses für den Automaten in der Bereitstellungs- und Bereitstellungsebene, um Zellen zu erstellen.

  • Verwendung des Algorithmus für Kriterien zur Zellenerstellung, um diese Funktionalität bereitzustellen.

  • Beantwortung der neu registrierten Benutzeranfragen durch Bereitstellung URLs der statischen Zellen. Diese URLs werden auf dem Client mit einer Gültigkeitsdauer (TTL) zwischengespeichert.

  • Beantwortung vorhandener Benutzeranfragen eines ungültigen Benutzers URL durch Bereitstellung einer neuen oder aktualisiertenURL.

Sehen Sie sich die folgenden Komponenten und Schritte an, um mehr über den Demonstrations-Cellrouter zu erfahren, der anhand der AWS CloudFormation Vorlage eingerichtet wurde:

  1. Richten Sie den Amazon Cognito Cognito-Benutzerpool ein und konfigurieren Sie ihn.

  2. Richten Sie das API Gateway API für den Mobilfunkrouter ein und konfigurieren Sie es.

  3. Erstellen Sie eine DynamoDB-Tabelle.

  4. Erstellen und konfigurieren Sie eine SQS Warteschlange.

  5. Implementieren Sie dieOrchestrator.

  6. Implementieren Sie die Lambda-Funktionen:Dispatcher,Scaler,Mapper,Validator.

  7. Beurteilt und verifiziert.

Voraussetzung ist, dass die Bereitstellungs- und Bereitstellungsschicht bereits eingerichtet ist. Ihre Implementierungsdetails würden den Rahmen dieses Artefakts sprengen.

Da diese Komponenten anhand einer AWS CloudFormation Vorlage eingerichtet und konfiguriert werden, werden die folgenden Schritte anschaulich und allgemein dargestellt. Es wird davon ausgegangen, dass Sie über die erforderlichen AWS Fähigkeiten verfügen, um die Einrichtung und Konfiguration abzuschließen.

1. Einrichtung und Konfiguration des Amazon Cognito Cognito-Benutzerpools

Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon Cognito Cognito-Konsole unter https://console.aws.amazon.com/cognito/. Richten Sie einen Amazon Cognito Cognito-Benutzerpool mit dem NamenCellRouterPool, mit App-Integration, gehosteter Benutzeroberfläche und den erforderlichen Berechtigungen ein und konfigurieren Sie ihn.

2. Richten Sie das API Gateway API für den Mobilfunkrouter ein und konfigurieren Sie es

Öffnen Sie die API Gateway-Konsole unter https://console.aws.amazon.com/apigateway/. Richten Sie mithilfe eines Amazon Cognito-AutorisierersCellRouter, der in den Amazon Cognito-Benutzerpool integriert ist, einen API benannten Autorisierer ein und konfigurieren Sie ihn. CellRouterPool Implementieren Sie die folgenden Elemente:

  • CellRouterAPIRessourcen, einschließlich POST Methoden

  • Integration mit dem in Schritt 5 implementierten Step Functions-Workflow

  • Autorisierung durch den Amazon Cognito Cognito-Autorisierer

  • Zuordnungen von Integrationsanfragen und Antworten

  • Zuweisung der erforderlichen Berechtigungen

3. Erstellen Sie eine DynamoDB-Tabelle

Öffnen Sie die DynamoDB-Konsole unter und erstellen Sie eine Standard-DynamoDB-Tabelle https://console.aws.amazon.com/dynamodb/, die tbl_router mit der folgenden Konfiguration aufgerufen wird:

  • PartitionsschlüsselmarketId

  • Schlüssel sortierencellId

  • Kapazitätsmodus ‒ Bereitgestellt

  • Point-in-time recovery (PITR) ‒ Aus

Erstellen Sie auf der Registerkarte Indizes einen globalen sekundären Index mit dem NamenmarketId-currentCapacity-index. Die Scaler Lambda-Funktion verwendet den Index, um effizient nach der Zelle mit der niedrigsten Anzahl zugewiesener Benutzer zu suchen.

Erstellen Sie die Tabellenstruktur mit den folgenden Attributen:

  • marketId‒ Europa

  • cellId‒ cell-0002

  • currentCapacity‒ 2

  • endPoint_1‒ <your endpoint for the first Region>

  • endPoint_2‒ <your endpoint for the second Region>

  • IsHealthy‒ Stimmt

  • maxCapacity‒ 10

  • regionCode_1eu-north-1

  • regionCode_2eu-central-1

  • userIds‒ <your email address>

4 Eine SQS Warteschlange erstellen und konfigurieren

Öffnen Sie die SQS Amazon-Konsole unter https://console.aws.amazon.com/sqs/und erstellen Sie eine SQS Standardwarteschlange namens CellProvisioning Configured with Amazon SQS Key Encryption.

5. Implementieren Sie den Orchestrator

Entwickeln Sie einen Step Functions Functions-Workflow, der als Orchestrator Grundlage für den Router dient. Der Workflow ist über den Mobilfunkrouter API aufrufbar. Der Workflow führt die angegebenen Lambda-Funktionen basierend auf dem Ressourcenpfad aus. Integrieren Sie die Step-Funktion in das API Gateway API für den Mobilfunkrouter CellRouter und konfigurieren Sie die erforderlichen Berechtigungen zum Aufrufen der Lambda-Funktionen.

Das folgende Diagramm zeigt den Arbeitsablauf. Der Auswahlstatus ruft eine der Lambda-Funktionen auf. Wenn die Lambda-Funktion erfolgreich ist, endet der Workflow. Wenn die Lambda-Funktion fehlschlägt, wird fail state aufgerufen.

Ein Diagramm des Workflows mit den vier Funktionen, der mit einem Fehlerstatus endet.

6. Implementieren Sie die Lambda-Funktionen

Implementieren Sie die Validator Funktionen Dispatcher MapperScaler,, und. Wenn Sie jede Funktion in der Demonstration einrichten und konfigurieren, definieren Sie eine Rolle für die Funktion und weisen Sie die erforderlichen Berechtigungen für die Ausführung der erforderlichen Operationen in der DynamoDB-Tabelle zu. tbl_router Integrieren Sie zusätzlich jede Funktion in den Workflow. Orchestrator

Dispatcher-Funktion

Die Dispatcher Funktion ist dafür verantwortlich, jedem neuen registrierten Benutzer eine einzelne statische Zelle zu identifizieren und zuzuweisen. Wenn sich ein neuer Benutzer bei der globalen Anwendung registriert, wird die Anfrage an die Dispatcher Funktion weitergeleitet. Die Funktion verarbeitet die Anfrage anhand vordefinierter Bewertungskriterien wie den folgenden:

  1. Region ‒ Wählen Sie die Zelle auf dem Markt aus, in der sich der Benutzer befindet. Wenn der Benutzer beispielsweise von Europa aus auf die globale Anwendung zugreift, wählen Sie eine Zelle aus, die AWS-Regionen in Europa verwendet wird.

  2. Nähe oder Latenz ‒ Wählen Sie die Zelle aus, die dem Benutzer am nächsten ist. Wenn der Benutzer beispielsweise von Holland aus auf die Anwendung zugreift, berücksichtigt die Funktion eine Zelle, die Frankfurt und Irland verwendet. Die Entscheidung, welche Zelle sich am nächsten befindet, basiert auf Kennzahlen wie der Latenz zwischen dem Standort des Benutzers und den Zellenregionen. Bei diesem Beispielmuster werden die Informationen statisch aus der Bereitstellungs- und Bereitstellungsebene eingespeist.

  3. Health ‒ Die Dispatcher Funktion überprüft anhand des angegebenen Zellstatus (Gesund = wahr oder falsch), ob die ausgewählte Zelle gesund ist.

  4. Kapazität ‒ Die Benutzerverteilung basiert auf der geringsten Anzahl von Benutzern in einer Zellenlogik, sodass der Benutzer der Zelle mit der geringsten Benutzeranzahl zugewiesen wird.

Hinweis: Diese Kriterien dienen nur zur Erläuterung dieses Beispielmusters. Für eine Implementierung eines Mobilfunkrouters in der Praxis können Sie verfeinerte und anwendungsfallorientierte Kriterien definieren.

OrchestratorRuft die Dispatcher-Funktion auf, um Zellen Benutzer zuzuweisen. In dieser Demofunktion ist der Marktwert ein statischer Parameter, der als definiert ist. europe

Die Dispatcher Funktion bewertet, ob dem Benutzer bereits eine Zelle zugewiesen ist. Wenn die Zelle bereits zugewiesen ist, gibt die Dispatcher Funktion die Endpunkte der Zelle zurück. Wenn dem Benutzer keine Zelle zugewiesen ist, sucht die Funktion nach der Zelle mit der geringsten Anzahl von Benutzern, weist sie dem Benutzer zu und gibt die Endpunkte zurück. Die Effizienz der Zellensuchanfrage wird durch die Verwendung des globalen sekundären Indexes optimiert.

Mapper-Funktion

Die Mapper Funktion überwacht die Speicherung und Wartung von user-to-cell Zuordnungen in der Datenbank. Jedem registrierten Benutzer wird eine einzelne Zelle zugewiesen. Jede Zelle hat zwei unterschiedliche Zellen URLs — eine für jede AWS Region. Diese dienen als auf API Gateway gehostete API Endpunkte und URLs fungieren als eingehende Punkte für die globale Anwendung.

Wenn die Mapper Funktion eine Anfrage von der Client-Anwendung empfängt, führt sie eine Abfrage in der DynamoDB-Tabelle aus, tbl_router um die user-to-cell Zuordnung abzurufen, die der angegebenen E-Mail-ID zugeordnet ist. Wenn sie eine zugewiesene Zelle findet, stellt die Mapper Funktion umgehend die beiden Zellen der Zelle bereit. URLs Die Mapper Funktion überwacht außerdem aktiv Änderungen an der Zelle URLs und veranlasst Benachrichtigungen oder Aktualisierungen der Benutzereinstellungen.

Scaler-Funktion

Die Scaler Funktion verwaltet die Restkapazität der Zelle. Bei jeder neuen Benutzerregistrierungsanfrage bewertet die Scaler Funktion die verfügbare Kapazität der Zelle, der die Dispatcher Funktion dem Benutzer zugewiesen hat. Wenn die Zelle ihr vorgegebenes Limit gemäß den angegebenen Bewertungskriterien erreicht hat, initiiert die Funktion eine Anfrage über eine SQS Amazon-Warteschlange an die Bereitstellungs- und Bereitstellungsebene und fordert die Bereitstellung und Bereitstellung neuer Zellen an. Die Skalierung von Zellen kann auf der Grundlage einer Reihe von Bewertungskriterien wie den folgenden durchgeführt werden:

  1. Maximale Benutzeranzahl ‒ Jede Zelle kann eine maximale Anzahl von 500 Benutzern haben.

  2. Pufferkapazität ‒ Die Pufferkapazität jeder Zelle beträgt 20 Prozent, was bedeutet, dass jeder Zelle jederzeit 400 Benutzern zugewiesen werden kann. Die verbleibenden 20 Prozent der Pufferkapazität sind für future Anwendungsfälle und die Behandlung unerwarteter Szenarien reserviert (z. B. wenn die Dienste zur Zellenerstellung und -bereitstellung nicht verfügbar sind).

  3. Zellenerstellung ‒ Sobald eine bestehende Zelle 70 Prozent der Kapazität erreicht, wird eine Anforderung zur Erstellung einer zusätzlichen Zelle ausgelöst.

Hinweis: Diese Kriterien dienen nur zur Erläuterung dieses Beispielmusters. Für eine Implementierung eines Mobilfunkrouters in der Praxis können Sie verfeinerte und anwendungsfallorientierte Kriterien definieren.

Der Scaler Demonstrationscode wird ausgeführt, Orchestrator nachdem der dem neu registrierten Benutzer Dispatcher erfolgreich eine Zelle zugewiesen hat. Nach Erhalt der Zellen-ID von bewertet der anhand vordefinierter BewertungskriterienDispatcher, ob die angegebene Zelle über ausreichend Kapazität für weitere Benutzer verfügt. Scaler Wenn die Kapazität der Zelle nicht ausreicht, sendet die Scaler Funktion eine Nachricht an den SQS Amazon-Service. Diese Nachricht wird vom Service innerhalb der Bereitstellungs- und Bereitstellungsebene abgerufen, wodurch die Bereitstellung einer neuen Zelle eingeleitet wird.

Validator-Funktion

Die Validator Funktion identifiziert und behebt Probleme im Zusammenhang mit dem Zellzugriff. Wenn sich ein Benutzer bei der globalen Anwendung anmeldet, ruft die Anwendung die Zellen URLs aus den Benutzerprofileinstellungen ab und leitet Benutzeranfragen an eine der beiden zugewiesenen Regionen innerhalb der Zelle weiter. Wenn auf sie nicht zugegriffen URLs werden kann, kann die Anwendung eine URL Überprüfungsanfrage an den Mobilfunkrouter senden. Der Mobilfunkrouter ruft die Orchestrator auf. Validator Das Validator initiiert den Validierungsprozess. Die Validierung kann neben anderen Prüfungen Folgendes umfassen:

  • Querverweise auf die URLs in der Datenbank URLs gespeicherte Zelle in der Anfrage, um mögliche Aktualisierungen zu identifizieren und zu verarbeiten

  • Durchführung einer gründlichen Zustandsprüfung (z. B. eine HTTP GET Anfrage an den Endpunkt der Zelle)

Zusammenfassend liefert die Validator Funktion Antworten auf Anfragen von Kundenanwendungen und gibt den Validierungsstatus sowie alle erforderlichen Korrekturmaßnahmen an.

Die wurde Validator entwickelt, um die Benutzererfahrung zu verbessern. Stellen Sie sich ein Szenario vor, in dem bestimmte Benutzer Schwierigkeiten haben, auf die globale Anwendung zuzugreifen, weil aufgrund eines Vorfalls Zellen vorübergehend nicht verfügbar sind. Anstatt generische Fehler anzuzeigen, kann die Validator Funktion aufschlussreiche Schritte zur Problembehebung bereitstellen. Diese Schritte können die folgenden Aktionen beinhalten:

  • Informieren Sie die Benutzer über den Vorfall.

  • Geben Sie eine ungefähre Wartezeit bis zur Verfügbarkeit des Dienstes an.

  • Geben Sie eine Support-Kontaktnummer an, um weitere Informationen zu erhalten.

Der Demo-Code für die Validator Funktion überprüft, ob die vom Benutzer angegebene Zelle URLs in der Anfrage mit den in der Tabelle gespeicherten Datensätzen übereinstimmt. tbl_router Die Validator Funktion überprüft auch, ob die Zellen gesund sind.