Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Configura un router cellulare serverless per un'architettura basata su celle - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configura un router cellulare serverless per un'architettura basata su celle

Creato da Mian Tariq (AWS) e Ioannis Lioupras (AWS)

Riepilogo

In quanto punto di accesso al sistema di un'applicazione globale basata su celle, il router cellulare è responsabile dell'assegnazione efficiente degli utenti alle celle appropriate e della fornitura degli endpoint agli utenti. Il router cellulare gestisce funzioni come la memorizzazione delle user-to-cell mappature, il monitoraggio della capacità delle celle e la richiesta di nuove celle quando necessario. È importante mantenere la funzionalità del router cellulare durante potenziali interruzioni.

Il framework di progettazione cell-router in questo modello si concentra su resilienza, scalabilità e ottimizzazione complessiva delle prestazioni. Il modello utilizza il routing statico, in cui i client memorizzano nella cache gli endpoint al momento dell'accesso iniziale e comunicano direttamente con le celle. Questo disaccoppiamento migliora la resilienza del sistema contribuendo a garantire la funzionalità ininterrotta dell'applicazione basata su celle in caso di problemi tra cellulare e router.

Questo modello AWS CloudFormation utilizza un modello per implementare l'architettura. Per informazioni dettagliate su ciò che viene distribuito dal modello o per distribuire la stessa configurazione utilizzando il AWS Management Console, consulta la sezione Informazioni aggiuntive.

Importante

La dimostrazione, il codice e il AWS CloudFormation modello presentati in questo modello hanno solo scopo esplicativo. Il materiale fornito ha il solo scopo di illustrare il modello di progettazione e di facilitarne la comprensione. La demo e il codice non sono pronti per la produzione e non devono essere utilizzati per attività di produzione dal vivo. Qualsiasi tentativo di utilizzare il codice o la demo in un ambiente di produzione è fortemente sconsigliato ed è a rischio dell'utente. Consigliamo di consultare i professionisti appropriati e di eseguire test approfonditi prima di implementare questo modello o uno qualsiasi dei suoi componenti in un ambiente di produzione.

Prerequisiti e limitazioni

Prerequisiti

Versioni del prodotto

  • Python 3.12

Architettura

Il diagramma seguente mostra un design di alto livello del router cellulare.

Il processo in cinque fasi del router cellulare.

Il diagramma illustra il seguente flusso di lavoro:

  1. L'utente contatta Amazon API Gateway, che funge da interfaccia per gli endpoint API cell-router.

  2. Amazon Cognito gestisce l'autenticazione e l'autorizzazione.

  3. Il AWS Step Functions flusso di lavoro è composto dai seguenti componenti:

    • Orchestrator ‒ Gli Orchestrator usi AWS Step Functions per creare un flusso di lavoro o una macchina a stati. Il flusso di lavoro viene attivato dall'API del router cellulare. OrchestratorEsegue le funzioni Lambda in base al percorso della risorsa.

    • Dispatcher ‒ La funzione Dispatcher Lambda identifica e assegna una cella statica per ogni nuovo utente registrato. La funzione cerca la cella con il minor numero di utenti, la assegna all'utente e restituisce gli endpoint.

    • Mapper ‒ L'Mapperoperazione gestisce le user-to-cell mappature all'interno del database RoutingDB Amazon DynamoDB creato dal modello. AWS CloudFormation Quando viene attivata, la Mapper funzione fornisce agli utenti già assegnati i propri endpoint.

    • Scaler ‒ La Scaler funzione tiene traccia dell'occupazione delle celle e della capacità disponibile. Se necessario, la Scaler funzione può inviare una richiesta tramite Amazon Simple Queue Service (Amazon SQS) al livello Provision and Deploy per richiedere nuove celle.

    • Validator ‒ La Validator funzione convalida gli endpoint delle celle e rileva eventuali problemi.

  4. RoutingDBMemorizza le informazioni e gli attributi delle celle (endpoint API, stato Regione AWS, metriche).

  5. Quando la capacità disponibile delle celle supera una soglia, il router cellulare richiede servizi di provisioning e distribuzione tramite Amazon SQS per creare nuove celle.

Quando vengono create nuove celle, RoutingDB viene aggiornato dal livello Provision and Deploy. Tuttavia, tale processo non rientra nell'ambito di questo modello. Per una panoramica dei presupposti di progettazione dell'architettura basata su celle e dettagli sul design cell-router utilizzato in questo modello, vedere la sezione Informazioni aggiuntive.

Strumenti

Servizi AWS

  • Amazon API Gateway ti aiuta a creare, pubblicare, gestire, monitorare e proteggere REST, HTTP e WebSocket APIs su qualsiasi scala.

  • AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita attraverso Account AWS e. Regioni AWS

  • Amazon Cognito fornisce autenticazione, autorizzazione e gestione degli utenti per app Web e mobili.

  • Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.

  • AWS Lambda è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

  • Amazon Simple Queue Service (Amazon SQS) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.

  • AWS Step Functionsè un servizio di orchestrazione serverless che consente di combinare funzioni Lambda e altro Servizi AWS per creare applicazioni aziendali critiche.

Altri strumenti

  • Python è un linguaggio di programmazione per computer generico.

Archivio di codice

Il codice per questo pattern è disponibile nel repository GitHub Serverless-Cell-Router.

Best practice

Per le migliori pratiche per la creazione di architetture basate su celle, consulta la seguente guida Well-Architected AWS :

Epiche

AttivitàDescrizioneCompetenze richieste

Clona il repository di codice di esempio.

Per clonare il Serverless-Cell-Router GitHub repository sul tuo computer, usa il seguente comando:

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

Imposta credenziali AWS CLI temporanee.

Configurali AWS CLI con credenziali per il tuo. Account AWS Questa procedura dettagliata utilizza credenziali temporanee fornite dalla riga di comando di AWS IAM Identity Center o dall'opzione di accesso programmatico. In questo modo vengono impostate le variabili AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, e di AWS_SESSION_TOKEN AWS ambiente con le credenziali appropriate da utilizzare con. AWS CLI

Developer

Crea un bucket S3.

Crea un bucket S3 che verrà utilizzato per archiviare e accedere alle funzioni Serverless-Cell-Router Lambda per la distribuzione tramite il modello. AWS CloudFormation Per creare il bucket S3, usa il seguente comando:

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

Crea file.zip.

Crea un file.zip per ogni funzione Lambda che si trova nella directory Functions. Questi file.zip verranno utilizzati per distribuire le funzioni Lambda. Su un Mac, usa i seguenti comandi: 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

Copia i file.zip nel bucket S3.

Per copiare tutti i file.zip della funzione Lambda nel bucket S3, usa i seguenti comandi:

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

Prepara i file sorgente

AttivitàDescrizioneCompetenze richieste

Clona il repository di codice di esempio.

Per clonare il Serverless-Cell-Router GitHub repository sul tuo computer, usa il seguente comando:

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

Imposta credenziali AWS CLI temporanee.

Configurali AWS CLI con credenziali per il tuo. Account AWS Questa procedura dettagliata utilizza credenziali temporanee fornite dalla riga di comando di AWS IAM Identity Center o dall'opzione di accesso programmatico. In questo modo vengono impostate le variabili AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, e di AWS_SESSION_TOKEN AWS ambiente con le credenziali appropriate da utilizzare con. AWS CLI

Developer

Crea un bucket S3.

Crea un bucket S3 che verrà utilizzato per archiviare e accedere alle funzioni Serverless-Cell-Router Lambda per la distribuzione tramite il modello. AWS CloudFormation Per creare il bucket S3, usa il seguente comando:

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

Crea file.zip.

Crea un file.zip per ogni funzione Lambda che si trova nella directory Functions. Questi file.zip verranno utilizzati per distribuire le funzioni Lambda. Su un Mac, usa i seguenti comandi: 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

Copia i file.zip nel bucket S3.

Per copiare tutti i file.zip della funzione Lambda nel bucket S3, usa i seguenti comandi:

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
AttivitàDescrizioneCompetenze richieste

Implementa il AWS CloudFormation modello.

Per distribuire il AWS CloudFormation modello, esegui il comando seguente: AWS CLI

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

Verifica lo stato di avanzamento.

Accedi a AWS Management Console, apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/e controlla lo stato di avanzamento dello sviluppo dello stack. Quando lo stato èCREATE_COMPLETE, lo stack è stato distribuito correttamente.

Developer

Crea lo stack AWS CloudFormation

AttivitàDescrizioneCompetenze richieste

Implementa il AWS CloudFormation modello.

Per distribuire il AWS CloudFormation modello, esegui il comando seguente: AWS CLI

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

Verifica lo stato di avanzamento.

Accedi a AWS Management Console, apri la AWS CloudFormation console all'indirizzo https://console.aws.amazon.com/cloudformation/e controlla lo stato di avanzamento dello sviluppo dello stack. Quando lo stato èCREATE_COMPLETE, lo stack è stato distribuito correttamente.

Developer
AttivitàDescrizioneCompetenze richieste

Assegna celle all'utente.

Per avviare ilOrchestrator, esegui il seguente comando curl:

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

OrchestratorAttiva l'esecuzione della funzione. Dispatcher A sua volta, verifica l'esistenza dell'utente. Dispatcher Se l'utente viene trovato, Dispatcher restituisce l'ID della cella e l'endpoint URLs associati. Se l'utente non viene trovato, gli Dispatcher assegna una cella e invia l'ID della cella alla Scaler funzione per la valutazione della capacità residua della cella assegnata.

La risposta della Scaler funzione è la seguente:

"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

Recupera le celle utente.

Per utilizzare Orchestrator per eseguire la Mapper funzione, esegui il comando seguente:

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

OrchestratorCerca la cella assegnata all'utente e restituisce l'ID della cella e URLs nella seguente risposta:

"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

Valuta e verifica

AttivitàDescrizioneCompetenze richieste

Assegna celle all'utente.

Per avviare ilOrchestrator, esegui il seguente comando curl:

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

OrchestratorAttiva l'esecuzione della funzione. Dispatcher A sua volta, verifica l'esistenza dell'utente. Dispatcher Se l'utente viene trovato, Dispatcher restituisce l'ID della cella e l'endpoint URLs associati. Se l'utente non viene trovato, gli Dispatcher assegna una cella e invia l'ID della cella alla Scaler funzione per la valutazione della capacità residua della cella assegnata.

La risposta della Scaler funzione è la seguente:

"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

Recupera le celle utente.

Per utilizzare Orchestrator per eseguire la Mapper funzione, esegui il comando seguente:

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

OrchestratorCerca la cella assegnata all'utente e restituisce l'ID della cella e URLs nella seguente risposta:

"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
AttivitàDescrizioneCompetenze richieste

Elimina le risorse.

Per evitare di incorrere in costi aggiuntivi sul tuo account, procedi come segue:

  1. Svuota il bucket S3 che hai creato per le funzioni Lambda.

  2. Elimina il bucket.

  3. Elimina lo stack. AWS CloudFormation

Sviluppatore di app

Eliminazione

AttivitàDescrizioneCompetenze richieste

Elimina le risorse.

Per evitare di incorrere in costi aggiuntivi sul tuo account, procedi come segue:

  1. Svuota il bucket S3 che hai creato per le funzioni Lambda.

  2. Elimina il bucket.

  3. Elimina lo stack. AWS CloudFormation

Sviluppatore di app

Risorse correlate

Riferimenti

Video

Physalia: architettura basata su celle per fornire una maggiore disponibilità su Amazon EBS

https://www.youtube-nocookie.com/embed/6 RZMFic Iknq? controlli = 0

Informazioni aggiuntive

Premesse di progettazione dell'architettura basata su celle

Sebbene questo modello si concentri sul router cellulare, è importante comprendere l'intero ambiente. L'ambiente è strutturato in tre livelli distinti:

  • Il livello di routing, o Thin layer, che contiene il router cellulare

  • Lo strato cellulare, che comprende varie celle

  • Il livello Provision and Deploy, che effettua il provisioning delle celle e distribuisce l'applicazione

Ogni livello mantiene la funzionalità anche in caso di alterazioni che interessano altri livelli. Account AWS fungono da limite di isolamento dei guasti.

Il diagramma seguente mostra i livelli ad alto livello. Il livello Cell e il livello Provision and Deploy non rientrano nell'ambito di questo modello.

Il livello Routing, il livello Cell con più account di celle e il livello Provision and Deploy.

Per ulteriori informazioni sull'architettura basata su celle, vedere Riduzione dell'ambito di impatto con l'architettura basata su celle: routing delle celle.

Modello di progettazione Cell-router

Il router cellulare è un componente condiviso tra le celle. Per mitigare i potenziali impatti, è importante che il livello di routing utilizzi un design semplicistico e scalabile orizzontalmente che sia il più sottile possibile. Il livello di routing, che funge da punto di ingresso del sistema, è costituito solo dai componenti necessari per assegnare in modo efficiente gli utenti alle celle appropriate. I componenti di questo livello non si occupano della gestione o della creazione di celle.

Questo modello utilizza il routing statico, il che significa che il client memorizza nella cache gli endpoint all'accesso iniziale e successivamente stabilisce una comunicazione diretta con la cella. Vengono avviate interazioni periodiche tra il client e il router cellulare per confermare lo stato corrente o recuperare eventuali aggiornamenti. Questo disaccoppiamento intenzionale consente operazioni ininterrotte per gli utenti esistenti in caso di inattività del router e fornisce funzionalità e resilienza continue all'interno del sistema.

In questo modello, il router cellulare supporta le seguenti funzionalità:

  • Recupero dei dati delle celle dal database delle celle nel livello Provision and Deploy e archiviazione o aggiornamento del database locale.

  • Assegnazione di una cella a ogni nuovo utente registrato dell'applicazione utilizzando l'algoritmo di assegnazione delle celle.

  • Memorizzazione della user-to-cells mappatura nel database locale.

  • Verifica della capacità delle celle durante l'assegnazione dell'utente e trasmissione di un evento per il distributore automatico al livello Provision and Deploy per creare celle.

  • Utilizzo dell'algoritmo dei criteri di creazione delle celle per fornire questa funzionalità.

  • Rispondere alle richieste degli utenti appena registrati fornendo le URLs celle statiche. Queste URLs verranno memorizzate nella cache del client con un time to live (TTL).

  • Rispondere alle richieste degli utenti esistenti di un URL non valido fornendo un URL nuovo o aggiornato.

Per comprendere meglio il router cellulare dimostrativo configurato dal AWS CloudFormation modello, esamina i seguenti componenti e passaggi:

  1. Configura e configura il pool di utenti di Amazon Cognito.

  2. Configura e configura l'API API Gateway per il router cellulare.

  3. Creazione di una tabella DynamoDB

  4. Crea e configura una coda SQS.

  5. Implementa il. Orchestrator

  6. Implementa le funzioni Lambda:Dispatcher,,Scaler,Mapper. Validator

  7. Valuta e verifica.

Il presupposto è che il livello Provision and Deploy sia già stabilito. I dettagli di implementazione non rientrano nell'ambito di questo artefatto.

Poiché questi componenti sono impostati e configurati da un AWS CloudFormation modello, i passaggi seguenti vengono presentati a un livello descrittivo e di alto livello. Il presupposto è che l'utente disponga delle AWS competenze necessarie per completare l'installazione e la configurazione.

1. Imposta e configura il pool di utenti di Amazon Cognito

Accedi a e apri AWS Management Console la console Amazon Cognito all'indirizzo. https://console.aws.amazon.com/cognito/ Configura e configura un pool di utenti Amazon Cognito denominatoCellRouterPool, con integrazione di app, interfaccia utente ospitata e le autorizzazioni necessarie.

2. Configurare e configurare l'API API Gateway per il router cellulare

Apri la console API Gateway all'indirizzo https://console.aws.amazon.com/apigateway/. Configura e configura un'API denominataCellRouter, utilizzando un autorizzatore Amazon Cognito integrato con il pool di utenti di Amazon Cognito. CellRouterPool Implementa i seguenti elementi:

  • CellRouterRisorse API, inclusi POST i metodi

  • Integrazione con il flusso di lavoro Step Functions implementato nella fase 5

  • Autorizzazione tramite l'autorizzatore Amazon Cognito

  • Mappature delle richieste di integrazione e delle risposte

  • Assegnazione delle autorizzazioni necessarie

3. Creare una tabella DynamoDB

Apri la console DynamoDB https://console.aws.amazon.com/dynamodb/all'indirizzo e crea una tabella DynamoDB standard chiamata con la seguente configurazione: tbl_router

  • Chiave di partizione ‒ marketId

  • Chiave di ordinamento ‒ cellId

  • Modalità di capacità ‒ Fornito

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

Nella scheda Indici, crea un indice secondario globale chiamato. marketId-currentCapacity-index La funzione Scaler Lambda utilizzerà l'indice per condurre ricerche efficienti per la cella con il minor numero di utenti assegnati.

Crea la struttura della tabella con i seguenti attributi:

  • marketId‒ Europa

  • cellId‒ cell-0002

  • currentCapacity‒ 2

  • endPoint_1‒ <your endpoint for the first Region>

  • endPoint_2‒ <your endpoint for the second Region>

  • IsHealthy‒ Vero

  • maxCapacity‒ 10

  • regionCode_1eu-north-1

  • regionCode_2eu-central-1

  • userIds‒ <your email address>

4. Creare e configurare una coda SQS

Apri la console Amazon SQS all'indirizzo https://console.aws.amazon.com/sqs/e crea una coda SQS standard chiamata crittografia a chiave Amazon SQS configurata con CellProvisioning Amazon SQS.

5. Implementa l'Orchestrator

Sviluppa un flusso di lavoro Step Functions che funga da flusso di lavoro Orchestrator per il router. Il flusso di lavoro è richiamabile tramite l'API del router cellulare. Il flusso di lavoro esegue le funzioni Lambda designate in base al percorso della risorsa. Integra la funzione step con l'API Gateway API per il router CellRouter cellulare e configura le autorizzazioni necessarie per richiamare le funzioni Lambda.

Il diagramma seguente mostra il flusso di lavoro. Lo stato di scelta richiama una delle funzioni Lambda. Se la funzione Lambda ha esito positivo, il flusso di lavoro termina. Se la funzione Lambda fallisce, viene chiamato lo stato fail.

Un diagramma del flusso di lavoro con le quattro funzioni e che termina con uno stato di errore.

6. Implementa le funzioni Lambda

Implementa le Validator funzioni Dispatcher MapperScaler,, e. Quando imposti e configuri ciascuna funzione nella dimostrazione, definisci un ruolo per la funzione e assegna le autorizzazioni necessarie per eseguire le operazioni richieste sulla tabella DynamoDB. tbl_router Inoltre, integra ogni funzione nel flusso di lavoro. Orchestrator

Funzione Dispatcher

La Dispatcher funzione è responsabile dell'identificazione e dell'assegnazione di una singola cella statica per ogni nuovo utente registrato. Quando un nuovo utente si registra con l'applicazione globale, la richiesta viene inviata alla Dispatcher funzione. La funzione elabora la richiesta utilizzando criteri di valutazione predefiniti come i seguenti:

  1. Regione ‒ Seleziona la cella nel mercato in cui si trova l'utente. Ad esempio, se l'utente accede all'applicazione globale dall'Europa, seleziona una cella che utilizza Regioni AWS in Europa.

  2. Prossimità o latenza ‒ Seleziona la cella più vicina all'utente Ad esempio, se l'utente accede all'applicazione dall'Olanda, la funzione considera una cella che utilizza Francoforte e l'Irlanda. La decisione relativa alla cella più vicina si basa su metriche come la latenza tra la posizione dell'utente e le regioni della cella. Per questo modello di esempio, le informazioni vengono alimentate staticamente dal livello Provision and Deploy.

  3. Health ‒ La Dispatcher funzione verifica se la cella selezionata è integra in base allo stato della cella fornito (Healthy = true o false).

  4. Capacità ‒ La distribuzione degli utenti si basa sul numero minimo di utenti in una logica cellulare, quindi l'utente viene assegnato alla cella con il minor numero di utenti.

Nota

Questi criteri vengono presentati solo per spiegare questo modello di esempio. Per un'implementazione di un router cellulare nella vita reale, è possibile definire criteri più raffinati e utilizzare criteri basati su casi.

OrchestratorRichiama la funzione Dispatcher per assegnare gli utenti alle celle. In questa funzione demo, il valore di mercato è un parametro statico definito come. europe

La Dispatcher funzione valuta se una cella è già assegnata all'utente. Se la cella è già assegnata, la Dispatcher funzione restituisce gli estremi della cella. Se all'utente non è assegnata alcuna cella, la funzione cerca la cella con il minor numero di utenti, la assegna all'utente e restituisce gli endpoint. L'efficienza della query di ricerca delle celle è ottimizzata utilizzando l'indice secondario globale.

Funzione Mapper

La Mapper funzione sovrintende alla memorizzazione e alla manutenzione delle user-to-cell mappature nel database. Una singola cella viene assegnata a ciascun utente registrato. Ogni cella ne ha due distinte URLs, una per ogni regione AWS. Fungendo da endpoint API ospitati su API Gateway, URLs funzionano come punti in entrata verso l'applicazione globale.

Quando la Mapper funzione riceve una richiesta dall'applicazione client, esegue una query sulla tbl_router tabella DynamoDB per recuperare user-to-cell la mappatura associata all'ID e-mail fornito. Se trova una cella assegnata, la Mapper funzione fornisce prontamente le due della cella. URLs La Mapper funzione monitora inoltre attivamente le modifiche alla cella URLs e avvia notifiche o aggiornamenti alle impostazioni dell'utente.

Funzione Scaler

La Scaler funzione gestisce la capacità residua della cella. Per ogni nuova richiesta di registrazione utente, la Scaler funzione valuta la capacità disponibile della cella assegnata dalla Dispatcher funzione all'utente. Se la cella ha raggiunto il limite predeterminato in base ai criteri di valutazione specificati, la funzione avvia una richiesta tramite una coda Amazon SQS al livello Provision and Deploy, richiedendo il provisioning e l'implementazione di nuove celle. Il ridimensionamento delle celle può essere eseguito in base a una serie di criteri di valutazione come i seguenti:

  1. Numero massimo di utenti ‒ Ogni cella può avere un numero massimo di utenti 500.

  2. Capacità buffer ‒ La capacità buffer di ogni cella è del 20 percento, il che significa che ogni cella può essere assegnata a 400 utenti in qualsiasi momento. Il restante 20% della capacità buffer è riservato a casi d'uso futuri e alla gestione di scenari imprevisti (ad esempio, quando i servizi di creazione e provisioning delle celle non sono disponibili).

  3. Creazione di celle ‒ Non appena una cella esistente raggiunge il 70 percento della capacità, viene attivata una richiesta per creare una cella aggiuntiva.

Nota

Questi criteri vengono presentati solo per spiegare questo modello di esempio. Per un'implementazione di un router cellulare nella vita reale, è possibile definire criteri più raffinati e utilizzare criteri basati su casi.

Il Scaler codice dimostrativo viene eseguito da Orchestrator after che assegna Dispatcher correttamente una cella all'utente appena registrato. Al ricevimento dell'ID della cella daDispatcher, valuta se la cella designata ha una capacità adeguata per ospitare utenti aggiuntivi, sulla base di criteri di valutazione predefiniti. Scaler Se la capacità della cella è insufficiente, la Scaler funzione invia un messaggio al servizio Amazon SQS. Questo messaggio viene recuperato dal servizio all'interno del livello Provision and Deploy, avviando il provisioning di una nuova cella.

Funzione di validazione

La Validator funzione identifica e risolve i problemi relativi all'accesso alle celle. Quando un utente accede all'applicazione globale, l'applicazione recupera le celle URLs dalle impostazioni del profilo utente e indirizza le richieste degli utenti a una delle due regioni assegnate all'interno della cella. Se URLs sono inaccessibili, l'applicazione può inviare una richiesta URL di convalida al router cellulare. Il Orchestrator cell-router richiama il. Validator ValidatorAvvia il processo di convalida. La convalida può includere, tra gli altri controlli, quanto segue:

  • Cella con riferimenti incrociati URLs nella richiesta e URLs memorizzata nel database per identificare ed elaborare potenziali aggiornamenti

  • Esecuzione di un controllo approfondito dello stato (ad esempio, una HTTP GET richiesta all'endpoint della cella)

In conclusione, la Validator funzione fornisce risposte alle richieste delle applicazioni dei clienti, fornendo lo stato di convalida e le eventuali misure correttive necessarie.

ValidatorÈ progettato per migliorare l'esperienza dell'utente. Prendiamo in considerazione uno scenario in cui alcuni utenti incontrano difficoltà ad accedere all'applicazione globale perché un incidente causa la temporanea indisponibilità delle celle. Invece di presentare errori generici, la Validator funzione può fornire istruzioni per la correzione. Questi passaggi potrebbero includere le seguenti azioni:

  • Informare gli utenti sull'incidente.

  • Fornisci un tempo di attesa approssimativo prima della disponibilità del servizio.

  • Fornisci un numero di contatto dell'assistenza per ottenere ulteriori informazioni.

Il codice demo della Validator funzione verifica che la cella fornita dall'utente URLs nella richiesta corrisponda ai record memorizzati nella tbl_router tabella. La Validator funzione verifica anche se le cellule sono sane.

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.