@spbpython

Страница 672 из 785
Nikolay
24.02.2018
23:02:10
Нормально сделй - нормально будет. Горизонтальное масштабирование не панацея, а подход к скалированию при невозможности скалирования вертикального(привет синхронный питон)
ну, питон не настолько синхронный все-таки. Вот с параллельностью проблемы, да, но процессов можно и много наколбасить

Nikolay
24.02.2018
23:02:39
я выше писал про event loop и его внутреннюю кухню.
не очень понял, какое отношение внутренняя кухня эвентлупа имеет к тому, что горизонтальное масштабирование работает

Google
Roman
24.02.2018
23:02:59
Nikolay
24.02.2018
23:03:00
не вижу проблемы

в какую?
в любую, зависит от нагрузки

Denis
24.02.2018
23:03:36
Вот только наличие большого числа процессов/тредов, на каждый реквест - огромный оверхед. Корутины же позволяют избавиться от него(привет гоу, нода)

Roman
24.02.2018
23:03:43
вот у тебя 10млн юзеров, у каждого, допустим, 10 событий в секунду случается. в какую бд ты будешь писать?

Nikolay
24.02.2018
23:03:46
есть много вариантов, и они уже решаются на стороне базы, го тебе тут никак все равно не поможет

вот у тебя 10млн юзеров, у каждого, допустим, 10 событий в секунду случается. в какую бд ты будешь писать?
если такой большой игровой мир - я его разделю на зоны и буду хранить в разных базах на разных серверах

Roman
24.02.2018
23:04:24
в любую, зависит от нагрузки
можно упросить задачу: обычный чат

Dmitry
24.02.2018
23:04:46
+1)

Google
Denis
24.02.2018
23:04:55
Но в гоу это однопоточные корутины

Тьфу. в питоне

Nikolay
24.02.2018
23:05:24
можно упросить задачу: обычный чат
в одной комнате столько человек не будет все равно, поэтому можно скейлить по комнатам, например

Nikolay
24.02.2018
23:05:36
Тьфу. в питоне
ну да, ну и что? асинхронность-то есть

Denis
24.02.2018
23:05:52
Как и в ноде. К слову, коллега забыл await написать на ноде как-то, в результате потеряли тысяч 300 долларов

Nikolay
24.02.2018
23:06:30
а если будет?
ну, во-первых, не будет. Писать не будет, это тупо невозможно. Во-вторых, в случае чата можно спокойно писать в несколько баз, ибо нет связей между сущностями

Denis
24.02.2018
23:06:47
ну да, ну и что? асинхронность-то есть
Это к тому, что всё-равно придётся иметь пару воркеров на бэкап-план. С гоу такой фигни не будет

Некто
24.02.2018
23:07:18
Запись в базу для чата это дорого

Если писать туда всё

А не батчами

Nikolay
24.02.2018
23:07:35
Это к тому, что всё-равно придётся иметь пару воркеров на бэкап-план. С гоу такой фигни не будет
не пару воркеров на бэкап, а скейлить их число в зависимости от нагрузки автоматом

Denis
24.02.2018
23:07:36
в ноде потоков вообще нет
Ну как, в libuv есть. По сути можно считать что один

Nikolay
24.02.2018
23:07:57
речь про mq
ок, тогда прокидывать весь поток говна в кафку и разгребать на топики отдельно

Ну как, в libuv есть. По сути можно считать что один
ну, они там захардкожены. Формально ты тупо не можешь взять - и создать поток

Google
Nikolay
24.02.2018
23:08:35
и с каким latency это будет работать?
зависит от того, что нужно

Denis
24.02.2018
23:08:49
не пару воркеров на бэкап, а скейлить их число в зависимости от нагрузки автоматом
Вот только проблема в том, что боттлнеком у тебя может стать простая арифметическая функция, из-за чего с небольшим числом трафика ты сразу полетишь скейлиться, не особо понимая зачем

Nikolay
24.02.2018
23:08:56
ты не абстрактный пример придумывай, давай ближе к жизни

Некто
24.02.2018
23:09:34
Это пахнет вбивание в голову гвоздя ради инструмента

Либо го, либо тащить кафку

Это странно

:()

Dmitry
24.02.2018
23:10:01
в гоу тоже тащить придётся

Nikolay
24.02.2018
23:10:02
В гоу то то же самое
ну, не совсем так. Если у тебя есть два ядра и ты делаешь две горутины с i/o - можно быть почти уверенным, что го создаст поток

Denis
24.02.2018
23:10:02
Либо го, либо тащить кафку
Будь я хейтером гоу, я бы притащил гоу

Nikolay
24.02.2018
23:10:07
Либо го, либо тащить кафку
ненене, ты не поняла

го не решает этих проблем точно так же, как не решает их питон

просто гошных воркеров нужно будет меньше

Nikolay
24.02.2018
23:11:33
ну ок. фиг с этими игрушками, пусть будет днс-сервер вроде 8.8.8.8
DNS - это распределенная база данных, если что. Да, там все это уже искаропки работает.

нет.
если есть i/o - то да

там есть тонкости, да, но в целом можно иногда явно предсказать поведение

Google
Denis
24.02.2018
23:12:15
Гоу всегда имеет запущеный пул потоков, равный числу ядер(регулируется через энв), а планировщик кидает задачи куда удобно в зависимости от занятости

Roman
24.02.2018
23:12:42
DNS - это распределенная база данных, если что. Да, там все это уже искаропки работает.
ну если с первым я согласен, то второе какое имеет отношение к вопросу?

Denis
24.02.2018
23:13:26
не числу ядер, строго говоря, а GO_MAXPROC, если я не путаю
Да, ну я и сказал что через энв регулируется. Раньше по дефолту было = 1, а сейчас - числу ядер

Nikolay
24.02.2018
23:13:28
там нет проблемы, что данные будут на нодах чуточку рассинхронизированы, поэтому горизонтально масштабировать можно сколько угодно

Nikolay
24.02.2018
23:13:59
да. и?
и - твой пример про 8.8.8.8 невалиден немного

Dmitry
24.02.2018
23:14:00
это вообще eventual consistency.

Admin
ERROR: S client not available

Nikolay
24.02.2018
23:14:20
ты просил конкретную задачу.
ну, конкретная задача твоя решается тупо установкой кучи кэширующих dns-серверов

причем тут го - непонятно

Roman
24.02.2018
23:14:26
и - твой пример про 8.8.8.8 невалиден немного
нет-нет. мой пример про 8.8.8.8 - это про нагрузку.

причем тут го - непонятно
речь про dns-сервер на го :)

Nikolay
24.02.2018
23:14:50
dns масштабируется шикарно

надо всего лишь быстро уметь данные из локального кэша отдавать

Roman
24.02.2018
23:15:50
dns масштабируется шикарно
это понятно. но сколько тебе понадобится железа в случае с python?

Dmitry
24.02.2018
23:16:12
чуть больше чем с go)

Google
Nikolay
24.02.2018
23:16:16
это понятно. но сколько тебе понадобится железа в случае с python?
немногим больше, на самом деле, особенно если кода на самом питоне там будет минимум

а что?

Nikolay
24.02.2018
23:17:22
минимум? это сколько? ноль? )
нет, просто минимум для склейки сишных библиотек

это я ненавязчиво намекаю на japronto или что-то подобное

Denis
24.02.2018
23:18:15
Мне кажется вы потеряли саму суть вопроса выбора инструмента. По сути, для бизнеса, вполне можно написать DNS сервер и на питоне так, что бюджет не будет ОООЧЕНЬ больше, чем на гоу. Вопрос в том, что на питоне будет оверхед, при разработке на питоне вы НЕ ПОЛУЧИТЕ выгоды от экосистемы питона. А на гоу вы получите лучшее качество, за счёт типизации, обработки ошибок, скорости.

Nikolay
24.02.2018
23:18:40
нет такого для udp & dns :)
можно асинхронно любой протокол наколбасить, не вижу проблемы

Некто
24.02.2018
23:19:06
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=python3 бгг

Roman
24.02.2018
23:19:10
если что, мой поинт в том что хорошо масштабироваться когда можно просто шардить юзеров.

Некто
24.02.2018
23:19:15
Смешные цифры

Roman
24.02.2018
23:19:38
и плохо, когда ты это делать не можешь и заперт в рамках одного процесса

Nikolay
24.02.2018
23:19:45
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=python3 бгг
да ну бредовый бенчмарк, на самом деле :)

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

в итоге выйдет немного дороже, да

но зато гибче

Roman
24.02.2018
23:20:28
и из быстрых механизмов ipc есть только shared memory, но она требует синхронизации

Roman
24.02.2018
23:21:39
Nikolay
24.02.2018
23:21:48
а если нужен?
потому что ты так сказал?

Страница 672 из 785