2016-05-30 17 views
6

Ho già passato attraverso this collegamento, (E 'stato pubblicato nel dicembre del 2014), anche denominato this e thisCome funziona il riutilizzo del contenitore AWS Lambda?

Come il contenitore riutilizzo AWS Lambda funziona come il maggio-2016, Che tu possa prega di condividere link specifico che racconta in dettaglio? Di seguito ho alcune domande intorno a questo riutilizzo del contenitore Lambda AWS.

consideri un caso d'uso:

A Lambda nome di funzione "processMessageLambda" riceve richiesta quando deve elaborare un messaggio, e che messaggio che riceve dal API POST REST (da AWS gateway API, in quanto questo funzione lambda connessa con).

Ora questo 'processMessageLambda' elabora il messaggio e lo memorizza nel database.

Quindi logicamente quanto segue: connettersi al database, archiviare il messaggio e arrestare la connessione. (Funziona bene nel caso normale.).

Se le richieste arrivano dire - 10 al secondo, e ogni funzione lambda impiega 30 secondi per l'esecuzione, in realtà apre molte connessioni al database.

Q1: Possiamo utilizzare "pool di connessioni" su questo caso (ad esempio boneCP)? il numero di chiamate a "processMessageLambda" sarebbe pari a cento al secondo o dieci al secondo?

(riferimento: simple example of container reuse - Funziona come si dice, ma cosa accadrà molti richiesta sarebbe arrivato dire - 10 richiesta per secondi)

Q-2: Se la sua possibile utilizzare il pool di connessioni, quindi come sarebbe stato utilizzato questo contenitore lambda aws?

Se considerare un caso:

Consente di considerare che richieste ricevute da questa funzione Lambda sono dieci al secondo, in questo caso - 10 diversi contenitori di questa funzione lambda sarebbe creata o si sarebbe creata unico contenitore di funzioni lambda e che verrebbe utilizzato con tutte queste 10 richieste?

Q-3: Se 10 diversi contenitori di funzione lambda sarebbero stati creati, allora sarebbero state utilizzate 10 connessioni database, quindi quei 10 contenitori sarebbero stati riutilizzati su ulteriori richieste?

Q-4: Potrebbe spiegare, da un punto di vista dello sviluppatore, che funziona davvero come aws il riutilizzo del contenitore lambda o come lo pensa uno sviluppatore durante il riutilizzo del contenitore aws lambda?

Q-5: Se il riutilizzo dei contenitori è già in atto, in che modo uno sviluppatore deve mantenere lo stato delle variabili in modo che uno sviluppatore sappia quale variabile verrebbe riutilizzata?

risposta

8

Costruisco e gestisco più applicazioni serverless. Una cosa da ricordare che mi aiuta è: due funzioni Lambda vivono in universi diversi. Rispondere immediatamente ad alcune domande:

1: No, è possibile eseguire solo il pool di connessioni per Lambda. Se si attivano 100 funzioni Lambda, si hanno 100 connessioni.

2: -

3: L'algoritmo esatto dietro contenitore riutilizzo non è specificato. Le richieste successive possono utilizzare un contenitore esistente o un nuovo contenitore. Non c'è modo di dirlo. Leggi il post sul blog this per maggiori informazioni.

4: Il modo migliore è di pensare che i contenitori non vengono riutilizzati, con la regola aggiunta di usare sempre nomi di file casuali (casuali) in spazio zero se necessario (la cartella/tmp) . Quando ho provato a mantenere la connessione aperta per il riutilizzo, la connessione è scaduta e THEN è stato riutilizzato. Ciò ha comportato problemi di connessione al database. Ora mi basta aprire e chiudere durante ogni invocazione.

5: Mantenere il proprio codice stateless (tranne i moduli, MAI utilizzare le variabili globali) e utilizzare sempre un nome univoco (casuale) se è necessario archiviare i file nello spazio di lavoro. Queste due regole generali mi salvano da un sacco di problemi.

+0

Concordato con la tua risposta. –

+0

Tutti buoni consigli. Tuttavia, sono curioso di sapere se lo stesso contenitore viene utilizzato per risolvere contemporaneamente due richieste lambda. –

+0

Allo stesso tempo: no. Il contenitore può essere riutilizzato solo se al momento non sta eseguendo qualcosa. –