Websocket server и database pool connection?

User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Websocket server и database pool connection?

Post by Sergunka »

В общем я написал вебсокет сервер и возникла следующая делема.

Вебсокет держит открытым коннекшин и база данных вроде как под него открывает коннекшин. В базе у меня ограничение 100 открытых коннекшинов.

Походу как разрешить эту фигню если я хочу побольше вебсокетов? На первый взгляд приходит только решение поставить сообщения из вебсокетов в очередь стандартная модель producers/consumers.

В общем мож кто делал?
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Websocket server и database pool connection?

Post by Boriskin »

Не очень понятно, почему каждый вебсокет должен иметь свой собственный коннекшн к базе.
Начать можно с очереди (когда все вебсокеты шарят один и тот же коннекшн к базе), когда это станет затыкаться - сделать pool из 100 коннектов к базе, и для нового вебсокета брать свободный коннекшн к базе из этого пула.
Тупизна как Энтропия. Неумолимо растет.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Websocket server и database pool connection?

Post by Sergunka »

Boriskin wrote:Не очень понятно, почему каждый вебсокет должен иметь свой собственный коннекшн к базе.
Начать можно с очереди (когда все вебсокеты шарят один и тот же коннекшн к базе), когда это станет затыкаться - сделать pool из 100 коннектов к базе, и для нового вебсокета брать свободный коннекшн к базе из этого пула.
Спасибо логика ясна.

В Java когда я открываю сервер енд поинт @ServerEndpoint походу открывает отдельный поток и коннекшин там не шарится толком. Городить огород с синхронизацией я не хочу. Просто заранее хочется подумать над решением если сделать сервер высокой нагрузки.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Boriskin
Уже с Приветом
Posts: 18906
Joined: 30 Aug 2001 09:01
Location: 3rd planet

Re: Websocket server и database pool connection?

Post by Boriskin »

А какая нагрузка понимается под высокой? 100, 1000, 10к в секунду?
Тонкая настройка и тюнинг на пределе возможностей железа/софта - тема интересная, но обычно раскладываемая по стандартным полкам: затыкается база - расширяем/меняем/фармим базу; сервак физически не выдерживает нагрузку - мильтиплицируем сервак и втыкаем перед ним load balancer и так далее.
Тупизна как Энтропия. Неумолимо растет.
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Websocket server и database pool connection?

Post by Sergunka »

Boriskin wrote:А какая нагрузка понимается под высокой? 100, 1000, 10к в секунду?
Тонкая настройка и тюнинг на пределе возможностей железа/софта - тема интересная, но обычно раскладываемая по стандартным полкам: затыкается база - расширяем/меняем/фармим базу; сервак физически не выдерживает нагрузку - мильтиплицируем сервак и втыкаем перед ним load balancer и так далее.
Я пока не решил, но если еще потащить и видиосигнал то должно интересно получится :D
"A patriot must always be ready to defend his country against his government." Edward Abbey
helg
Уже с Приветом
Posts: 4827
Joined: 15 May 2001 09:01

Re: Websocket server и database pool connection?

Post by helg »

Сервер на одного клиента должен тратить меньше своих ресурсов, чем клиент. Это один из принципов устойчивой работы сервера. Нарушение его открывает дырку для атак DoS.

Предложенное решение этот принцип не соблюдает.Соединение к базе в общем случае - это много больше ресурсов, чем http-соединение. Тут логично буферить данные для базы на сервере - и вставлять их в базу одной транзакцией по получении серии целиком.

Да, если записывать надо не структурированные данные, а BLOBы - подумайте: может Вам нужен молоток, а не микроскоп реляционная база данных?
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Websocket server и database pool connection?

Post by Sergunka »

helg wrote:Сервер на одного клиента должен тратить меньше своих ресурсов, чем клиент. Это один из принципов устойчивой работы сервера. Нарушение его открывает дырку для атак DoS.

Предложенное решение этот принцип не соблюдает.Соединение к базе в общем случае - это много больше ресурсов, чем http-соединение. Тут логично буферить данные для базы на сервере - и вставлять их в базу одной транзакцией по получении серии целиком.

Да, если записывать надо не структурированные данные, а BLOBы - подумайте: может Вам нужен молоток, а не микроскоп реляционная база данных?
Кормилец, спасибо огромное я еще за Велосираптор не расплатился. На самом деле реляционная база просто под руку попалась и для моделиврования она как бы даже получше выглядит чем та же Кассандра тем более в нашем облаке пока Кассандра не планируется. Так что Постгрес это вынужденное решение на сегодняшний день. Видео стриминг я походу если буду делать то в БЛОБ стор типо А3, но это я даже пока еще не придумал нужно ли это вообще.

Про серии там походу само ляжет если выдергивать из очереди все что в очереди есть честно деля очередь на количество консьюмеров. С учетом того что я стал большим фанатом кеша на Редисе вцелом сервак должен заработать в реальном времени очень убедительно.

Завтра буду искать библиотеки трехмерной интерполяции для моделей.

Если у кого есть ссылки под рукой для явы киньте в топик.
"A patriot must always be ready to defend his country against his government." Edward Abbey
tau
Уже с Приветом
Posts: 514
Joined: 07 Dec 2001 10:01
Location: toronto

Re: Websocket server и database pool connection?

Post by tau »

Sergunka wrote: Завтра буду искать библиотеки трехмерной интерполяции для моделей.
Помнится, когда надо было сделать примерно то же самое, у нас просто взяли готовый код с Photon server и приладили это хозяйство куда-то в облако. Ну или можно их готовой инфраструктурой пользоваться, за какую-то там копеечку.

Но вообще если разговор ведётся о трёхмерной интерполяции (что это такое конкретно?) о размещении на сервере "тяжёлых" задач, то это может влететь в серьёзную копеечку. Я бы сначала перерыл все возможности проделывать это на клиенте.
Потому что имею очень забавный опыт по поводу серьёзного рендеринга на сервере и выдачей результатов клиентам.

Return to “Вопросы и новости IT”