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
Un account Amazon Web Services (AWS) attivo
L'ultima versione di AWS Command Line Interface (AWS CLI)
Credenziali AWS con le autorizzazioni necessarie per creare lo AWS CloudFormation stack, AWS Lambda le funzioni e le risorse correlate
Versioni del prodotto
Python 3.12
Architettura
Il diagramma seguente mostra un design di alto livello del router cellulare.

Il diagramma illustra il seguente flusso di lavoro:
L'utente contatta Amazon API Gateway, che funge da interfaccia per gli endpoint API cell-router.
Amazon Cognito gestisce l'autenticazione e l'autorizzazione.
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.Orchestrator
Esegue 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'
Mapper
operazione gestisce le user-to-cell mappature all'interno del databaseRoutingDB
Amazon DynamoDB creato dal modello. AWS CloudFormation Quando viene attivata, laMapper
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, laScaler
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.
RoutingDB
Memorizza le informazioni e gli attributi delle celle (endpoint API, stato Regione AWS, metriche).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à | Descrizione | Competenze richieste |
---|---|---|
Clona il repository di codice di esempio. | Per clonare il Serverless-Cell-Router GitHub repository sul tuo computer, usa il seguente comando:
| 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 | 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:
| Developer |
Crea file.zip. | Crea un file.zip per ogni funzione Lambda che si trova nella directory Functions.
| Developer |
Copia i file.zip nel bucket S3. | Per copiare tutti i file.zip della funzione Lambda nel bucket S3, usa i seguenti comandi:
| Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa il AWS CloudFormation modello. | Per distribuire il AWS CloudFormation modello, esegui il comando seguente: AWS CLI
| 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 è | Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Assegna celle all'utente. | Per avviare il
La risposta della
| Developer |
Recupera le celle utente. | Per utilizzare
| Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Elimina le risorse. | Per evitare di incorrere in costi aggiuntivi sul tuo account, procedi come segue:
| 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.

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:
Configura e configura il pool di utenti di Amazon Cognito.
Configura e configura l'API API Gateway per il router cellulare.
Creazione di una tabella DynamoDB
Crea e configura una coda SQS.
Implementa il.
Orchestrator
Implementa le funzioni Lambda:
Dispatcher
,,Scaler
,Mapper
.Validator
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:
CellRouter
Risorse API, inclusiPOST
i metodiIntegrazione 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
‒ EuropacellId
‒ cell-0002currentCapacity
‒ 2endPoint_1
‒ <your endpoint for the first Region>endPoint_2
‒ <your endpoint for the second Region>IsHealthy
‒ VeromaxCapacity
‒ 10regionCode_1
‒eu-north-1
regionCode_2
‒eu-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.

6. Implementa le funzioni Lambda
Implementa le Validator
funzioni Dispatcher
Mapper
Scaler
,, 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:
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.
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.
Health ‒ La
Dispatcher
funzione verifica se la cella selezionata è integra in base allo stato della cella fornito (Healthy = true o false).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.
Orchestrator
Richiama 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:
Numero massimo di utenti ‒ Ogni cella può avere un numero massimo di utenti 500.
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).
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
Validator
Avvia 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.