
Vladimir
22.01.2017
21:27:30
сразу понятно, что делает фронтэндер, что на продакшне это никто не использует

KlonD90
22.01.2017
21:28:42
не ну в принципе то подточить можно. Вопрос скорее в протоколе как таковом. Но я пока вижу только протокол типа базового наброска. Я сам такой за пару вечеров накатал правда с идеей того что это будет выстраиваться в дерево по принципу WOOT

Vladimir
22.01.2017
21:29:41
скорее всего поделка вообще не стоит внимания

KlonD90
22.01.2017
21:30:51
Написал ситнику мб ответит чего

Google

Dmitrii
22.01.2017
21:34:31

Vladimir
22.01.2017
21:35:18
SIGNIT отправляет шелл когда нажимешь ctrl c
для продакшна нужен еще как минимум SIGTERM

Dmitrii
22.01.2017
21:37:07
насколько я знаю SIGINT отправляет так же и pm2 если в продакшене его использовать http://pm2.keymetrics.io/docs/usage/signals-clean-restart/
и вообще обработка сигналов по моему должна не быть на уровне конкретного приложения, а не библиотек, библиотека должна дать метод для завершения только

KlonD90
22.01.2017
21:38:02
а вообще разве имеет смысл такие подписки?

Vladimir
22.01.2017
21:38:14
возможно, это лишь говорит о подходе авторов pm2

KlonD90
22.01.2017
21:38:23
меня больше наличие не синхронных операций напрягает

Vladimir
22.01.2017
21:38:24
стандартно используется sigterm для этих целей

KlonD90
22.01.2017
21:38:27
в выходе

Vladimir
22.01.2017
21:38:47

KlonD90
22.01.2017
21:39:13
лучше сразу худший вариант предусмотреть

Google

Alexey (boblin)
22.01.2017
21:39:28
котики, вопрос по монге.
есть монго-база вида
[
{t: nnn, e:[{a:xxx, b:yyy, c:zzz}, {}, {}]},
{},
{}
]
к ней делается много запросов вида
count({
e: {
$elemMatch: {
a: { $gte: 100},
b : 0,
c : 99,
}
},
t: 10
})
в каждом е порядка 400 элементов, записей таких около 30к (and growing). Каждый такой count выполняется где-то четверть секунды, что непозволительно долго.
можно ли как-то облегчить ей участь? ну там, проставить индексы для вот этих элементов в e?

KlonD90
22.01.2017
21:39:32
let it crash же (

Vladimir
22.01.2017
21:39:39
ну в идеале
но это слишком сложно
плюс я понятия не имею как с таким подходам обрабатывать очереди сообщений
посточнно будет дубликация

Alexey (boblin)
22.01.2017
21:40:43
если есть профильное коммунити по монге - скажите, и я тут отстану

Mikhail
22.01.2017
21:58:37

Alexey (boblin)
22.01.2017
21:59:00
о, спасибо!

Amon Bower
22.01.2017
22:19:40
Решил подключить SSL, итог 521 ошибка. В гугле искал, решений много. Хочу знать у тех, кто уже с этим сталкивался, какое лучше

KlonD90
22.01.2017
22:27:40
плюс я понятия не имею как с таким подходам обрабатывать очереди сообщений
не ну есть много подходов. все понятно в среднем какие гарантии дают. ну самое простое типа разбивать на статусы и брать не заблоченные сообщения а если у тебя разорвалось соединение с очередью то ты бросаешь все делать. если очередь видит что с тобой разорвано сообщение то оно помечает твои задачи как свободные и возвращает их. так тарантул например делает
ну там нужны пинги конечно туда сюда
я впрочем тупо пишу умри на разрыв соединения для того чтобы все перестало работать
и дальше системд перезапускает

Vladimir
22.01.2017
22:29:56
допустим ты делаешь задачу до конца, но не успеваешь отправить ак = дубликация
или допустим ты готовишь ответ на http запрос, но не испеваешь отправить - ошибка на клиенте
с этим всем наверно можно бороться, но проще делать graceful shutdown

KlonD90
22.01.2017
22:33:46
и уже каким-нибудь агентом доотправить ак

Vladimir
22.01.2017
22:34:05
да не

Google

Vladimir
22.01.2017
22:34:22
если у тебя лет ит крэш, то тебе это не поможет
крэш ведь в любой момент может придти
соответственно, любой шаг может не произойти
будь то отпрака акка или запись в файл

KlonD90
22.01.2017
22:35:34
ну запись в файл тоже но на ноде синхронно можно вполне спокойно писать в файлик на смерть процесса

Vladimir
22.01.2017
22:35:35
единственное что поможет - это полная идеспотетность обработки
точнее, это назвыется crash-only

KlonD90
22.01.2017
22:38:40
ну это про гарантированное выполнение. а как гарантировать один раз. файловые логи + опрос на выполнение и малая значимость самой задачи. типа первый опрос я возьму эту задачу + второй опрос я сделал эту задачу с таймаутом
что-то типа 2хфазного коммита

Vladimir
22.01.2017
22:39:03
гарантировать исполнение строго один раз невозможно
это доказанный факт

KlonD90
22.01.2017
22:39:19
но мы всегда можем повысить шанс до реального мира
чтобы это почти всегда было 1 раз

Vladimir
22.01.2017
22:39:38
вот как раз crash-only этот шанс сильно портит

KlonD90
22.01.2017
22:39:42
слава богу мир не такой уж сложный и мы можем как-то догворится
но у меня не стояло конечно задачи ровно 1 раз отправить. а скорее гарантии нужны были
но вообще никогда не додумывал задачу отправки только 1 раз

Vladimir
22.01.2017
22:41:02
ну так и не надо

Google

Vladimir
22.01.2017
22:41:10
потому что это невозоможно

KlonD90
22.01.2017
22:42:16
ну почему в зависимости от задачи можно повысить шансы. типа как записи wal
если взял задачу то потом записать ее в wal. а потом поставить в вале время таймаута
и если ты сдох то проснуться и читать задачу сначала из вала если она не истекла

Vladimir
22.01.2017
22:43:20
ну и что это даст? ты мог ее уже выполнить перед крэшем

KlonD90
22.01.2017
22:44:06
ну сразу по готовности записать ее в свой диск заапендить запись и тогда конечно есть промежуток времени для смерти но он довольно мал

Admin
ERROR: S client not available

KlonD90
22.01.2017
22:44:36
ну или если резульатт этой задачи и есть запись на диск

Vladimir
22.01.2017
22:44:39
ну это не важно, мал он или велик
он есть

KlonD90
22.01.2017
22:46:02
ну тогда на конкретной бизнес логике можно заложить такие проверки чтобы не делать это 2 раза. наприммер сразу это сделать 2 раза но заложить это в протокол

Vladimir
22.01.2017
22:47:19
да не
ничего не поможет
в этом прелесть

Julia
22.01.2017
22:58:29
...

Vint
22.01.2017
22:58:30
В общем, всё сводится к тому, что подписка на сигналы в веб-приложениях на ноде имеет смысл: прибить сервер, закрыть соединения с хранилищами, остановить процесс.
Но это больше не для крешей, а для рестарта, как правильно Владимир сказал.

Kelin
22.01.2017
23:01:13

Julia
22.01.2017
23:02:38
Лул
А на чем написан бэкэнд покемонов??

KlonD90
22.01.2017
23:05:54
на Go очевидно же

Google

KlonD90
22.01.2017
23:06:22
поэтому Pokemon Go. Были еще Pokemon Node.JS но сильно тормозили и не взлетели (

Kelin
22.01.2017
23:08:32

Славик
22.01.2017
23:09:17
неправдоподобная история

Kelin
22.01.2017
23:09:31
а вообще я похапист, решивший попробовать ноду
надеюсь, камнями не закидаете

Славик
22.01.2017
23:09:46
особенно в том месте, что на node.js сильно тормозили

KlonD90
22.01.2017
23:10:46

Славик
22.01.2017
23:11:26
ой ну это уже совсем сказки
чтобы у фронтендеров что-то умерло

KlonD90
22.01.2017
23:14:25
так и было. нинтендо как раз в этот момент дропнули часть акции

Глеб
22.01.2017
23:59:58
Хостят на Google Cloud, если не ошибаюсь.

Umid
23.01.2017
06:02:53
Как такое сделать?
https://toster.ru/q/390200

Сергей
23.01.2017
07:30:13
И просто перетаскивать вкладку к краю окна