Производительность хранилища таблиц Azure из массивно параллельного многопоточного чтения - PullRequest
7 голосов
/ 07 октября 2010

Короткая версия: Можем ли мы читать из десятков или сотен разделов таблицы многопоточным образом, чтобы повысить производительность на порядки?

Длинная версия: Мы работаем над системой, которая хранит миллионы строк в хранилище таблиц Azure. Мы разбиваем данные на небольшие разделы, каждый из которых содержит около 500 записей, что представляет дневную стоимость данных на единицу.

Поскольку в Azure нет функции «суммирования», для извлечения данных за год необходимо либо выполнить предварительное кэширование, либо сами суммировать данные в веб-роли или рабочей роли Azure.

Предполагая следующее: - Чтение раздела не влияет на производительность другого - Чтение раздела имеет узкое место в зависимости от скорости сети и поиска сервера

Затем мы можем предположить, что если бы мы хотели быстро суммировать много данных на лету (1 год, 365 разделов), мы могли бы использовать массивно параллельный алгоритм, и он почти идеально масштабировался бы по количеству потоков. Например, мы могли бы использовать параллельные расширения .NET с 50+ потоками и получить ОГРОМНОЕ повышение производительности.

Мы работаем над настройкой некоторых экспериментов, но я хотел посмотреть, было ли это сделано раньше. Поскольку сторона .NET в основном простаивает в ожидании операций с высокой задержкой, это кажется идеальным для многопоточности.

1 Ответ

4 голосов
/ 07 октября 2010

Существуют ограничения на количество транзакций, которые могут быть выполнены с учетной записью хранения и конкретным разделом или сервером хранения за определенный период времени (где-то около 500 запросов / с).Таким образом, в этом смысле существует разумное ограничение на количество запросов, которые вы могли бы выполнять параллельно (до того, как это начнет выглядеть как атака DoS).

Кроме того, при реализации я бы опасался одновременностиограничения на соединение, наложенные на клиента, такие как System.Net.ServicePointManager.Я не уверен, что клиент хранилища Azure подпадает под эти ограничения;они могут потребовать корректировки.

...