Как масштабировать WebAPI для поддержки больших объектов, которые должны быть кэшированы и часто доступны для обработки - PullRequest
0 голосов
/ 09 октября 2019

Я разрабатываю новый WebAPI в .NET Core, который прослушивает события и собирает их в памяти (используя Microsoft.Extensions.Caching.Memory ). Потребители этого веб-API будут отправлять запросы данных, поэтому API должен иметь возможность concurrently обрабатывать высокую частоту PUT запросов, чтобы события сохранялись в памяти и других высокочастотных GET запросах от клиентов. API должен будет манипулировать такими данными, хранящимися в памяти, чтобы иметь возможность обслуживать потребителей, поэтому будут некоторые циклы / фильтры и другие операции с интенсивным использованием ЦП. Объем этих данных довольно большой, в общей сложности примерно 50Gb , поэтому я ищу способы масштабирования этого WebAPI. У меня есть 20 независимых категорий событий, так что я могу технически распределить нагрузку, создав API-интерфейс по категориям, чтобы я мог установить 20 API-интерфейсов для каждого на отдельном хосте.

Это был бы хороший подход? Какие способы вы бы использовали для масштабирования этого API?

Я рассматриваю распределенный кеш как альтернативный вариант, например Redis или MSSQL cache, но мне действительно нужно туда попасть?

...