
Oleg
28.11.2016
03:27:57
Самый тлен и боль это взлом биржи конечно

Ariel
28.11.2016
03:27:59
Не верю сейчас в алго. Не то время.

Oleg
28.11.2016
03:28:08
Форекс в целом зол
Но не им единым

Google

Ariel
28.11.2016
03:28:22
Эт да. :)

Oleg
28.11.2016
03:28:37
Есть мнения что форекс это для отъема денег
Но это холивар

Ariel
28.11.2016
03:28:54
Знакомый на фонду ушел. Там спокойнее. Я не понимаю, слишком медленно.
Да, тему холивара поднимать не будем. Знающие знают, а остальные пусть сливают дальше:)
Пойду Я отосплюсь. Ещё раз доброй ночи.
Или утра:)

Vladislav
28.11.2016
03:33:04
Доброе утро чатик, вопросик. Хочется общую шину данных между микросервисами.
Как я себе это представляю - есть кучка микросервисов и все они подключены к одному "чатику", для каждого микросервиса определены свои типы сообщений на которые оно реагирует.
В чем профит - не надо хардкорить обращения внутри микросервисов друг к другу. На одно и то же событие(сообщение) необходим отклик нескольких микросервисов. Например на событие создания сделки в cms должен сработать микросервис создающий сделки в crm, микросервис отправляющий сделку в аналитику и микросервис который напишет сообщеньку в slack.
В какую сторону смотреть?

Семен
28.11.2016
03:34:09
Бля, я где-то тебя видел, мб на хакатоне 2гис?

Vladislav
28.11.2016
03:34:42
Да, я был там
А по теме ? ;)

Семен
28.11.2016
03:35:47
Напиши в nodejs тред

Oleg
28.11.2016
03:36:43
А где определяется что на одно событие должны быть подписаны несколько микросервисов?

Google

Oleg
28.11.2016
03:37:00
Собственно в вопросе уже часть ответа как сделать ?
В целом делается эдакий эвент-домен. Там конфиг прописывается, либо сами микросервисы обращаются к домену мол мы подписываемся на событие с таким вот именем, будет что - шли нам. Потом один из микросервисов шлет домену мол вот такое событие я сейчас совершил, вот ещё данные к нему. А домен смотрит, ага, на событие с таким именем подписаны вон те ребята, сейчас я им разошлю. А если никто не подписан - ну и ладно.
Получается слабосвязанная архитектура - очень полезный способ организации когда много всяких атомарных микросервисов.
При этом можно на горячую отключать некоторые из микросервисов и падений не будет
Может что-то затеряться, но падений не будет
А ещё круче если буфер
Мол если микросервис не ответил что получил данные - подождать и попробовать позже
Залогировав конечно что было что-то не то
Но!
Оно выживает


Vladislav
28.11.2016
03:45:41
А готовых подобных решений нет? Просто я уверен что тут можно поймать много подводных камней о которых я не подумаю. Я смотрел в сторону zero/rabbitMQ и не смог понять подходит ли мне.

Oleg
28.11.2016
03:46:22
Может быть есть
Но у меня руками
Впрочем если HTTP-протокол между микросервисами - такое пишется дня за 3, может 5, не более.
На ноде

Дмитрий
28.11.2016
03:47:23
Я бы не был так оптимистичен)
Я сейчас как раз такое пишу

Oleg
28.11.2016
03:47:33
Я бы был ?
Нода, экспресс, реквест, монга
И вперед

Google

Дмитрий
28.11.2016
03:48:01
Да неважно вообще что

Oleg
28.11.2016
03:48:05
Файла 4
Примерно

Дмитрий
28.11.2016
03:48:09
Дело не в технологии

Oleg
28.11.2016
03:48:12
Это да

Vladislav
28.11.2016
03:48:34
3-5 дней это долго ☹️️. захардкорить обращения это дело 5 секунд ?

Oleg
28.11.2016
03:48:48
Тогда лучше хардкодить

Дмитрий
28.11.2016
03:49:18
Как только у тебя начинает расти объем, разнообразие и вариативность диалогов обмена данными, твой протокол разбухнет и взорвётся

Oleg
28.11.2016
03:49:37
Сам эвент-домен правда уязвим может быть ибо централизация архитектуры выходит
А вот не должно расти то

Дмитрий
28.11.2016
03:50:04
Не то чтобы централизация
В идеальном мире, ага

Oleg
28.11.2016
03:50:57
По факту то нужно
- Имя эвента
- Данные эвента
В обратку
- Результат в булеан
- Текст ошибки если есть

Дмитрий
28.11.2016
03:51:08
Бгг

Oleg
28.11.2016
03:51:17
Ну а как иначе?
А если там легаси то сложнее да
Нужно ещё запаковывать и распаковывать

Дмитрий
28.11.2016
03:51:39
Это не то что "иначе", просто за твоим предложением бездна
У меня сейчас в районе 8 сервисов регулирующих довольно сложный и ветвистый алгоритм

Oleg
28.11.2016
03:52:03
Возможно ты в эвент домен перетащил бизнес-логику?

Google

Oleg
28.11.2016
03:52:06
Ибо тогда да
Бездна
Вполне верю
Если потоком данные, кусочками, могут быть небольшие нюансы про перенаправить

Andrey ?
28.11.2016
03:54:39
В Яндекс.Метрике через js можно кормить её utm-ками, не указывая их в ссылке, а кормя ими через js api?

Дмитрий
28.11.2016
03:55:36
Есть три параллельных процесса, один очень быстрый, десятки блоков данных за минуту, второй зависит от ввода пользователя, то есть имеет непредсказуемое время ответа, причем время ещё и ограничено
А третий процесс происходит в зависимости от результатов остальных двух и присылает ооочень большой объём данных
Так как обмен сообщениями довольно активный, везде устроен дебаунс сообщений, они накапливаются а потом отправляются пачкой

Oleg
28.11.2016
03:56:46
А почему не сразу?
Что-то проседает?

Дмитрий
28.11.2016
03:59:12
Потому что если я каждый пакет буду отдельно слать то сеть ляжет, данных достаточно много, а один процесс очень частый. А ещё от этого страдает оптимальность алгоритма, оптимальнее пачкой инициализировать одну обработку

Admin
ERROR: S client not available

Oleg
28.11.2016
03:59:42
Да, у тебя бизнес-логика сложная
Тут увы

Дмитрий
28.11.2016
03:59:48
И всё, система "сообщение — ответ" перестаёт быть такой уж простой и очевидной

Oleg
28.11.2016
03:59:55
Это уже не просто эвент-домен
Это контроллер шины полноценный

Дмитрий
28.11.2016
04:00:15
Ага
Не один даже
Я одну фишку сделал, однозначно она уже звестна но я прям доволен)
Контроллеры эти — пассивные

Google

Oleg
28.11.2016
04:01:34
И ФП
Всё понятно
?
По доброму смеюсь конечно

Дмитрий
28.11.2016
04:04:49
Они делают какие то обработки в зависимости от стейта микросервиса
Конечный автомат состояний
А микросервис в свою очередь при включении начинает активно спрашивать у ближайшего контроллера что ему делать в данном стейте. Хз как объяснить внятно, но короче ни одна из этих частей не требует другой, а при выключении связи просто ждёт
То есть как ведущиие так и ведомые модули могут варьироваться в количестве и месте расположения в любых пределах)

Oleg
28.11.2016
04:06:56
Звучит интересно
?

Дмитрий
28.11.2016
04:16:15
Ну да) Ещё микросервис-redis для оперативного обмена данными
Поверх редиса бахнул ORM
Для полного хардкора)

Oleg
28.11.2016
04:20:36
Пассивные контроллеры и всё такое
С неизменным там стейтом

Дмитрий
28.11.2016
04:22:52
?

Vladislav
28.11.2016
04:25:42
Гугл подсказал что ampq протокол именно то что я искал и там уже всё есть из коробки. Всем спасибо

Oleg
28.11.2016
04:28:21
При ограниченных ресурсах в случае пиков нагрузок можно ещё отсекать малоприоритетные эвенты
Ну и в целом приоритизация и всё такое

енот
28.11.2016
04:43:35
подскажите пожалуйста, почему NaN в функцию приходит в JS?
function picturenet(count){
console.log ("count: " + count);
}
function start() {
console.log(jpglist.length);
picturenet(jpglist.length);
}
jpglist - массив, полученый из json
console.log(jpglist.length);
это корректно отрабатывает

Oleg
28.11.2016
04:45:35
console.log(jpglist.length)
Что выводит?