. NET Базовое API развернуто на AWS Lambda - PullRequest
0 голосов
/ 09 февраля 2020

Я развернул основной API-проект. net на AWS лямбду, используя AWS инструментарий. Ниже приведен код

Service.cs
----------
public interface IService {
  void Add(string key, int value);
  int Get(string key);
}

public class Service: IService {
    private Dictionary<string, int> dict = new Dictionary<string, int>();

    public void Add(string key, int value) {
        dict.Add(key, value);
    }

    public int Get(string key) {
        return dict[key];
    }
}

ValuesController.cs
--------------------
public class ValuesController : Controller {
  private readonly IService service;

  public ValuesController(IService s) { service = s; }

  [HttpGet]
  public string Get() {
    service.Add("Key1", 45); // Add the value
    return "success";
  }

  [HttpGet("me")]
  public string Me() {
    return service.Get("Key1").ToString();
  }
}

Startup.cs
----------
services.AddSingleton<IService, Service>(); // Add IService as singleton

Я опубликовал проект на AWS lambdas все работает нормально. Во-первых, я сделал api/values/ запрос, значение 45 кэшируется, и когда я делаю api/values/me, я получаю 45, поскольку введенная служба является одноэлементной.

Вопрос заключается в том, делают ли AWS лямбды в этом сценарии автомасштабирования? Что если я сделаю 1 миллион запросов одновременно, и сервер все равно ответит, поскольку Lambdas оплачиваются по мере использования? Является ли IService все еще синглтоном для 1 миллиона запросов?

На самом деле, я думаю, AWS lambdas действует как обратный прокси-сервер к. NET API, поэтому у нас есть один. NET API-сервер, и lambdas общаются с этим API-сервером. Загрузка или количество запросов, которые может обработать lambda, будет зависеть от теста загрузки сервера API, то есть от объема ОЗУ и количества подключений. Я не смог запустить 1 миллион запросов, потому что это будет стоить несколько долларов. Поэтому, пожалуйста, помогите мне понять, как работают лямбды в этом сценарии. Любая помощь с благодарностью.

...