redis sharding, конвейерная обработка и круговые обходы.

Предположим, что в вашем веб-приложении вам нужно сделать несколько вызовов redis для отображения страницы, например, для получения набора пользовательских хэшей. Чтобы ускорить это, вы можете обернуть свои команды redis в раздел MULTI/EXEC, таким образом, используя конвейерную обработку, чтобы избежать большого количества обходов. Но вы также хотите сегментировать свои данные, потому что у вас их много и/или вы хотите распределять записи. Тогда конвейерная обработка не будет работать, потому что разные ключи потенциально будут находиться на разных узлах, если только у вас нет четкого представления о расположении данных вашего приложения и сегмента на основе ролей, а не использования хеш-функции. Итак, каковы наилучшие методы разделения данных на разных серверах без слишком большого ущерба для производительности из-за обращения ко многим серверам для выполнения «концептуально уникальной» работы? Я считаю, что ответ зависит от разрабатываемого веб-приложения, и в конечном итоге я проведу несколько тестов, но было бы полезно узнать, как другие справились с упомянутыми мной компромиссами.

6
задан idrarig 9 May 2012 в 11:08
поделиться