Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / websockets + rest / 25 сообщений из 31, страница 1 из 2
07.10.2017, 01:44
    #39532575
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
такая тема, мопед не мой, не надо критиковать решение )) можно просто сказать что так не делается. но... в общем задача.
есть некий вебсервис. есть некий фронтовый клиент. по ресту клиент дергает сервера и достает какие-то объекты или наборы объектов по краду. тут всё просто и обыденно.

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

как это сделать? надо как то сказать фронту что надо передёрнуть гет что-нибудь там сущность.
как сказать фронту что надо дергать? выбрано решение - сигнализировать по вебсокету. что такая то сущность обновлена.
сказано-сделано -- обновились сведения шлем по вебсокету всем клиентам что они обновились, а клиенты решают - передергивать им по ресту дату или нет.

и всё бы ничего, но возникает ряд вопросов - насколько данный подход верен? может лучше по вебсокету вообще тогда уж ВСЁ отдавать? или отдавать только обновленные поля? (но тут много эвристики). или вообще всё не так?

в описанном виде выше оно работает. тут две проблемы - по-хорошему надо сделать механизм чтоб бэк всегда слал что-то фронту когда обновляется любой набор данных. это проблема один. как ее решить - тут в принципе всё ясно. и тут выходит другая проблема - допустим у меня сотня юзеров сидит с сотней клиентов. и тут у меня случайно так обновилось что-то циклически 100 раз (ну скажем, десять сущностей по 10 раз), далее у меня на фронт сотне юзеров улетает каждому по 100 сокетмесаджей.. или 10 000 меседжей выплёвывает краткосрочно мой бэк.
и если гипотетически у ста юзеров открыты окошки показывающие те самые сущности назад на бэк возвращается запросы в количестве от 100 и до 10 000 единовременно.
бэк сам себя убил.

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

и вторая как то трекать на бэке на слое отсылки сокетсообщений на предмет какие юзеры какие сокетсообщения ожидают (типа у меня открыто окно А и поэтому мне не надо получать сокетмеседж об обновлении таблицы Б). но это выглядит как-то черезчур уж сложно, хоть и интересно )) и мне кажется тут должен быть какой то простой вариант. люди же как то пишут интерактивные приложения? или там вообще весь обмен идет по сокетам, а-ля графкьюэль, без всяких этих ваших старомодных рестов?
...
Рейтинг: 0 / 0
07.10.2017, 08:55
    #39532602
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTтакая тема, мопед не мой, не надо критиковать решение )) можно просто сказать что так не делается. но... в общем задача.
есть некий вебсервис. есть некий фронтовый клиент. по ресту клиент дергает сервера и достает какие-то объекты или наборы объектов по краду. тут всё просто и обыденно.

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

как это сделать? надо как то сказать фронту что надо передёрнуть гет что-нибудь там сущность.
как сказать фронту что надо дергать? выбрано решение - сигнализировать по вебсокету. что такая то сущность обновлена.
сказано-сделано -- обновились сведения шлем по вебсокету всем клиентам что они обновились, а клиенты решают - передергивать им по ресту дату или нет.

и всё бы ничего, но возникает ряд вопросов - насколько данный подход верен? может лучше по вебсокету вообще тогда уж ВСЁ отдавать? или отдавать только обновленные поля? (но тут много эвристики). или вообще всё не так?

в описанном виде выше оно работает. тут две проблемы - по-хорошему надо сделать механизм чтоб бэк всегда слал что-то фронту когда обновляется любой набор данных. это проблема один. как ее решить - тут в принципе всё ясно. и тут выходит другая проблема - допустим у меня сотня юзеров сидит с сотней клиентов. и тут у меня случайно так обновилось что-то циклически 100 раз (ну скажем, десять сущностей по 10 раз), далее у меня на фронт сотне юзеров улетает каждому по 100 сокетмесаджей.. или 10 000 меседжей выплёвывает краткосрочно мой бэк.
и если гипотетически у ста юзеров открыты окошки показывающие те самые сущности назад на бэк возвращается запросы в количестве от 100 и до 10 000 единовременно.
бэк сам себя убил.

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

и вторая как то трекать на бэке на слое отсылки сокетсообщений на предмет какие юзеры какие сокетсообщения ожидают (типа у меня открыто окно А и поэтому мне не надо получать сокетмеседж об обновлении таблицы Б). но это выглядит как-то черезчур уж сложно, хоть и интересно )) и мне кажется тут должен быть какой то простой вариант. люди же как то пишут интерактивные приложения? или там вообще весь обмен идет по сокетам, а-ля графкьюэль, без всяких этих ваших старомодных рестов?
если у тебя реализованы websocket то правильнее сразу по ним и передавать изменения.
...
Рейтинг: 0 / 0
07.10.2017, 09:52
    #39532607
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaT,
Rest это нет длинного соединения и тебя не помнят.
WS это всё наоборот.
Как это вы объедините?
...
Рейтинг: 0 / 0
07.10.2017, 09:58
    #39532608
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTдопустим у меня сотня юзеров сидит с сотней клиентов. и
У клиента таймер и галка: Получать обновления раз в n минут или сек.
Ни разу на компе своём не видел галки? Жжёшь.
...
Рейтинг: 0 / 0
07.10.2017, 10:15
    #39532613
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
Какой галки? Речь о вебприложении
...
Рейтинг: 0 / 0
07.10.2017, 12:42
    #39532641
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTКакой галки? Речь о вебприложении
Счас грань веб и не веб стирается.
Ты её сам стираешь вводя сообщения от сайта клиенту.
...
Рейтинг: 0 / 0
07.10.2017, 12:47
    #39532643
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
ну задача то тривиальна. в мире миллиарды сервисов на ресте. и в принципе, ничего особого нет в желании сделать интерактивное обновление. или там механизмы иные?
...
Рейтинг: 0 / 0
07.10.2017, 12:55
    #39532650
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
вариант отказываться от реста - к сожалению, вообще не вариант.
...
Рейтинг: 0 / 0
07.10.2017, 13:00
    #39532655
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaT,

Да, вполне нормальное решение. Нотификации по WS, отдача по REST. Остальные оптимизации уже зависят от предметной области. Либо кэш воткнуть. Либо очередь с задержкой, чтобы массовые обновления не вызывали кучу нотификаций и т.п.
...
Рейтинг: 0 / 0
07.10.2017, 14:01
    #39532679
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTвариант отказываться от реста - к сожалению, вообще не вариант.
Значит ws или таймер только для обратного сообщения-флажка. Так?
После флажка самому забирать.
...
Рейтинг: 0 / 0
07.10.2017, 14:03
    #39532680
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTмиллиарды сервисов на ресте. и в пр
Дак они лезут сами в клиент?
...
Рейтинг: 0 / 0
07.10.2017, 20:17
    #39532774
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
не совсем понял что вы имеете ввиду.
...
Рейтинг: 0 / 0
07.10.2017, 20:44
    #39532782
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTне совсем понял что вы имеете ввиду.
Я имел ввиду, что миллиарды сервисов, они обычные и не такие как ты захотел. Зачем ты их упомянул я не понял.
...
Рейтинг: 0 / 0
07.10.2017, 21:50
    #39532803
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaT,
зачем дергать по рест, когда можно сразу передать по websocket?
...
Рейтинг: 0 / 0
07.10.2017, 22:55
    #39532823
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
ты предлагаешь переписать всё приложение с реста на вебсокет и графQL?
...
Рейтинг: 0 / 0
07.10.2017, 22:56
    #39532824
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
Petro123andreykaTне совсем понял что вы имеете ввиду.
Я имел ввиду, что миллиарды сервисов, они обычные и не такие как ты захотел. Зачем ты их упомянул я не понял.
сорри может не так выразился. имею ввиду что есть много сервисов с динамическим обновлением данных на вьюшках. вот и задался вопросом как это реализовано
...
Рейтинг: 0 / 0
07.10.2017, 23:04
    #39532825
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
вадя, или ты предлагаешь кусочек передать по ресту, следом мне в приложении выстроить параллельный слой, куда клиент будет регаться по вебсокету говоря что он по ресту дернул какой-нибудь ресурс и типа "подписывается" на слушание этого ресурса и кусочки обновлений мне слать ему по вебсокету а клиент потом эти кусочки будет собирать в одно целое и показывать юзеру?

нееее. спсииибо.
...
Рейтинг: 0 / 0
08.10.2017, 00:38
    #39532842
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTможет не так выразился. имею ввиду что есть много сервисов с динамическим обновлением данных на вьюшках.
Я не врубаюсь. Если их много, дак и приводи пример.
...
Рейтинг: 0 / 0
08.10.2017, 09:07
    #39532868
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaTвадя, или ты предлагаешь кусочек передать по ресту, следом мне в приложении выстроить параллельный слой, куда клиент будет регаться по вебсокету говоря что он по ресту дернул какой-нибудь ресурс и типа "подписывается" на слушание этого ресурса и кусочки обновлений мне слать ему по вебсокету а клиент потом эти кусочки будет собирать в одно целое и показывать юзеру?

нееее. спсииибо.
ну где-то так, только как ни крути у тебя получится так. потому что это будет самое простое, хотя это и грозит переписыванием кода...
а какие проблемы проблемы на клиенте собрать и вставить? и что за клиент? браузер? тогда всё просто.
...
Рейтинг: 0 / 0
08.10.2017, 09:09
    #39532869
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
andreykaT,
самое трудное ты уже сделал - внедрил websocket. остальное уже намного проще
...
Рейтинг: 0 / 0
08.10.2017, 13:07
    #39532898
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
вадячто это будет самое простое, хотя это и грозит переписыванием кода..
вадя,
учись компромиссам))
...
Рейтинг: 0 / 0
08.10.2017, 13:58
    #39532915
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
Petro123вадячто это будет самое простое, хотя это и грозит переписыванием кода..
вадя,
учись компромиссам))
я не против компромиссов, просто мне кажется, что тс придет к ws, но мне интересно к чему тс придет на самом деле.
...
Рейтинг: 0 / 0
08.10.2017, 14:18
    #39532923
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
вадяя не против компромиссов, просто мне кажется, что тс придет к ws
))
"я не против компромиссов, но он придёт всё равно к моему варианту" (с - вадя)
...
Рейтинг: 0 / 0
08.10.2017, 17:59
    #39532988
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
Petro123andreykaTможет не так выразился. имею ввиду что есть много сервисов с динамическим обновлением данных на вьюшках.
Я не врубаюсь. Если их много, дак и приводи пример.
например, есть много форумных движков где ты когда сидишь на форуме там ответы онлайн появляются снизу прирастают )) но там я не разгребал как они это в деталях сделали. я гооврил с нашим фронтовиком он говорит могу получить сигнал от бэка что есть обновы, в бэкграунде браузера по ресту дернуть ресурс, а потом отрисовать дэльту.
еще я видел такое в сервисах онлайн бронирований, когда на лету у тебя в таблицах данные менялись. это о не корпоративных системах речь.

зы. да. клиент - это браузер.
зы2. да, система она не совсем кровавый энтерпрайз, но достаточно навороченный кейс-менеджмент.
...
Рейтинг: 0 / 0
08.10.2017, 18:01
    #39532989
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
websockets + rest
вадяandreykaT,
самое трудное ты уже сделал - внедрил websocket. остальное у
же намного проще

нет, это самое простое. то, что ты говоришь - это по-сути отказываться от рест контроллеров и переходить на транспорт по вебсокету со всеми вытекающими. я с тобой согласен, что это бы решило задачу радикально. но это не вариант и никто мне не позволит это делать.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / websockets + rest / 25 сообщений из 31, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]