Jak mogę rozwiązać problemy ze skalowaniem w przypadku serwerów bezserwerowych i MongoDB?

Nov 29 2020

Jestem zaznajomiony z serwerem bez serwera i MongoDB i chciałbym wiedzieć, czy istnieją skalowalne sposoby połączenia tych dwóch światów. O ile wiem, nie możesz wchodzić w interakcje z MongoDB w RESTful sposób. Zamiast tego otwiera połączenie, które ma być ponownie użyte.

Powiedzmy, że używam AWS Lambda jako części bezserwerowego API. Gdy lambda jest zimna, musisz otworzyć nowe połączenie z MongoDB i gdy lambda jest jeszcze gorąca, połączenie pozostaje otwarte. To rozwiązanie jest w porządku, ale gdy masz gwałtowny wzrost ruchu w API, osiągniesz limit połączeń narzucony przez MongoDB.

Czy istnieje sposób na pokonanie tego ograniczenia połączeń w świecie bezpaństwowym, takim jak lambda?

Odpowiedzi

AtulSharma Nov 29 2020 at 15:13

Funkcje lambda są bezstanowe i asynchroniczne, a korzystając z puli połączeń bazy danych, dodasz do niej stan i pokonasz cel.

Jeśli chcesz pule połączeń, uruchomienie serwera przez EC2 jest najlepszą opcją na AWS.

Jeśli jednak nadal chcesz tworzyć pulę połączeń z lambdą, możesz normalnie utworzyć pulę przy użyciu MongoClient.connect(uri, { poolSize: 10 })i utrzymywać ciepło lambda za pomocą zdarzeń śledzenia w chmurze, tworząc fikcyjny wyzwalacz.

Na pewno zauważysz poprawę wydajności.

ServerlessChamp Nov 29 2020 at 15:15

Pomysł do przemyślenia: Możesz użyć Kinesis, aby wywołać Lambdę, ograniczy liczbę jednoczesnych wykonań do liczby odłamków, na przykład 8 odłamków na 8 jednocześnie.

W ten sposób możesz pozostawić otwarte połączenie i uzyskać limit otwartego połączenia, aby uniknąć problemów ze skalowaniem.

Tego typu rzeczy (w przypadku pojedynczego wywołania, niezależnie od tego, czy połączenie jest nowe, czy ponownie używane) możesz monitorować za pomocą niektórych narzędzi monitorujących, które pomogą Ci utrzymać stan skalowania w czasie, pomoże to w zarządzaniu wiekiem iteratora MongoDB i Kinesis. Jak na przykład:

  • AWS X-Ray
  • Wskaźniki AWS Cloudwatch
  • Datadog
  • Lumigo

W ramach ujawnienia pracuję dla firmy Lumigo, mamy rozproszone narzędzie do monitorowania, które może pomóc w śledzeniu problemów ze skalowaniem produkcji