Как стать автором
Обновить

Комментарии 27

Ну уж меньше никак стать не может :-) hitrate упал => нагрузка выросла.
200 серверов
Скорее 199 или даже 195 (всё-таки время на запрос даже из кеша тратится), но да, примерно так…
По моим подсчетам получается 199.8(или 9)… ну логично округлить до 200
Это зависит от эффективности кеша. Если запрос из кеша отдаётся, скажем, вдвое быстрее чем без него, то потребуется вообще одна дополнительная машина, если раз в 10 — то 9 допольнительных машин, даже если его эффективность 100-кратная — потребуется 50 машин! Чтобы потребовалось 190 машин кеш должен обладать эффективностью в районе 1000, а для 1999 — порядка 10'000!
как будто бы зря этот процент так упал, получается теперь нужно 199 серверов?
В случае если запрос идет на все сервера сразу и выбирается самый шустрый, а ошибка в кеше распределена равномерно и независимо на каждом сервере.

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

(99 * 1 + 1 * 10 000 ) / 100 = (98 * 1 + 2 * 10 000) / x

отсюда x = 199.02 сервера
Если запрос идет на все сервера сразу и выбирается самый шустрый, а ошибка в кеше распределена равномерно и независимо на каждом сервере, то вероятность того, что мы попадем на битый кеш: (1-вероятность попаданий)количество серверов
Следовательно должно выполняться равенство: (1-0.98)x=(1-0.99)2, откуда получаем 118 сервера.

Чьё кон-фу сильнее?
Черт, равенство: (1-0.98)x=(1-0.99)100
Если ошибка в кеше распределена равномерно и независимо на каждом сервере, то на каждом отдельном сервере вероятность попадания будет 98 процентов.
Так как на запрос отвечает один из серверов а не все сразу, то вероятность попадания будет ровно эти 98 процентов.
Более того, Вас не смущает, что в вашем варианте никак не учитывается то, что нагрузка возрастает в 10 тыс раз при кешмиссе. А если предположить что это 109? Всё теже 118 серверов?
Так что ваше кунфу не самое сильное.
Если ошибка в кеше распределена равномерно и независимо на каждом сервере, то на каждом отдельном сервере вероятность попадания будет 98 процентов. Так как на запрос отвечает один из серверов а не все сразу, то вероятность попадания будет ровно эти 98 процентов.

Да, но разве тогда задача имеет решение?

Так как задача не совсем строго сформулирована, я предположил, что в сети есть мастер-сервер, который проверяет доступность данных в кеше на каждом сервере и переадресует запрос на лучший. В этом случае достаточно посчитать вероятность того, что нужных данных нет на каждом сервере — это (1-x)n, где n — кол-во серверов, а x — вероятность попасть в кеш.

Вас не смущает, что в вашем варианте никак не учитывается то, что нагрузка возрастает

Да не смущает, для решения задачи она не существенна=)
Мастер-сервера нет, в условии 100 абсолютно одинаковых серверов.
а почему умножаете именно на 10 000?
Уже при 10000 ответ 199.02 (а серверов — целое число, значит 200), далее при возрастании разницы ответ будет стремиться к 200 снизу.

Правильный ответ — 200.
100. Нужно лишь починить то, что «слегка испортилось» ;)
Раньше сервис работал на 100 абсолютно одинаковых серверах.

При этом использоваться мог, например, 1.

Так что ответ — уже используемые 100 ;)
Более известная версия этой же задачки:
«Влажность купленного арбуза составила 99%. В результате длительного хранения влажность снизилась до 98%.
Как изменилась масса арбуза? „
Да
да, я тоже про неё сразу вспомнил.
но с арбузом-то решается куда проще задача :)
На самом деле это вообще различные задачи, хотя и похожие внешне. Начать хотя бы с того, что масса арбуза уменьшилась строго вдвое, кол-во же доп серверов зависит от отношения скорости обработки кешируемого и некешируемого запросов.
101.02 -> 102 сервера
нет, выше есть правильные ответы
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации