|
центр уведомлений
|
|||
---|---|---|---|
#18+
Здравствуйте. есть БД, есть N пользователей, работающих в БД. Задача: написать на java центр уведомлений пользователей о событиях в БД. Как я понимаю, мне нужно реализовать сервер и клиент, так чтобы сервер был всегда подключен к БД (желательно в один стабильный коннект), а клиенты были бы подключены к серверной части приложения, и получали уведомления только когда им есть что вычитать (callback?), не нагружая при этом сервер. Пожалуйста подскажите, есть ли подобные фреймворки, чтобы не сильно углубляться клиент-серверное взаимодействие и взять готовый шаблон? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 13:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Есть ряд продуктов, например, debezium, которые фиксируют события в БД (инсерты, апдейты, делеты), используя различные приемы. В частности, обрабатывая журналы транзакций, бинлог и т.д. Все обнаруженные события debezium рассылает в кафку. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 14:33 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Вас интересует техническое событие insert или бизнес событие "клиент взял кредит"? Первое будет не очень правильной хотелкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:20 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Сделайте так: - приложение1 обычное CRUD приложение - приложение2 мониторит бд на события и отправляет по мылу сообщения. Мониторить можно логи сервера чтобы его не нагружать. В результате при нагрузке вы всегда найдете что начинает тормозить из за каллбэков событий - прил1, прил2 или сама бд Подходит паттерн? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:29 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Например Oracle умеет уведомление слать при изменении указанных объектов. Т.ч. ничего мониторить не нужно Мониторить логи - ну удачи... на мой взгляд это работа не на один человеко-год. Или нужно покупать/брать готовые продукты ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:49 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, наверное не совсем четко объяснил задачу. Извините, давайте еще раз попробую. речь не про CRUD или update/insert/delete. есть старая БД, со своим десктоп-клиентом времен динозавров. в нем очень нехватает api для пушей пользователей, когда они запускают хранимки какие-нибудь. При этом они запускают все это по RPC с ожиданием, хотя асинхронно запускать хранимки тоже можно. Но при таком запуске встает вопрос - как уведомить пользователя о том, что его процедура завершилась? Так родилась идея написать на javaFX скромный центр уведомления, который будет поверх окна клиента оповещать его об ошибке/успехе (ну фактически прокидывать текст ошибки/успех из хранимки в пуш (про окна вопросов нет). Для того, чтобы сделать все вышеописанное, мне видится, что нужно сделать: -Приложение 1, которое будет держать коннект в БД и смотреть в очередь/табличку на предмет наличия невычитанных пушей для конкретного клиентского места. При их наличии раздавать Приложению 2 месседжи. -Приложение 2, которое будет непосредственно общаться с Приложением 1, получать от него сообщение, и красиво выводить. я подчеркну мысль, что хотелось бы не просто клиента написать, который напрямую с клиентского рабочего места будет делать коннект к БД (потому что пользователей БД может быть 500+, и нагружать базу не хотелось бы даже), а именно клиент-серверное приложение. и как я понимаю, тут следует использовать callback'и, чтобы Приложение 2 не заваливало Приложением 1 запросами на наличие сообщений для них. Так вот мой вопрос в том - есть ли удобный фреймворк/шаблон/паттерн для создания Приложения 1 и 2 так, чтобы все это не с нуля изучать? уверен, что идея не революционная. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 15:53 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Логи можно и руками делать. Человеческие))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:00 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, У меня вопрос - как вы планируете узнать что ХП завершилась и как она завершилась, если она была запущена не вами? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:03 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Тут даже десктоп в вопросе был? Не веб проект?))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:06 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Garrick, напишу пакет на БД, через который можно будет в конце вызова ХП вызвать процедуру а-ля push2User ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:06 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Перевод синхронного десктоп на асинхронную работу это переписать тонну кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:09 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
мне кажется вы меня не правильно услышали. Задача в том, чтобы написать API для пуша, и постепенно применять его в работе, а не перевести все хранимки в асинхрон. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:12 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Garrick, напишу пакет на БД, через который можно будет в конце вызова ХП вызвать процедуру а-ля push2User т.е. вы готовы переделать все ХП? Тогда если исключить e-mail рассылку, будет очень удобно использовать JMS. ХП по окончании работы шлёт сообщение в очередь, клиенты JMS подписываются на нужные сообщения и получают их по мере появления. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:13 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
господа, мы углубляемся в бессмысленную полемику. я написал вопрос в изыскательных целях. подскажите по сути - есть ли фреймворки для организации описанного взаимодействия между Приложением 2 и Приложением 1? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:15 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, А это что? автор. в нем очень нехватает api для пушей пользователей, когда они запускают хранимки какие-нибудь. При этом они запускают все это по RPC с ожиданием, хотя асинхронно запускать хранимки тоже можно. Подробнее As is to be Пример плохого сейчас. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:15 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Вы ничего не описали. Но вот вам таблетка - Apache camel ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:17 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Garrick, Если у него длинный коннект, то все хранимки под своим юзверям запуск. Фиг знает что у него ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:18 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, as is запустил отчет , который выгружает в эксель какую-то инфу минут 10-15. и пользователь либо идет покурить, либо поднимает второй экземпляр клиента к БД для параллельной работы в другом окне. to be пишу обертку пакета в БД на вызов того же отчета в job. В конце обертки, после вызова процедуры отчета вызываю собственный push API, через который пользователю приходит алерт, что отчет готов. При старте обертки, пользователь ставит задание на выполнение очета в джоб и модальное окно закрывается, таким образом не блокируя его рабочее место. Он может работать дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:20 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio 1. СУБД В Oracle пакет DBMS_PIPE IMHO. Или DBMS_AQ Без указания СУБД - обсуждение в вакууме. 2. Если про HTTP, то опять таки. Обычное HTTP соединение. На сервере в Stream пишешь, на клиенте из stream читаешь. В чем проблема? Да даже на сокетах - аналогично ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:22 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, To be Создай поток и внутри коннект. Вот там и запускай ХП. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:23 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Он может работать дальше. Так? Коммит через 10 мин в конце хранимки? Клиентский или северный? Не удалит СЛУЧАЙНО запись пока ХП работает? Которая один ко многим товар цепляет к накладной? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:28 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, 1. Oracle проблема пайп в оракле в том, что они могут быть утеряны. для mission critical систем в какой-нибудь отчетный период потерять алерт - это не очень решение, мягко говоря. AQ целевой вариант. Но вы отвечаете на вопросы, которые я не задавал. опыт работы и с пайпами и с очередями у меня есть. Мне хочется понять есть ли готовые решения для общения между клиентским приложением, и приложением подключенным к серверу. Я понимаю, что можно на коленке написать на сокетах или на http. Но когда это потащу в прод, мне зададут резонные вопросы про http s , либо про гибкую отказоустойчивость на сокетах и не гибкую конфигурацию адресов для подключения к БД и Приложению, которое держит с ним коннект. Не говоря уже о всяких прокси, которых мне бы даже касаться не хотелось. т.е. в идеале я бы хотел взять готовый клиент-сервер экзампл, в котором уже зашиты возможности по работе с сертами, настройкой прокси, jdbc, пул коннектов и т.п, и просто написать на серверную часть логику для вычитки сообщений из очереди (AQ/Таблица/Pipe), а на клиентское приложение навесить получение сообщения и javafx с 3мя видами окон. и все ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:32 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Вы ищете ответ на вопрос, который я не задавал. отправку пуша можно написать в автономной транзакции. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:33 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Готовое решение это запуск ХП не в потоке ГУИ! Всё ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:34 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Пуш не нужен. Ваш кэп. Конец работы потока вместо него. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:35 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, ГУИ написан в 1996 году, и исходников у меня нет. если бы было все так просто, я бы даже думать над этим не стал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:35 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
"пуш" вообще термин веб проектов. А не вашего. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:36 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
можно все-таки советы по теме? какие технологии можно использовать для Приложения 1 и Приложения 2? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:42 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio PetroNotC Sharp, ГУИ написан в 1996 году, и исходников у меня нет. если бы было все так просто, я бы даже думать над этим не стал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:42 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfioЗадача: написать на java центр уведомлений пользователей о событиях в БД. Я думаю что на 80% это будет зависеть от возможностей самой DBMS. Умеет ли она реплицировать события во внешние системы? Есть-ли коробочные парсеры ее логов транзакций? Можно ли построить реплики на уровне application-server? Это было-бы эффективнее. Еще эффективность будет зависеть от компромиссов. Как быстро ты хочешь получать уведомления? Рантайм? Сию-же секунду? Или можно минутку подождать или часик? Эти все вопросы идут вне технических. Но они тоже важны. По фреймворкам здесь не скажу. И мне кажется что это не важно. У тебя важна - интеграция с БД. Протокол. Скорость. И гарантии отсутсвия потерь событий. А Java фреймворк здесь вторичен. Бери хоть Spring хоть Guice. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:50 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio можно все-таки советы по теме? какие технологии можно использовать для Приложения 1 и Приложения 2? Если не сломаешь коммиты и транзакции то все делай в бд. Сначала там. Тебе же подменить хранимку надо. Я бы не. Денег на нову,ю систему не дают. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 16:53 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Hello world можно написать одной строчкой, а можно 100500 с использованием Spring, Hibernate, Cloud и всего прочего. Есть ощущение, что Вы хотите именно второго ))) Но ответ то очевидный - берите любой фреймворк, делайте в нем что хотите, в конце, перед последним return, просто добавите строчку System.out.println( "Hello world" ); - и задача будет решена в полном соответствие с Вашими желаниями. Хотите Web - берите любой фреймворк для Web. Хотите мессенгинг - берите любой вреймворк для отсылки сообщений и делайте через него и так далее и так далее ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:00 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
ТС, у вас куча ограничений и условий. Например, что делать если подменили хранимку А, о она вызывается хранимкой Б и т.д. Вы ищите либы и паттерны. Это идиотизм. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:04 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, И тема звучит не центр уведомлений, а хакнуть клиент сервер в асинхронный режим. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:05 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Зачем хакать? Нормальные СУБД какие-то средства для ассинхронной работы предлагают. Поскольку автор будет делать новое приложение "поверх"/"сбоку" старого GUI - проблем опять таки нет. У нас примерно так же сделаны уведомления для Oracle OeBS модуль для диспетчера. Когда создается заявка, в СУБД дополнительно кидается сообщение через DBMS_AQ, Java приложение запущенное в треи всплывает, показывает простейшее окно со списком новых заявок и пилюкает динамиком - диспетчер посреди ночи просыпается, трет с просоня глаза и начинает разруливать пришедшую заявку уже через стандартный интерфейс OeBS. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:34 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Ну например, клиентский коммит Код: java 1. 2. 3. 4. 5. 6.
И как тут? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 17:59 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Если только добавить пуш или логи, то проблем нет. Но он хочет не ждать 10 мин синхронного кода друг за другом. А продолжать работать вернув немедленно управление в клиент. Понятно что куча ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:09 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharpтут не любят взлома (нет исходников) Если не сломаешь коммиты и транзакции то все делай в бд. Сначала там. Тебе же подменить хранимку надо. Я бы не. Денег на нову,ю систему не дают. Вы про взлом вообще откуда чего взяли? я ни слова не говорил про взлом. я говорил про всплывающее уведомление в центре уведомлений Windows, поверх GUI клиента БД. Мне кажется, я так и не был понят верно. Давайте на псевдокоде: Хранимая процедура: print_excel() is begin generate_xls_report(...); end; добавление алерта в очередь уведомлений: push_alert_to_user() is begin put_message_to_user(); - тут мы предполагаем что кладем сообщение в очередь AQ/Буфферную таблицу/Pipe end; то, что я хочу в итоге: begin create_job(' print_excel(); push_alert_to_user(); '); - т.е. создаем джоб, который выполнит хранимку без участия пользовательской сессии end; параллельно с этим будет работать изначально описанное мной Приложение 1, которое будет мониторить эту AQ/Pipe/Таблицу, и в случае обнаружения новых записей, вычитывать, и отдавать в Приложение 2. никаких подмен хранимок тут нет совершенно. Это будет новая хранимка, внутри которой будет вызываться старая. И это будет альтернатива существующей, не более того. и уж тем более никакого взлома. я про возраст гуи сказал к тому, что у меня нет возможности переделать его так, чтобы передавать вызов из главного треда в дочерний, а не к тому, что его надо хакать. Повторюсь, мой вопрос - как организовать взаимодействие между Приложением 1 и Приложением 2? как сделать все остальное мне известно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:41 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid KudryavtsevУ нас примерно так же сделаны уведомления для Oracle OeBS модуль для диспетчера. Когда создается заявка, в СУБД дополнительно кидается сообщение через DBMS_AQ, Java приложение запущенное в треи всплывает, показывает простейшее окно со списком новых заявок и пилюкает динамиком - диспетчер посреди ночи просыпается, трет с просоня глаза и начинает разруливать пришедшую заявку уже через стандартный интерфейс OeBS. вот именно это мне и нужно. поделитесь опытом, как построены клиент и сервер? и может быть исходники не секретны? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:51 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, ПОДМЕНА пакета это взлом. Как вам не доходит? Дак есть ПОДМЕНА или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:54 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio никаких подмен хранимок тут нет совершенно. Это будет новая хранимка, внутри которой будет вызываться старая. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 18:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, у меня такое впечатление складывается, что вы пакеты в БД никогда не писали, либо не видели как работают клиентские ГУИ. Смотрите, есть кнопка "Печатать отчет Ексель". По кнопке вызывается хранимка с ожиданием. я создаю свою новую хранимку, в которой джоб будет вызывать первую хранимку, и называю кнопку "Печать отчета Ексель - новая". Где тут подмена? Если в глазах пользователя, то да, это подмена. но я смогу ему разницу объяснить. однако никаких хаков я тут не вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:01 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio generate_xls_report(...); generateXLS не идет предварительно хп с подготовкой данных 10мин? ... То есть куча ограничений. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:02 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp wolfio generate_xls_report(...); generateXLS не идет предварительно хп с подготовкой данных 10мин? ... То есть куча ограничений. конечно идет. так в этом и смысл, что эта подготовка отойдет в сессию джоба, и не будет держать сессию пользователя. И про ваш пример. То что я хочу должно в итоге будет выглядеть так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:06 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Я написал код КЛИЕНТА))))). Вы его править не можете. Или вы новый клиент пишите? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:08 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Коммит есть клиентский и есть серверный. Я говорил именно клиентский для роллбэка НА КЛИЕНТЕ. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:10 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
У вас классика клиен-сервер 90х годов. С длинными транзакциями по 15мин. Логины вероятно от субд. Уверены? Ломайте! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:14 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, мне разговор уходит не туда. Если хотите подискутировать, мой телеграмм https://t.me/Dmwolfy ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 19:27 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio поделитесь опытом, как построены клиент и сервер? и может быть исходники не секретны? иходники врят ли чем помогут, но в общем-то все очевидно на клиенте в легаси системе: запустили в отдельном процессе наш код для трея в коде для трея: зарегились как трей в операционной системе (не помню какая Java либа используется) создали соединение с сервером m1: ждем прихода сообщения от DBMS_AQ когда сообщение пришло - показываем окошко по закрытию окошка, goto m1 на сервере: DBMS_AQ.положит_сообщение_в_очередь() всякие сложности типа создания Java Bean для OeBS и Oracle Forms опускаю ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 20:11 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio PetroNotC Sharp, мне разговор уходит не туда. Если хотите подискутировать, мой телеграмм https://t.me/Dmwolfy Какие вам нужны либы чтобы обернуть хранимку? DBMS_AQ вам написали. Что еще нужно? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 20:24 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, т.е. у вас все же прямой коннект к бд. меня именно это и смущаетт, я хотел все завязать на другое java приложение чтобы минимизировать коннекты. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 20:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Leonid Kudryavtsev, т.е. у вас все же прямой коннект к бд. меня именно это и смущаетт, я хотел все завязать на другое java приложение чтобы минимизировать коннекты. - зачем минимизировать коннекты? - хотите другое - делайте другое - хотите без DBMS_AQ - пишите в табличку события а приложения их выбирает периодически ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:02 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Leonid Kudryavtsev, т.е. у вас все же прямой коннект к бд. меня именно это и смущаетт, я хотел все завязать на другое java приложение чтобы минимизировать коннекты. Термин "минимизировать коннекты" вообще не понятно. Какие коннекты, зачем их минимизировать, ради чего. Если хочется использовать HTTP-транспорт между клиентом и сервером приложения, ну еще 200-300 строк на Java для сервера приложения. 1. Обработчик HTTP соединения 1.1. Создал свою очередь ConcurrentLinkedList 1.2. Зарегистрировался в HashMap (активный) коннект 1.3. В цикле смотреть на свою очередь ConcurrentLinkedList и по наличию отсылать информацию клиенту (вместо ConcurrentLinkedList можно просто синхронный Queue, разница по производительности будет не сильно большая, ConcurrentLinkedList имеет смысл только если будет NIO HTTP). 1. Отдельный поток (или несколько), выгребания очередей DBMS_AQ из базы 1.1. В цикле взяли сообщение из DBMS_AQ 1.2. Определили кому его надо отсылать по HashMap 1.3. Записали в ConcurrentLinkedList для конкретного клиента Можно взять какую нибудь готовую очередь сообщений (Раббит или еще что), прочитать 100500 страниц документации, неделю настраивать брид/gateway между Раббитом и DBMS_AQ, и через месяц получить то же самое, что и свой велосипед из 200-300 строк. Но если легаси приложение и так в базу лезет по Net8, то смысла избавляться от Net8 для отдельного модуля эксплуатируемого в рамках этого же приложения - нет никакого. Кроме усложнения общей архитектуры, увеличение кол-ва ошибок и удорожания эксплуатации. IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2021, 21:39 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Термин "минимизировать коннекты" вообще не понятно. Какие коннекты, зачем их минимизировать, ради чего. IMHO Если этой софтине лет 15-20, то тогда было модным привязывать лицензии к количеству коннектов к базе. Может оно как-то контролирует это. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 10:59 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Garrick, Это да. Но если автор сказал что исходников именно клиента нету, то инфа про коннекты как то глупо звучит с его стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 11:41 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Garrick Если это Oracle (а есть такое подозрение), то лицензии привязываются к Named User (пользователям). Сколько коннектов от одного _реального_ (homo sapiens) пользователя, то лицензиям пофиг. Если коннекты в значении нагрузки на сервер СУБД, то в Oracle это проще решит через shared sessions. При этом старый софт можно оставить в dedicated режиме, а новый пустить через shared. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 11:58 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Опять таки, непонятно что вообще хотел автор wolfio есть БД, есть N пользователей, работающих в БД. Задача: написать на java центр уведомлений пользователей о событиях в БД. Как я понимаю, мне нужно реализовать сервер и клиент, ok. нужно так нужно, никто не против wolfio так чтобы сервер был всегда подключен к БД (желательно в один стабильный коннект), а клиенты были бы подключены к серверной части приложения, и получали уведомления только когда им есть что вычитать (callback?), не нагружая при этом сервер. Все что угодно: сокеты, постоянно открытое http соединение, любые средства доставки сообщений и 100500 прочих wolfio Пожалуйста подскажите, есть ли подобные фреймворки, чтобы не сильно углубляться клиент-серверное взаимодействие и взять готовый шаблон? А вот тут уже совершенно не понятно. 1. Если транспорт HTTP, то я бы взял https://hc.apache.org/ (поскольку его знаю) и example от него 2. Если сокеты - то любой example из гугля 3. Если хочется навомодного и солидного, то любой транспорт сообщений. Например (сам не использовал) https://www.rabbitmq.com/ Только IMHO это пушкой по воробьям 4. ну и 100500 других средств Значение фраз "готовый шаблон" и ""минимизировать коннекты" мне вообще не понятно. Почему передача данных через сокет или постоянно открытое HTTP-соединение должно "нагружать сервер" так же не очень понятно. Да, могут быть проблемы при очень большой нагрузки. Если тысячи (>3-5 тыс.) сокет или HTTP соединений, то на сервере можно получить проблемы с диспетчером потоков в ОС, но это решается переходом на NIO. Для сотен соединений, "старый" socket работает лучше (10-20% быстрее, меньше загружает проц). AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 16:40 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Совсем забыли про email (SMTP/POP3). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 16:41 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton Совсем забыли про email (SMTP/POP3). Ну почему. Третий ответ топика. Только автору неинтересен свой вопрос. Он случайно зашёл. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 16:59 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
А да. Не заметил. Мне кстати интересно глубже исследовать вопрос почему технологически email вдруг стал старым и неудобным протоколом для мессенджинга. Почему все чаще доверяют мессенджерам и соцсетям получение (даже!) бизнес информации. Может быть - удобство ношения мессенджера в смартфоне? Но я-бы хотел этот вопрос изучить глубже. Пятничным топиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:02 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Все просто. Мыло без обратной связи. Могут не ответить. Или проигнорировать "запрос о прочтении". В сети это труднее. Более живое общение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:14 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Готовится закон о мессенджерах как гос канал официальных запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:15 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Все просто. Мыло без обратной связи. Могут не ответить. Или проигнорировать "запрос о прочтении". В сети это труднее. Более живое общение. Мда. Согласен. Но email канал способен функционировать в условиях когда твой клиент отключен. Тоесть тебе накидали писем. Он лежат где-то в твоём почтовике. Ты зашел в онлайн. Почитал. У мессенджеров (IMHO) есть какое-то техническое ограничение на недоступность. Ну у Viber по крайней мере было такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:23 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Не знаю про недоступность. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:26 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, а ты каким пользуешся. Телега? Viber? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:29 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp, а ты каким пользуешся. Телега? Viber? в телеге можно в "реальном времени" наблюдать, т.е. не надо обновлять как в почтовике. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:41 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Ушел с вайбера в ватсап. Проиграл вайбер конкуренту битву. Все в ватсапе сидят вот и ушел. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:49 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Ушел с вайбера в ватсап. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 17:55 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
вадя, Я не знаю ни одного бота нужного народу. Увы. Ничё не могу про них сказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:01 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Но вот, например, есть гос компания электросетей подмосковья. Время официального ответа компании по мылу составляет пол месяца. Это крындец в наши дни. Но такие пока законы общения по мылу ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:04 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Но вот, например, есть гос компания электросетей подмосковья. Время официального ответа компании по мылу составляет пол месяца. Это крындец в наши дни. Но такие пока законы общения по мылу ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:07 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Почти ни одного бота в Viber не видел. В телеграм - тыщи. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:12 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
вадя, Ускоряет. Там минуту промолчишь, жалобы идут. Ну и закон будет. Сколько секунд молчать))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:13 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Телеграм - гламур. Имхо. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:14 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Чисто субъективно ... телеграм быстрее работает. Я могу ошибаться но это такое мое человеческое восприятие. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:18 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
пока разберёшься в его api ...... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:28 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Я-ж не собираюсь его ботов программировать. Мы просто сравниваем с email протоколами. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:45 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Из преимуществ. Копия. Скрытая копия. Много аттачментов. Почтовые домены - это обычно реальные домены в dns. Всегда видет отправитель в виде sender@server. Почтовый клиет обычно обладает развитой архитектурой фильтров и классификаторов. Можно много лет конфигурировать дерево входящих. Задавать правила бэкапа и очистки. Почтовый сервер исторически проектировался исходя из медленного трафика. И все таки гарантировал доставку письма. Хоть и через сутки. Как поведет себя мессенджер в условиях техногенной катастрофы - я не знаю. В воображаемом сценарии войны или частичного отключения сетевой инфраструктуры большинство мессенджеров скорее всего будут молча крутить анимацию. И ничего не примут и не отправят. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 18:50 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
SMTP/POP - г... ))) UUCP / UUPC и FTN - Rules. Делал сеть для связи с филиалами на FTN. Все само соединяется, пересылает, разрывает соединение. Лапота! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 19:12 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, все это так, но все зависит от цели и потребности. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 19:16 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton В воображаемом сценарии войны ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 19:21 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton В воображаемом сценарии войны Слышал как Netflix тестирует свои разработки на failover? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2021, 22:03 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Не слышал). При войне веба не будет) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 06:44 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev UUCP / UUPC и FTN - Rules. Нет, с UUPC небезызвестного AChe я тоже работал. Fossil-драйвер под винду, опять-таки, "доставляет". UUCP и, как я понимаю, FTN - крайне ограничены в возможностях построения маршрутов. Точка-точка - да, неплохо. А вот передача через несколько промежуточных узлов - "Ад и Израиль". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 08:48 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp При войне веба не будет) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 08:50 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Я намекал на то что всемирной паутины http не будет. Будет реинкарнация - паутина во взводе, роте и танке (совместно с дроном) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 11:00 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Кстати читал, что часть уже действующих реакторов банально утеряна)))). При транспортировке вертолёт уронил в Охотское море РИТЭГ типа ИЭУ-1, который принадлежал Министерству обороны СССР. По состоянию на 2013 поисковые работы, с перерывами, продолжаются[28].. ))))) Из википедии ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 11:06 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Радиоизотопные "реакторы" это совсем не реакторы. Скорее - "атомные батарейки". Или более точно - термоэлементы. Низкие КПД и мощность при полном отсутствии движущихся частей, большом сроке службы и невозможности регулировать мощность. Запитать нагрузку с небольшим и постоянным энергопотреблением - можно, всё остальное - в пролёте. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 13:59 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я намекал на то что всемирной паутины http не будет В зоне военных действий даже интернет-провайдеры работают. Войны между Израилем и Ливаном, как пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 14:02 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Basil A. Sidorov FTN - крайне ограничены в возможностях построения маршрутов. Точка-точка - да, неплохо. А вот передача через несколько промежуточных узлов - "Ад и Израиль". Возможно в чем-то ограничен, но проблем с "передача через несколько промежуточных узлов" вряд ли есть. Все же FIDO была сеть общемирового уровня. Там скорее топология звезда, с интерконнектами только на верхних уровнях. Маршруты между подсетями должны прописываться (точно не уверен). Маршруты внутри подсети (поинт-нода) да, не прописываются, но в TCP/IP IMHO так же (только маской можно задавать размер подсети, а в FTN фиксированный). AFAIK p.s. сам транспортный уровень возможно пересылал точка-точка, но потом пришедшие файлы разбирала программа, которая и определяла, куда что пересылать. Насколько помню ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 14:07 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Я говорил о войне между мировыми игроками и не понарошку. Израиль не пример. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 14:19 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Не слышал). При войне веба не будет) Я вот размышлял об возможных сценариях отключения РФ от Интернета и пришел к выводу что предполагаемому противнику это невыгодно. Он потеряет все каналы либерального влияния. А вот из интересного. https проткол всё таки централизован. Например что это за контора "DST Root CA X3" ? Она прогарантировала сертификат для sql.ru через посредников. А что будет если отзовёт? А что будет если отзовёт сертификаты для сотен тысяч доменов? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 14:39 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Либералы это понятно. Все стараются не переходить грани и красную черту). Про https то я тоже возмущен когда заставляют палками внедрять его. У самого простой сайт есть. Гугл также насильно внедряет двухфакторную. В общем нет свободы. И никогда не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 15:01 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Да это перебор канешна. Если 15 лет назад всем вообще было пофиг на TLS/SSL в вебе. Ну смотрел ты порно-картинки и кому какая разница с безопасного хранилища ты их тащил или с опасного. А сегодня на уровне самих браузеров попытка подключиться к http будет каждый раз вызывать алёрт в браузере. Скоро свой сайт локально хрен подебажишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 15:46 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Возможно в чем-то ограничен, но проблем с "передача через несколько промежуточных узлов" вряд ли есть. В FTN были какие-то схемы резервных маршрутов (например, небезывестный dz делал что-то такое), но ничего похожего на "всякое могучее" из IP-сетей там не было. Проблема именно в явности топологии UUCP/FTN. IP-сети это и автономные системы (AS) с избыточными связями между этими AS и "внутренняя" маршрутиризация (тоже с избыточностью). Даже Ethernet предоставляет возможность построения "остовного дерева" из сети "с петлями". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 16:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Я говорил о войне между мировыми игроками и не понарошку Тотального уничтожения (кабельной) инфраструктуры не будет - она будет нужна для всех воюющих сторон. Фрагментация, (D)DOS, атака на уязвимости и закладки - вот этого будет хоть отбавляй. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 17:00 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Basil A. Sidorov, Не. Конфликт будет ядерный. Для этого полно желающих стоят со спичками. И никакой веб, gprs, glonass, доставка пиццы и станция МИР работать не будут. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 18:54 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Будут работать декадно-шаговые и координатные АТС. И будут работать ламповые аналоговые радиостанции. Короче военное оборудование. А всем смартфонам придет капец. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 19:13 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton Будут работать декадно-шаговые и координатные АТС. И будут работать ламповые аналоговые радиостанции. Короче военное оборудование. 1. Нет, не будут. Они давно уже на свалке и поржавели 2. Шанс есть, но малюсенький-малюсенький, т.к., боюсь, их уже разучились по нормальному производить. А то что производят, то делается на станках увезенных в 1945-1946 году из братской немецкой республики, узок круг специалистов, которые на них способны работать и знают куда и как нужно кувалдой стучать. IMHO пруф. Это перепечатка странички из ливеджорнал, но первоисточник не нашел Военные батарейки не имеющие аналогов. https://newizv.ru/news/tech/05-10-2018/i-smeh-i-greh-iz-chego-sostoit-importozameschennaya-batareya-dlya-voennyh ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 19:23 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 1. Нет, не будут. Они давно уже на свалке и поржавели Не стоит судить по Москве. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 19:25 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Я не в москве Если и не на свалке, то поржавели в любом случае. Какого они года выпуска "не в Москве" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 20:08 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Конфликт будет ядерный. P.S. Есть, правда, мемуары об использовании "химических" ракет в первый день операции Блау. Возможно, что были ещё какие-то эпизоды. Как, например, против партизан Аджимушкая. Но применять химическое оружие массово не рискнули даже нацисты. Американцы (и ядерное и химическое) - применили, но сугубо локально и без риска ответного удара. А в условиях "тотальной достижимости" не окупятся даже "триста процентов". ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 20:41 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton Будут работать декадно-шаговые и координатные АТС. будут барышни - дёшево и ласково ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 21:15 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton И будут работать ламповые аналоговые радиостанции. Короче военное оборудование. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.09.2021, 21:26 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
И еще есть такой интересный вопрос. TCP/IP обычно не использует всю пропускную ширину канала. Тоесть логическая скорость передачи информации будет медленее чем заявленная скорость канала. Это связано с алгоритмом обработки потерь в TCP и расширяющимся окном. Вот мне интересно были ли какие-то исследования в этой части алгоритма для QUIC. Какие еще существуют алгоритмы? И можно ли прогнозировать параметры соединения или как-то более умно их подстравивать в процессе. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 12:40 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton TCP/IP обычно не использует всю пропускную ширину канала. Тоесть логическая скорость передачи информации будет медленее чем заявленная скорость канала. Это связано с алгоритмом обработки потерь в TCP и расширяющимся окном. TCP/IP умеет много разных гитик. И на собственном уровне и на уровне сетевого транспорта. А ещё всё это великолепие может быть "завернуто" в MPLS и "ходить совсем другим образом". P.S. Да, короткие пары вопрос-ответ "не ускоряются", но это уже чисто прикладной вопрос. Его даже в рамках HTTP/1.1 решить можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 13:02 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Если это Oracle (а есть такое подозрение), то лицензии привязываются к Named User (пользователям). Сколько коннектов от одного _реального_ (homo sapiens) пользователя, то лицензиям пофиг. Если коннекты в значении нагрузки на сервер СУБД, то в Oracle это проще решит через shared sessions. При этом старый софт можно оставить в dedicated режиме, а новый пустить через shared. IMHO & AFAIK Коннекты я хотел бы уменьшить по двум причинам: 1. для уменьшения потенциальной нагрузки (в моем конкретном случае она не будет высокой, но приложение, о котором я говорю может быть кем-то переиспользовано) 2. для удобства сопровождения. Давайте не будем углубляться в вопрос "Зачем". На счет dedicated/shared сессий - я почти уверен, что это должно было быть положено в архитектуру системы изначально, т.к. в прикладе накручен мощный аудит. Так что вариант этот мне не очень подходит. Leonid Kudryavtsev Все что угодно: сокеты, постоянно открытое http соединение, любые средства доставки сообщений и 100500 прочих уточняющие вопросы: 1. что будет работать надежнее и менее капризно? 2. что будет работать быстрее? 3. что из этого не является морально устаревшей (или устаревающей) технологией? Leonid Kudryavtsev А вот тут уже совершенно не понятно. 1. Если транспорт HTTP, то я бы взял https://hc.apache.org/ (поскольку его знаю) и example от него 2. Если сокеты - то любой example из гугля 3. Если хочется навомодного и солидного, то любой транспорт сообщений. Например (сам не использовал) https://www.rabbitmq.com/ Только IMHO это пушкой по воробьям 4. ну и 100500 других средств Значение фраз "готовый шаблон" и ""минимизировать коннекты" мне вообще не понятно. Почему передача данных через сокет или постоянно открытое HTTP-соединение должно "нагружать сервер" так же не очень понятно. Да, могут быть проблемы при очень большой нагрузки. Если тысячи (>3-5 тыс.) сокет или HTTP соединений, то на сервере можно получить проблемы с диспетчером потоков в ОС, но это решается переходом на NIO. Для сотен соединений, "старый" socket работает лучше (10-20% быстрее, меньше загружает проц). 1. я думал над http, но из-за множества не определился с вариантом. Делать на элементарном сервлете корп.решение мне кажется как-то не правильно. Из того, что я гуглил, мне приглянулись Netty и GRPC. но не знаю какие там могут быть там подводные камни. 2. не являюсь большим экспертом в сетевом взаимодействии. Если решусь делать - это будет мой первый опыт. По поводу сокетов я прочитал, что чаще всего это блокирующее взаимодействие. Сильно углубляться в тонкости реализации серверной архитектуры, чтобы сделать его неблокирующим для ответа множеству клиентов мне не хочется. 3. "Новомодное" - не совсем подходящее слово, наверное. Я бы лучше сказал "современное", так чтобы детские болячки в этом решении уже были полностью излечены. Про раббитМКу - почему из пушки по воробьям? можете развернуто? я думал над кафкой, но как я понял, она не гарантирует доставку, если подписчик отвалится. 4. из 5 страниц предложенных вариантов я увидел только 5: rabbitmq, hc.apache, sockets, и +2 моих - Netty и GRPC. можно конкретно по ним получить экспертное мнение? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 13:44 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Вау, автор проснулся! Ты прямо как журналист пришел к программистам. wolfio Leonid Kudryavtsevлюбые средства доставки сообщений и 100500 прочих уточняющие вопросы: 1. что будет работать надежнее и менее капризно? 2. что будет работать быстрее? 3. что из этого не является морально устаревшей (или устаревающей) технологией? Ему говорят - любая технология из 100500. Он спрашивает - разверните подробнее про любую )) Наверно забыл про правило - пишите на том на чем умеете. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 14:41 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Делать на элементарном сервлете корп.решение мне кажется как-то не правильно. С какого бодуна вы намекаете на решения корпоративные и решения больших корпораций? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 14:46 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Вау, автор проснулся! Ты прямо как журналист пришел к программистам. извини, пожалуйста, если расстраиваю тебя. Просто нет времени на болтовню. PetroNotC Sharp у вас тема Центр сообщений по изменениям в бд. С какого бодуна вы намекаете на решения корпоративные и решения больших корпораций? это решение можно было бы использовать в других организациях, использующих данную систему. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 14:50 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp wolfio Делать на элементарном сервлете корп.решение мне кажется как-то не правильно. С какого бодуна вы намекаете на решения корпоративные и решения больших корпораций? Мне вообще не нравится постановка - типа "изменения в БД". Это что получается. обновил я свойства 100500 клиентов банка (в связи с обновлением версии) и мессенжинговая система захлебнулась в events. Еще по каждому клиенту 1000 атрибутов. Теперь пока те сто тыщ не зайдут - новые стоят в очереди. Нет я конечно нарисовал гипотетический сценарий но если говорим об "изменениях БД" то надо наверное говорить о КАКИХ изменениях. Может имелось в виду что кто-то формочку открыл. Поправил что-то. И при чем тут БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 14:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio, Вам нужно решить как будет выглядеть эти сообщения - подсказки в системном трее - бегущая строка в окне основной программы (статус бар) авторТак родилась идея написать на javaFX скромный центр уведомления, который будет поверх окна клиента оповещать его об ошибке/успехе То есть прогаА висит на хранимке 10мин, а ты в приложенииБ ПОВЕРХ ОКНА приложенияА которое висит собрался выводить? Операционка не даст. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 14:57 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Он вообще не врубается в то как устроены программы. Как ори взаимодействуют и их причинно следственные связи. Увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:00 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
maytonМне вообще не нравится постановка - типа "изменения в БД". Это что получается. обновил я свойства 100500 клиентов банка (в связи с обновлением версии) и мессенжинговая система захлебнулась в events. Еще по каждому клиенту 1000 атрибутов. Теперь пока те сто тыщ не зайдут - новые стоят в очереди. господа, ну очнитесь уже, 3 раза говорил что речь не об апдейтах. речь о создании апи, которое будет использовано разработчиком при создании новых хранимок в будущем. Апи будет расширять возможности системы, не больше и не меньше. Никто не собирается втыкать его в каждую хранимку и тем более в триггеры на CRUD PetroNotC Sharp wolfio, Вам нужно решить как будет выглядеть эти сообщения - подсказки в системном трее - бегущая строка в окне основной программы (статус бар) авторТак родилась идея написать на javaFX скромный центр уведомления, который будет поверх окна клиента оповещать его об ошибке/успехе То есть прогаА висит на хранимке 10мин, а ты в приложенииБ ПОВЕРХ ОКНА приложенияА которое висит собрался выводить? Операционка не даст. я хотел сделать подсказки в системном трее, о чем написал еще где-то вначале. бегущая строка невозможно из-за отсутствия исходников, о чем я уже лично вам сказал 2 раза. И я не собирался ломать клиент изначально ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:03 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio извини, пожалуйста, если расстраиваю тебя. Просто нет времени на болтовню. Даже веб или десктоп предложил рассмотреть)))) LOL ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:03 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio я хотел сделать подсказки в системном трее, о чем написал еще где-то вначале. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:05 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Про раббитМКу - почему из пушки по воробьям? можете развернуто? Задача больно простая. Моя оценка _работоспособного_ кода для "сервера", от 200-300 строк, т.е. первая версия - человеко день с базовыми знаниями Java backend и просмотра пары примеров (даже чтения документации на данном этапе не нужно). Что бы настроить раббит, нужно хотя бы прочитать документацию по нему, думаю страниц под 300-500, после чего настроить интеграцию шины сообщений между раббит и DMSB_AQ. Т.е. скорее всего нужно будет компилить какой нибудь "модуль интеграции" в те же самые 200-300 строк, но написанных другим человеком, т.ч. разбираться в чужом коде + читать документацию (если она вообще есть). Потом настраивать раббит. Потом тестировать, работает ли он. Потом писать прием/отсылку сообщений в раббит и так далее. Для меня, для получения первой работоспособной версии, потребовалось бы не меньше недели. _Только_стандартным_ кодом все равно не обойдется, т.ч. какие-то велосипеды придется прикручивать/дописывать (та же интеграция), плюс будет задействован чужой код (сложно разбираться с проблемами) и т.д и т.п. Трудоемкость и сложность системы возрастают, а результат тот же. Никакого профита (кроме новомодных слов в резюме разработчика) не видно. wolfio я думал над кафкой Что кафка, что раббит, что другая MQ - думаю однофиолетово wolfio она не гарантирует доставку Требование про "гарантировать доставку" при Вашем описание проблемы, звучит очень странно. Ну потеряется одно _информационное_ сообщение из тысячи, job отработает, но пользователь об этом вовремя не узнает. В чем потеря для бизнеса, если пользователь узнает об этом не сразу, а через десяток минут? Например в нашей задаче, это явно не критично. Т.к. с большей вероятностью: пользователь забудет открутить колонки на максимум; сильно заснет (не услышит колонок); проснется, автоматом нажмет на Ok и заснет снова; и так далее и тому подобное.... Ну отреагирует диспетчер на заявку не через 5 минут, а через полчаса. Возможно это и плохо, но врят ли критично. Будет _реально_ критическая авария, нормальный адекватный сотрудник, кроме заявки через IT систему еще по телефону позвонит и не только (не столько) диспетчеру, сколько своему непосредственному руководителю (если совсем серъезно, то руководитель позвонит своему, тот еще выше, генеральный позвонит губернатору и так далее). Если же кто-то настолько полагается на IT-систему в _критических_ ситуациях, то боюсь, в _реально_ _критических_ ситуациях такую отмазку ни губернатор, ни президент, ни следственный комитет не примет. Т.ч. что там кафка гарантирует, что не гарантирует - для бизнеса однофиолетово. IMHO 1. Сам работал на заводе, когда нужный отчет не печатался и из-за этого задерживалась отправка железнодорожного состава. Все происходило примерно в 20:30-23:00. Починить мог админ, который в это время ехал домой в метро ))) На заводе сидел я и менеджер проекта. Ничего не делали (см. первое предложение в абзаце). Раз в пятнадцать минут: генеральный директор завода звонил генеральному директор нашей IT-консалтинговой конторы (600 человек сотрудников), тот звонил менеджеру проекта, менеджер проекта отвечал "да, программисты работают, примерно через час починим". Я, в качестве программиста, сидел вместе с менеджером на заводе. Через час-полтора админ доехал до дома, вошел в Интернет, нажал на нужную кнопку. Менеджер позвонил нашему гену "работа выполнена успешно", тот генеральному директору завода, тот своим сотрудника, которым был нужен отчет... Через час генеральный позвонил менеджеру проекта, всех похвалили за успешно преодоленные трудности и проявленный трудовой интузиазм в не рабочее время. В общем, все молодцы. 2. Когда через полгода халтурил на данный завод, то на мой вопрос "наверное мою работу нужно согласовать с директором по ИТ, т.к. будут нужны пароли от серверов", мне ответили "ничего согласовывать не надо; напиши на бумажке, что тебе нужно - все будет". В прошлый раз, когда отчет отказался печататься, сотрудники цеха поступили просто: отчет не печатается - составы отгружать нельзя - место на складе в цеху не резиновое - подошли к рубильнику, повернули его и просто остановили завод (стоимостью в миллиард долларов) через полчаса, с Канарских островов, позвонил господин Мордашев с вопросом "почему завод не работает?". Ему пригласили к телефону IT-директора. Т.ч. в момент моего устройства на халтуру, проблем с IT-директором не было ))), не даст пароль - сотрудники цеха могут еще раз рубильник выключить, он еще раз господину Мордашеву по телефону попытается объяснить, почему завод опять не работает ))) и почему господин Мордашев вместо отдыха на Канарских островах на своей яхте, вынужден производственные вопросы разруливать ))) Т.ч. что там кафка гарантирует, что не гарантирует - для бизнеса однофиолетово. wolfio 4. из 5 страниц предложенных вариантов я увидел только 5: rabbitmq, hc.apache, sockets, и +2 моих - Netty и GRPC. можно конкретно по ним получить экспертное мнение? 1) rabbitmq / кафка / что-то еще - модно, современно, технологично, но по первому взгляду на описанние задачи - слишком переусложненно. Кроме собственно разработки системы, ее еще потом нужно поддерживать / дорабатывать. Т.е. rabbitmq / кафку / что-то_еще должен не только текущей программист знать / выучить (ему то наверное даже по приколу будет, он на данной задаче свои скилы повысит), но и людям, которые дальше будут эту систему поддерживать (следующее поколение программистов, системный администратор и так далее), а это уже прямые затраты $$$ организации при сопровождении системы. 2) hc.apache - самое просто и легковестное 3, 4) Netty и GRPC - как я понимаю, это более-менее полноценные web / servlet сервер / контейнер. Можно взять и его, но по сравнению с hc.apache, опять таки, более тяжеловестно. Если знаете какие-то технологии типа spring.boot (я ее _не_ знаю) и считаете, что на данной технологии Вам сделать проще, чем на чистой Java + hc.apache - ради бога. Если вместе с ней "впридачу" идет Netty / GRPC - то возражений нет. Но тащить полноценный web / servlet сервер туда, где нужно просто слушать и отвечать на одно-два URI, _немного_ тяжеловестно. (с netty не работал, знаю только tomcat/Weblogic; про grpc даже не слышал) 5) Соккеты - самое-самое легковестное и не требует никаких сторонних библиотек, больше ни одного плюса по сравнению с http, одни минусы. p.s. например наш код-оповещалки общается с java-bean внутри легаси приложения (OeBS) именно через сокеты. Т.к. чем меньше стороннего кода (библиотек) в легаси запихано, тем лучше. Х.з. как OeBS себя поведет и что ему в сторонних библиотеках не понравится. Т.ч. только чистый Java, никаких (минимум) библиотек. Но если таких жестких ограничений нет, то HTTP конечно лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:12 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Делать на элементарном сервлете Мы сузим поиск решения или нет? Если систрей внизу экрана то причем вообще веб и http и сервлеты? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:12 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Ну отреагирует диспетчер на заявку не через 5 минут, а через полчаса. ПриложениеА при нажатии на печать виснет на 10минут. Вот он хочет еще ДОПОЛНИТЕЛЬНО информировать когда Отвиснет)))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:15 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
P.S. Еще один расказ из жизни. Наш генеральный очень сильно в течении 2-3 лет хотел "шину сообщений". Перед программистами была поставлена задача 1. сделать шину сообщений 2. придумать куда ее впихнуть (что бы при этом все еще продолжало работать) 3. реализовать Программисты данную задачу провалили. Т.ч. впихнуть шину куда нибудь и можно было бы, но: 1. все и так уже работает без всяких шин 2. всюду, куда пытались бы впихнуть, выглядило бы это ну просто жутко уродливо (плюс см. п.1) 3. не было гарантий, что если перейти на шину, то соответствующий функционал продолжить работать без сбоев. Даже несмотря на то, что данная шина 100500 раз "гарантирует доставку сообщений" В общем - программисты не справились. Почему генеральный директор ставил такую задачу и был готов ее оплачивать в виде ЗП: 1. "Шина сообщений" это "модно и молодежно". Даже генеральные деректора такие слова слышали, хотя плохо представляют, что же это такое - можно продать 2. Преднозначена для интеграции - значит можно попытаться впихнуть нашу шину и в наши, и в чужие проекты 3. 3.1. Если мы разработаем такую шину, все остальные, даже закупив очень много бутылок по 0.5 литров - фиг разберутся ))) 3.2. Т.к. ее будем запихивать куда надо и не надо - без нее все гарантированно накроется медным тазом 3.3. В результате - фиг наш обойдешь в каких нибудь последующих тендерах. Президенты меняются, губернаторы меняются, а хорошо написанная шина - может жить и давать зарплату сотрудникам вечно. Если же такой аргументации нет, то раббит, шины и прочее - из пушки по воробьям IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:26 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio это решение можно было бы использовать в других организациях, использующих данную систему. Посоветуйся с бизнес аналитиком. - прогуА в которой все работают и которая тормозит ты не меняешь - о том что ожидание закончилось известит MessageBox прогиА когда она закончит - то есть у тебя только дубляж и нет Нового функционала. - твои задумки сделать асинхронно прогуА остались только разговорами Логично? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:27 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Про шины / ESB хороший пример)). Кстати, читал рекомендации для шин - клеим 7-10 систем - 10-50 - 50 и более Вот три вида шин для трех организаций) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:35 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, спасибо за адекватность. Ветку можно закрывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 15:45 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Что кафка, что раббит, что другая MQ - думаю однофиолетово Это интересная тема. Но мне кажется что Kafka в этом смысле - что-то вроде конструктора хранилища распределенных месседжей. Тоесть она - более продвинута в пропускной способности. Упора на протокол нет. Собственно Кафке вообще плевать на промышленные протоколы очередей. У нее - что-то своё. Функция партишенинга может быть своя. А RabbitMQ проектировался просто исходя из других требований. Во главе угла стоял протокол и способность инстанса переживать тяжелые сетевые ситуации. Благо... Erlang на это заточен. И я думаю что в тесте на хранение большого числа подписок и непринятых сообщений кролик проиграет кафке. Это мои субъективные восприятия обоих мессенджеров. Хотя... можно подять отдельный топик. Хотя-бы по вопросам перформанса. Где-то уже такая тема мелькала. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 16:16 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Он имел ввиду что все это для автора топика фиолетово. Плюсы и минусы конечно есть. Но для этого надо делать систему а не быть тут мимопроходящим. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 16:19 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Большое число подписок автору как раз не нужно. Юзверей 500штук и события висят 10мин ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 16:22 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Он имел ввиду что все это для автора топика фиолетово. Плюсы и минусы конечно есть. Но для этого надо делать систему а не быть тут мимопроходящим. Топик живет своей жизнью. Что мы будем спрашивать у автора разрешение на то что нам обсуждать? Только модератор решает когда что закрывать. А если кто-то хочет задать вопрос и получить ответ - так это не к нам. Это в toster или stackover. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 16:43 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Ну вот смотри. Ты кликнул что rabbit лучше протокол. Я кликну что кафка это хайпово. Нельзя же однозначно сказать что первое лучше второго) Абстрактно не обсуждают архитектуру (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 16:54 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
В данных условиях автору вообще - по барабану что брать. Пусть берет ApacheActive MQ. Бесплатен. И ставится легко. Все протоколы поддерживает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 16:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Не потянет. Не видит разницы между сервлетом, сервисом Оси и системами на сообщениях. Удачи ему. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:08 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
О чем поговорить в пятницу? Андрейка поднимал темы про Kafka. Но у него не было ни логов ни сорцов. Можно взять синтетическую задачу. Например - генерацию простых чисел и просто пересылку из по схеме peer-2-peer. И реализовать ее для Kafka. Потом посмотреть на перформанс. Я пока использовал только IBM/MQ, ApacheMQ в своих продуктовых задачах. Ну еще был Amazon SQS. Но с этим тяжко экспериментировать. Нужен аккаунт в клауде. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:14 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton ... Можно взять синтетическую задачу. Например - генерацию простых чисел и просто пересылку из по схеме peer-2-peer..... Потом посмотреть на перформанс. ... Apache.HC 0 up to 50-100 Mb / sec via 1Gb ethernet. потом взять кафку и посмотреть на перформанс ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:21 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev mayton ... Можно взять синтетическую задачу. Например - генерацию простых чисел и просто пересылку из по схеме peer-2-peer..... Потом посмотреть на перформанс. ... Apache.HC 0 up to 50-100 Mb / sec via 1Gb ethernet. потом взять кафку и посмотреть на перформанс ))) Я согласен. Только кейс для Apache.HC - с тебя. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:23 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Ну тогда с тебя генерация случайных чисел с такой скоростью ))) Apache.HC просто транспорт поверх сокетов, 50-100 Mb сек в реальных приложениях видел. Вся потеря времени исключительно преобразовании кодовых страниц (Unicode-UTF8/1251) и двойной-тройной буфферизации поверх NIO. p.s. это только в документации/рекламе про нативное выделение памяти написано, что оно дает возможность (десять раз ха), избежать множественного копирование из памяти-в-память при общении с системой ввода-вывода. На практике, все обстоит с точностью до наоборот. Скорость одиночного доступа к нативной памяти, ниже самого нижайшего плинтуса. Если не скопировать в нормальную heap-область, все вообще будет стоять колом. Т.ч. при NIO количество копирований память-память ни только не уменьшается, а наоборот становится до неприличия ненормальным. (дебажил Apache.HC, правда сильно предыдущих версий, но не думаю, что там что-то поменялось) p.p.s. Если под пересылкой ты имеешь в виду round-trip, отсылку и ответ, то тогда, скорее всего max 800-1000 сообщений в сек. на ethernet ))) Где-то 200-300 на ethernet 10 Mb, 400-500 на ethernet 100 Mb, 800-1000 на 1G и 1000-1200 на 10 Gb. ))) Нужно быстрее - покупайте нормальное оборудование, а не ethernet ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:32 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Ну тогда с тебя генерация случайных чисел с такой скоростью ))) Я подготовлю их заранее. Я - хитрый. Неважно что будем гонять по сети. Хоть UUIDs. Главное чтоб был контент. И была какая-то возможность валидации. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:42 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Не ну как неважно. Сообщение короткое и сообщение вместе с ворд документом это разные скорости. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:44 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Если под пересылкой ты имеешь в виду round-trip, отсылку и ответ, то тогда, скорее всего max 800-1000 сообщений в сек. на ethernet ))) Где-то 200-300 на ethernet 10 Mb, 400-500 на ethernet 100 Mb, 800-1000 на 1G и 1000-1200 на 10 Gb. ))) Нужно быстрее - покупайте нормальное оборудование, а не ethernet ))) Я себе вижу тестирование так. Мы поднимаем конфигурацию 3х приложений. Producer (java), Consumer(java), Broker(*) Всё на localhost с сетевым интерфейсом локальной петли. Ее характеристики можно обсудить. Эта конфигурация поднимется даже на ноутбуке. Для разных брокеров (Kafka/Apache*) мы договариваемся о смысле параметров перформанса. Например для гарантий доставки (at least once, at most once..) мы стараемся реализовать одинаковые конфигурации хотя-бы на уровне нашего понимания. Для оптимизаций типа объединения месседжей в пачки - мы тоже договариваемся о том чтобы смысл бенчмарка был примерно одинаков для разных брокеров. Сетевой прикладной протокол - нам вообще не интересен. Но можно выбирать самый быстрый с точки зрения накладных расходов. После того как наиграемся с loopback - можно поднять конфигурацию хотя-бы на 2х физически разных хостах. Но я думаю что это будет не скоро. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:51 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev это только в документации/рекламе про нативное выделение памяти написано, что оно дает возможность (десять раз ха), избежать множественного копирование из памяти-в-память при общении с системой ввода-вывода. На практике, все обстоит с точностью до наоборот. Скорость одиночного доступа к нативной памяти, ниже самого нижайшего плинтуса. Если не скопировать в нормальную heap-область, все вообще будет стоять колом. Т.ч. при NIO количество копирований память-память ни только не уменьшается, а наоборот становится до неприличия ненормальным. (дебажил Apache.HC, правда сильно предыдущих версий, но не думаю, что там что-то поменялось) Ты поднял очень интересную тему. Тему off-heap доступа которую я тоже хотел-бы обсудить отдельным топиком. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 17:54 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Не ну как неважно. Сообщение короткое и сообщение вместе с ворд документом это разные скорости. Для толстых сообщений необходимость мессенджинга - сомнительна. Их обычно бьют на две части. Одна - собственно тело сообщения - идет в NAS или любое другое хранилище. А в брокер пересылают только ссылку. Помнишь как в лихие 90-е на телефон кидали MMS-ки. Вот это оно и есть. Это SMS-ка с линком на веб. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:00 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Да. Получается средняя по госпиталю. Непонятны размеры сообщений в боевой среде. Фикция а не тесты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:10 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp mayton, Да. Получается средняя по госпиталю. Непонятны размеры сообщений в боевой среде. Фикция а не тесты. Ну у тебя есть продуктовая система с месседжами? Можешь оценить средний размер? И всякие процентили? Мы сымитируем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:16 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
У меня была система которая слала FIX-messages для торговли equities. Какой средний размер месседжа? Я не помню. Но могу синтезировать парочку и просто прикинуть на глаз размер. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:18 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Больно у Вас как-то сложно. Сообщения. Толстые, тонкие. IMHO (упрощенно) 1. Может быть поток сообщений в одну сторону: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37.... Толстое оно, тонкое - глубоко пофиг. Каждое число конечное тонкое, но все вместе - так толсто, что просто обзавидуешься 2. Может быть обмен требующий полноценных round-trip'ов - Get first number - 2 - Get next number - 3 - Get next number - 5 etc...etc.. Тут опять таки, толстое/тонкое... 10 G ethenet, Jumbo frame... и толстое уже и не настолько толстое Но latency все равно будет ниже плинтуса, дабы Ethernet и TCP/IP. Родовая травма, которая лечится только полным выпиливаением. Ну и loopback в данном случае будет совсем не показатель. Т.к. сильно зависит от OS. Т.к. "правильный" loopback (если повезет с реализацией в конретной OS), "плохой" loopback (если не повезет) и реальный ethernet - ничего общего иметь между собой не будут. IMHO & AFAIK p.s. примерное масштабирование технологии Ethernet я показал выше. С каждым поколением: Цифирька скорости увеличивается на один нолик А латенси падает (кол-во round trip в секунду растет) только где-то в два раза p.p.s. сферические тесты сети вроде под 50 000 сообщений в секунду на 1Gb Ethernet показывают. Но то сферические тесты на C. Как только что-то прикладное, то минимум нолик удаляй, а то и все два. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:25 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Ну и loopback в данном случае будет совсем не показатель. Т.к. сильно зависит от OS. Т.к. "правильный" loopback (если повезет с реализацией в конретной OS), "плохой" loopback (если не повезет) и реальный ethernet - ничего общего иметь между собой не будут. А меня устравивает loopback. Во первых - это позволяет нам оценить скорость работы брокера в чистом виде. Во вторых Василий нам где-то анонсировал zero-copy оптимизации для loopback в последних версиях JDK. Это хорошо. Мы будем это принимать в расчет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:29 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev 2. Может быть обмен требующий полноценных round-trip'ов - Get first number - 2 - Get next number - 3 - Get next number - 5 etc...etc.. Тут опять таки, толстое/тонкое... 10 G ethenet, Jumbo frame... и толстое уже и не настолько толстое Но latency все равно будет ниже плинтуса, дабы Ethernet и TCP/IP. Родовая травма, которая лечится только полным выпиливаением. Я не уверен что нам стоит обсуждать именно latency. Тот сценарий который ты нарисовал больше похож не на MQ систему а на работу обычного синхронного веб-сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:34 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
C рабитами, кафками не сталкивался Т.к. там, где реально большие нагрузки (tradingview.com) все сообщения посылали руками через HTTP и проблем не знали В текущей прикладной области enterprise: прикладных систем очень много, но организация одна. Т.ч. db-link и так же, проблем не знаем. Нафиг нам эти Ваши кафки? Был опыт работы со СМЭВ и ГИС ГМП ))) Такой себе опыт. Электронный документооборот в виде сообщений с TIFF-сканами, которые потом распечатываются на бумагу на принтере, с клавиатуры вводятся в прикладную систему (ну или еще что-то с ними делается), из прикладной системы распечатывается отчет, сканируется, TIFF-файл посылается через СМЭВ, всякие кафки и SOAP'ы. Полностью ассинхронный, импортозамещенный, электронный документооборот. (опыт многолет назад, сейчас, возможно, все не так комично) ГИС ГМП тот момент более-менее заставили использовать ГАИ, но в налогой инспекции внедрение застопорилось т.к. алгоритм генераци пеней (по сообщениям в профильных конференциях) был замечательный. если ты что-то должен и пытаешься оплатить - тебе по закону начисляют пени минимум в 1 коп если ты пытаешься оплатить эту коп. - опять пени в 1 коп. и так до бесконечности ))) наши законы, налогавая и ГИС ГМП - сила! В любом случае, сколько не плати, все равно должен останешься Налоговой это как-то не очень понравилось и они внедрение приостановили ))) Поскольку налоговая это не какая-то ГАИ, а государство-образующая структура, продавить налоговую "и так сойдет" не получилось. Внедрение приостановилось. Когда мы писали модуль для ГИС ГМП для нашего заказчика, мы сразу сказали, что фиг клиенты что-то смогут оплатить через тот банк, который к ГИС ГМП подключится ))) очень долго они будут ходить и выяснять, что же с его платежем произошло ))) и в ГИС ГМП и в нашей системе ))) Единственный банк в СПб, который на тот момент отчитался о внедрении ГИС ГМП, был АКБ "Таврический". Чуть погодя ))), как все помнят, он объявил о своем банкротстве. Если между этими двумя фактами (ГИС ГМП и банкротством) какая-то связь - то простым смертным не ведомо ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:48 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, В том то и дело что тема то интересная, но редкая)). У меня все проекты синхронные. Ну и писать асинхронку с событиями сложнее. Так что опять ждем не ленивого ТС с нормальными вопросами. Он делает а мы... направляем))) Ты нормальный трафик событий не родишь. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 18:57 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev сферические тесты сети вроде под 50 000 сообщений в секунду на 1Gb Ethernet показывают. Но то сферические тесты на C. Как только что-то прикладное, то минимум нолик удаляй, а то и все два. Это как с субд. Начинаешь вставлять - 10 записей в сек. После тюнинга и настроек - 1000000 в сек))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 19:06 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Leonid Kudryavtsev сферические тесты сети вроде под 50 000 сообщений в секунду на 1Gb Ethernet показывают. Но то сферические тесты на C. Как только что-то прикладное, то минимум нолик удаляй, а то и все два. Это как с субд. Начинаешь вставлять - 10 записей в сек. После тюнинга и настроек - 1000000 в сек))))) Вот интересно с точки зрения Kafka consumer 1 сетевое сообщение != (не равно) 1 MQ сообщению? Метод poll изначально ориентирован на пачку. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
(про producer пока не говорим) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:19 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
А вот типичный Spring/JMS receiver. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9.
Только по 1 штуке. Но здесь под капотом может быть целый список сетевых протоколов и реализаций. Может быть RabbitMQ/AMQP, или ApacheMQ/AMQP. Может там и есть оптимизации сети под пачку. Но факт. Программисту пачку не дали. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:23 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Ты нормальный трафик событий не родишь. Я-бы дорого заплатил за определение понятия "нормальный трафик". Как вариант - берется продуктовая система. И с нее снимается трафик shark-ом или tcpdump-ом. И мы берем этот трафик просто как эталон. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:26 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Так тебя и тянет на технический траспортный уровень). Пофиг что там за качегары внизу! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:30 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Какие твои предложения? Хочешь тюнить TCP? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:31 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Вот на более конкретная имплеметация консьюмера ТОЛЬКО для Apache Active MQ. Тоже интерфейс ориентирован на 1 месседж. Здесь нет цикла потому что я украл это из учебных примеров. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:42 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Специальный API для кролика https://www.rabbitmq.com/api-guide.html#consuming Тут .. пока непонятно. Но похоже тоже интерфейс хендлит 1 месседж за 1 вызов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 20:50 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
wolfio Здравствуйте. есть БД, есть N пользователей, работающих в БД. Задача: написать на java центр уведомлений пользователей о событиях в БД. Как я понимаю, мне нужно реализовать сервер и клиент, так чтобы сервер был всегда подключен к БД (желательно в один стабильный коннект), а клиенты были бы подключены к серверной части приложения, и получали уведомления только когда им есть что вычитать (callback?), не нагружая при этом сервер. Пожалуйста подскажите, есть ли подобные фреймворки, чтобы не сильно углубляться клиент-серверное взаимодействие и взять готовый шаблон? есть хибернейт ,который может по событию генерировать нужные действия ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 21:54 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton А вот типичный Spring/JMS receiver. Нафига автору вообще какие-то дополнительные JMS, если у него и так СУБД обеспечивает более-менее нормальный Queu в виде DBMS_AQ - вот что мне не понятно. Но автор топика считает, что он сделает мультиплексор соединений лучше Oracle Co. Ну... пусть делает... Хотя зачем, не очень понятно. СУБД и так предоставляет shared sessions режим работы (который к тому же совершенно спокойно работают совместно с dedicated), при котором, на кол-во соединений Oracle в целом глубоко пофиг. То, что у автора СУБД с уже существующими нагрузками на десятки тысяч соединений и они подходят к каким-то аппаратным приделам - ну не верю. А даже если и так, у Oracle уже есть написанные мултиплексоры и для таких случаев (Oracle Remote Connection Manager) AFAIK. В свое время искал в Инете интеграцию Oracle DBMS_AQ и того же раббита. Ну точно такой же велосипед. Одна сессия смотрит в Oracle, вторая пуляет сообщения в раббит. Ну и нахрена такое нужно? Вычитали сообщение из Oracle, так и пуляй сообщение прямо в свое приложение. Нахрена тут кролик? А так получится 100500 уровнивая система, где велосипед на велосипеде сидит и велосипедом погоняет. Знал бы автор кролик или другую JMS, так и вопросов бы не было. Но тянуть в продакшен неизвестный продукт, ради непонятно чего (что бы был) - сомнительная радость. IMHO. Могу ошибаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2021, 23:11 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
localhost8080, У него нет хибера. Прога прошлого тысячилетия ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 06:58 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton Какие твои предложения? Хочешь тюнить TCP? Забыть про транспорт и тюнить логику. Бизнес логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 06:59 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Да. Сделать можно на трехзвенке через апп или message server. И сделать можно в двухзвенке клиент сервер. Оба решения будут работать. Вернулись к правилу "делай на том что умеешь". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 07:03 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton Во вторых Василий нам где-то анонсировал zero-copy оптимизации для loopback в последних версиях JDK. Есть локальные сокеты в Java 16+. Работают на линуксе (ещё бы они там не работали) и на "новых" виндах (с 1809 и 2019). ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 07:12 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton Leonid Kudryavtsev 2. Может быть обмен требующий полноценных round-trip'ов - Get first number - 2 - Get next number - 3 - Get next number - 5 etc...etc.. Тут опять таки, толстое/тонкое... 10 G ethenet, Jumbo frame... и толстое уже и не настолько толстое Но latency все равно будет ниже плинтуса, дабы Ethernet и TCP/IP. Родовая травма, которая лечится только полным выпиливаением. Я не уверен что нам стоит обсуждать именно latency. Тот сценарий который ты нарисовал больше похож не на MQ систему а на работу обычного синхронного веб-сервиса. Нам нужно выбрать одно из двух .. CP — (consistency and partition tolerance) — Консистентность + устойчивость к разделению В такой системе, в результате ожидания ответа от ноды, можно получить timeout (истечение времени ожидания). Такой подход отлично подходит для систем в которых требуется соблюдение атомарности операций. Например транзакций в банке. Нельзя купить, что-то, не успев пополнив счет. AP — (availability and partition tolerance) — Доступность + устойчивость к разделению Ответы возвращают наиболее свежие данные доступные ноде, но они могут быть не самыми свежими в целом. Запись данных в распределенных системах занимает некоторое время (необходимо сделать множество копий между несколькими базами данных), поэтому данные могут появится не сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 07:50 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, У тс сейчас первый вариант. А он хочет поставить систему колом и сделать второй. Но В ОБОИХ ЕСТЬ НЕДОСТАТКИ. И недостатки надо осознать и записать в ТЗ ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 07:56 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, Ты как-то странно смешал в кучу latency и принятие решения об отсутствии сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 10:57 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Basil A. Sidorov mayton Во вторых Василий нам где-то анонсировал zero-copy оптимизации для loopback в последних версиях JDK. Есть локальные сокеты в Java 16+. Работают на линуксе (ещё бы они там не работали) и на "новых" виндах (с 1809 и 2019). Ты имел в виду unix-sockets? А ну тогда сорян. Я ошибся. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 11:05 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton PetroNotC Sharp, Ты как-то странно смешал в кучу latency и принятие решения об отсутствии сети. Ты сказал что latency не стоит обсуждать. Я вроде совсем не обсуждал выше)) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 11:05 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
mayton, Задержка, пропускная способность и доступность. Собеседование по архитектуре и проектированию систем. https://igotanoffer.com/blogs/tech/latency-throughput-availability-system-design-interview Всяко лучше чем транспорт рыть. Я это имел ввиду выше в топике. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 11:09 |
|
центр уведомлений
|
|||
---|---|---|---|
#18+
Сегодня - четверг? Можно и сегодня опубликовать четверговую тему. Я откажусь от конкретной agenda. Всё равно у нас ничего не получится. Топики идут вразнос. Поэтому тема будет Kafka/RabbitMQ и различные сценарии конфигурации . Под скорость. Под тразнакционность и гарантии. И под объем хранения подсписки. Если есть что добавить - добавляй. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2021, 11:25 |
|
|
start [/forum/topic.php?all=1&fid=59&tid=2120338]: |
0ms |
get settings: |
18ms |
get forum list: |
6ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
34ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
2722ms |
get tp. blocked users: |
1ms |
others: | 7ms |
total: | 2797ms |
0 / 0 |