Проверяет понимание влияния горизонтального масштабирования на производительность при CPU-bound нагрузке.
CPU-bound нагрузка означает, что производительность системы ограничена вычислительной мощностью процессора, а не скоростью ввода-вывода или сетью. Примеры: обработка изображений, криптографические операции, сложные математические расчёты.
При увеличении числа инстансов сервиса каждый инстанс может выполняться на отдельном ядре процессора. Это позволяет параллельно обрабатывать несколько запросов, увеличивая общую пропускную способность (throughput). Однако если задача не поддаётся распараллеливанию (например, один запрос требует последовательных вычислений), добавление инстансов не ускорит выполнение одного запроса.
import multiprocessing
def cpu_intensive_task(n):
# Имитация CPU-bound работы
result = 0
for i in range(n):
result += i ** 2
return result
if __name__ == '__main__':
# Один инстанс
result = cpu_intensive_task(10**7)
print(result)
# Много инстансов (параллельно)
with multiprocessing.Pool(processes=4) as pool:
results = pool.map(cpu_intensive_task, [10**7]*4)
print(results)В примере выше один инстанс обрабатывает одну задачу. Четыре инстанса могут обработать четыре задачи параллельно, если есть свободные ядра.
Увеличение числа инстансов эффективно для CPU-bound нагрузок, когда задачи можно распараллелить и есть свободные ядра. Это стандартный подход для повышения пропускной способности веб-сервисов, обрабатывающих множество независимых запросов.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
Node.js
Networks
Ключевые слова
Подпишись на Python Developer в телеграм