2015-07-24 2 views
1

Я работаю над разбором. Я хочу знать, насколько синтаксический анализ является масштабируемым. Я знаю, что он обслуживает 30 запросов/секунду. Но практически сколько одновременных пользователей может получить доступ к разбору? Я знаю, что в разных приложениях используется различная скорость запроса, которая также зависит от шаблона использования пользователей. Но скажем, у нас есть приложение для кампании пожертвования крови, то какова масштабируемость, которую мы можем ожидать от разбора?Сколько одновременных сеансов пользователя может обслуживать?

+0

попробуйте эту статью - будет полезно http://stackoverflow.com/questions/11283729/how-scalable-is-parse –

+0

@AlexG Я уже прочитал эту статью –

ответ

0

Свободный уровень parse.com действительно будет ограничивать 30 req/s.

Как это переводится в число пользователей, зависит от двух факторов:

  • сколько запросов делает одно приложение сделать за день?
  • , как взрывной является трафик?

Первый фактор полностью определяется вашим приложением. Некоторые приложения «звонят домой» все время (а также часто из бэкграунда через службу). Другие приложения будут подключаться только случайно и загружать кучу контента, который будет длиться целую вечность. Как ваше приложение будет вести себя, определяется количеством сообщений, их требованиями к задержкам и если ваш сервис достаточно умен, чтобы объединить ожидающие сообщения в один запрос. Как разработчик приложений, вы единственный, кто может придумать достойную оценку.

Для второго фактора (взрывности) я могу сделать приблизительное предположение, приняв Poisson distribution запросов.

Вот простой питон скрипт, который дает представление о функции вероятности Пуассона:

import math 

def poisson_probability(nr_devs, device_rps, total_rps): 
    # Returns the probability of total_rps requests per second, 
    # assuming nr_devs devices, each making device_rps (mean) 
    l = math.ceil(nr_devs * device_rps) 
    return (l ** total_rps) * math.exp(-1 * l)/math.factorial(total_rps) 

def cumulative_poisson_probability(nr_devs, device_rps, cutoff_probability=0.999999): 
    c = 0.0 
    for i in xrange(1000): 
     p = poisson_probability(nr_devs, device_rps, i) 
     c += p 
     print "RPS: %d\tprobability: %1.6f\tcumulative: %1.6f" % (i, p, c) 
     if c > cutoff_probability: 
      break 

Давайте попробуем 100k устройства, которые генерируют один запрос за 2 часа в среднем:

>>> cumulative_poisson_probability(100000, 1.0/7200.0) 

... 
RPS: 26 probability: 0.001299 cumulative: 0.998691 
... 
RPS: 35 probability: 0.000001 cumulative: 0.999999 

С этими номерами вы имеют 99,9% вероятность получить максимум 26 запросов за каждую секунду и вероятность 99,9999% получить максимум 35 запросов за любую секунду.

Это означает, что вы превысите 26 rps примерно раз в 1000 секунд (~ 20 минут) и 35 rps раз в миллион секунд (~ 11 дней).

Смежные вопросы