Я развернул основной 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 миллион запросов, потому что это будет стоить несколько долларов. Поэтому, пожалуйста, помогите мне понять, как работают лямбды в этом сценарии. Любая помощь с благодарностью.