|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
Не падающий сервер14.01.2015, 14:40. Показов 5161. Ответов 84
Метки нет (Все метки)
Собираюсь писать сервер, который должен выдерживать ~100 запросов в секунду
Каждый запрос будет обращаться к бд раза 3-4, писать в файл и отдавать небольшой(пару строк) ответ. Писал однажды маленький чатик по технологии comet, когда скрипт висел в памяти, пока в бд не произойдет изменение. И получалось, если больше 2 человек пользовались этим чатом, то сайт падал. Он у меня был на бесплатном хосте radyx, но меня все равно это насторожило. Прошу объяснить технологию, как написать не падающий сервер. И несколько вопросов Возможно ли хранить массив в памяти, который будет доступен каждый раз, при выполнении скрипта? Что бы уменьшить количество обращений в бд. Какие примерно нужны параметры у хостинга, под мои запросы? и сколько такой хостинг может стоить? обращаться к серверу будут только из СПб. Есть ли смысл искать хостинг, расположенный в СПб, чтобы ускорить процесс доступа?
0
|
|
| 14.01.2015, 14:40 | |
|
Ответы с готовыми решениями:
84
падающий снег Падающий снег падающий мяч |
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 15:21 [ТС] | |
|
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||||||||||||||
| 16.01.2015, 15:26 | ||||||||||||||||||||||||
|
Не по теме:
Вот весь код отвечающий за запуск приложения и веб сервер
создаём обработчики
в клиенте хоть в мобилке хотьв бразуере надо просто сделать что то вроде
Добавлено через 56 секунд ![]() Добавлено через 44 секунды Не по теме: Нужно будет статейку набростаь ан эту тему на днях)
1
|
||||||||||||||||||||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 15:59 [ТС] | |
|
Я просто не понимаю, что такое node js, как он работает, никогда не сталкивался с ним)
Буду признателен, если расскажите
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||||||||||||||||||||
| 16.01.2015, 17:08 | |||||||||||||||||||||
Сообщение было отмечено KOPOJI как решение
Решение
http://nodejs.org/ качаете, устанавливаете, создаете папку, создаете файлик package.json
код сервера для примера, с коментами, извините но нет времени ещё подробней расписывать)) это должно показать суть общую, раскинете опфайлам, создадите модельки, и прикрутите бд)) если это чат, то можно хранить в ОЗУ, бзе проблем, добавляете просто строку в бд, на случай если нужна история, а последние 20 сообщений можно и в озу хранить. server.js Кликните здесь для просмотра всего текста
chat.html Кликните здесь для просмотра всего текста
порт нужно будет проксить через какой либо сервер на адрес сайта, типа http://site/chat что бы порт был 80 для браузера, что даст большую кросплатформенность)) например нгинкс подойдёт
2
|
|||||||||||||||||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 17:20 [ТС] | |
|
DrobyshevAlex,спасибо,но я не про это)
А про то,что вообще такое node js сервер. Это джава скрипт, который интепретируется на сервере? Добавлено через 37 секунд И чат - это был просто пример)
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|||||||
| 16.01.2015, 17:31 | |||||||
|
http://ru.wikipedia.org/wiki/Node.js
что такое события, что можно отправить 1му событие или всем, что можно в любой момент подключиться к событию. а имена событий, и их внутренности обзывайте как хотите) я вам говорил что я делал нечто похожее на то что вам нужно. когда будете пистаь сервер, будет по другому код выглядеть наверное) например подключение отклчюение хендлеров я делал автоматически в зависмости от флага состояния юзера
0
|
|||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 17:45 [ТС] | |
|
И то верно)
Да читал я вики, не особо что-то понял) А верно, что socket.io можно использовать, если сервер не на nodr js. Т.е. эта библиотека просто предоставляет удобную кроссбраузерную работу из js?
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 18:08 | |
|
это библиотека написана на жс, етсь под клиента и под сервера.
но етсь под андроид и под иос сторонние, можете и сами написать свою на чём угодно. вся суть библиотек в том, что бы не писать велосипеды, а сосредоточиться на конечном продукте ![]() то есть если вам нужно не нод.жс, то вам нужно либо искать готовую серверную часть, либо писать самому. по сути это просто набок строк кода) естественно вы и на ассемблере можете серверную чатсь написать под неё ![]() Добавлено через 1 минуту Я ещё раз говорю, хорошо знаете Java? Пишите на нём Я предлагал это только потому тчо мне - под мои задачи это оказалось оптимальным решением, и я знал js что не составило труда написать на нод.жс ![]() Добавлено через 3 минуты Вот сейчас я пишу сервер под флеш игрушку, пишу не на ноде жс, потмоу что мне не нужен хттп и бразер, а флешка сама по себе с сокетами работает. В результате я сильно экономлю троафик отказавшить от жсон, хмл, хттп и прочих текстовых протоколов. А если мне нужно под хттп/вебсокеты я выбираю то что для этого задумывалось) то етсь в моем случае нод.жс. Смотрите на задачу и выбирайте инструмент. Но вот на чём я бы не стал писать так это на пхп, не потому что он плохой, а потому что у меня ассоциация пхп - простой скриптовый язык, не для создания серверных приложений, а для создания скриптов, для сайта
1
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 21:00 [ТС] | |
|
просто я подумываю сервер на яве сделать, а один из вариантов клиента на js, используя эту библиотеку ,т.е. коннектиться не на 80 порт, экономля трафик) это нормально?
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||||||
| 16.01.2015, 21:23 | ||||||||||||||||
|
Или я Вас не понимаю или Вы не до конца понимаете что делает бибилотека, и как происходит обмен данными в таких приложениях.
Конект на 80 порт не как не связан с количетсвом трафика, будь то 80, 1080, 10080 порт - это просто порт. По дефолту 80 используется для HTTP сервера. Что на каком конце висит зависит от Вас ![]() Под экономией трафика я имел ввиду то, что я не использую текстовый протокол. Простой пример, можно взять жсон и договорится что пакет ыбудут такими
Для примера, в жсон вызов метода с авторизацией примерно так может выглядеть
это не считая остального мусора, В бинарном же протоколе он будет выглядеть так,
Тут ни как номер порта не виляет ![]() так вот, как вы собираетесь уменьшить данные сменив номер порта я не понимаю. судя по тому что на клиенте вы хотите использовать сокет.ио вы не будите использовать свой протокол обмена данными, вам нужно обмениваться данными через вебсокеты, и реализовывать на стороне сервера правильный протокол, который используется в сокет.ио. можно написать сервер и делать два вида ответов, в зависимости от того, веб сокеты или мобильное приложение подключилось. Но я советую поизучать что такое протоколы, как происходит обмен данных, прежде чем начинать пистаь сервер, что бы потом всё не переделывать. Добавлено через 2 минуты ну да. там в жсон в данном примере сессион кей можно н считать, он будет слаться каждый раз только при лонг пулинге или аяксе, по веб сокетам 1 раз
0
|
||||||||||||||||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
||
| 16.01.2015, 21:24 [ТС] | ||
|
0
|
||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 21:28 | |
|
вы хотите сокет ио только в браузере использовать? или и в мобильнике?
0
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 21:41 [ТС] | |
|
в браузере, конечно
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||
| 16.01.2015, 21:44 | ||
|
Я не принуждаю к использованию сокет.ио в мобильнике, просто почему такое решение категоричное?
0
|
||
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|
| 16.01.2015, 22:01 [ТС] | |
|
почему 2 то?)
в мобильнике те же сокеты, что и в браузере
0
|
|
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 22:10 | |
|
Не понял, что 2?
И что значит те же сокеты что и в браузере? В браузере с JS либо вообще нельзя использовать сокеты, либо веб сокеты, либо ещё что то, но не простые полноценные сокеты. А вот в мобильнике как раз полноценные сокеты. Так если вы считаете что в мобильнике те же сокеты что и в браузере, какой тогда вообще смысл пистаь что то свое под мобильник, если в браузере вы будите использовать сокет.ио? Ну вот отсюда и вопрос, почему вы не хотите оскет ио использовать в мобильнике?) Вот что получается, вы хотите в браузере использовать сокет ио Значит для сервера на Java вы будите реализовывать протокол взаимодействия с сокет.ио В мобильнике по вашим словам такие же сокеты как и в браузере, то етсь не полноценные... Получается что дальше у вас два пути: 1) в мобильнике писать протокол свой, тогда в сервере нужно делать два протокола, и в зависимости от клиента, использовать один или второй. 2) реализовать протокол такой же как в сервере вы сделали для браузера, тогда в сервере останется 1 протокол, что уменьшит количество кода и упростит сервер, но вы будите писать ту же библиотеку сокет.ио ![]() Если вы хотите использовать 1 путь, то почему? Что вы хотите улучшить в том протоколе что уже в сокет ио есть? Если второй, то тем более не понимаю, если оно написано, зачем писать то же самое?
0
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|||
| 16.01.2015, 22:21 [ТС] | |||
|
я думал что веб сокеты ( веб сокеты - это же сокет.ио?) являются полноценными
а в чем они не полноценны? Добавлено через 29 секунд вообще, я думал о 2 пути) Добавлено через 26 секунд вообще, мб встрою браузер в приложение и не буду париться вебкит всегда радовал Добавлено через 4 минуты тогда вообще получится, что не надо писать и под андроид и под айос, только приложение, где есть браузер Добавлено через 2 минуты
0
|
|||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
|
| 16.01.2015, 22:30 | |
|
soket.io - библиотека! просто для кросбраузерности.
она пытается использовать различный транспорт для соединения с сервером: websocket, flashsocket, htmlfile, xhr-polling... а сокет, это программный интерфейс, который позволяет данными обмениваться, есть различные слои сетевые... но как правило при использовании tcp сокета, вы пишите и читаете в него как и в обычный файл, ну почти вам нужно просто подключиться куда то и читать писать байты.web socket это протокол поверх tcp socket, поддерживаемый далеко не во всех браузерах слово полноценны не прям к веб сокетам нужно применять а к браузерам. то етсь не все браузере позволят это использовать. почитайте книжку по сетевому программированию, когда поймете что такое сокет, что такое tcp socket И что такое web socket, будет понятней что такое протокол, и что делает socket.io, и что я пытаюсь у вас узнать ![]() Хорошо, забудьте всё что я написал выше. Можно пару строк кода Java сервера, что бы понять что вы хотите делать? То есть как вы собираетесь слушать порт, какие сокеты использовать, в каком виде принимать и отправлять данные. Пример в одном потоке, просто создание слушающего сокета, и приём отправку имени юзера. Добавлено через 2 минуты spydark91, простите за не скромный вопрос? а нахрена тогда вообще приложение? ![]() Добавлено через 22 секунды Браузер и так в каждой мобилке, етсь, вы хотите написать прсото браузер?) Добавлено через 2 минуты Тогда опять же вернёмся к вопросу, почему Java?) если вы будиде под браузер пистаь на js значит вы его знаете, значит можете написать сервер на node.js что гораздо быстрей и проще, с учетом того что сокет.ио писалось именно под него. и я не думаю что ява более быстро работает или меньше жрёт памяти чем нод.жс, так почему Java?
1
|
|
|
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
|
|||||||
| 16.01.2015, 22:41 [ТС] | |||||||
|
да я понимаю что сокет.ио это библиотека)
но думал, что веб сокеты во всех браузерах поддерживаются, и что это, по сути, тоже самое, что и простые сокеты, только в браузере. Да вот, простенький сервер.
пока что у меня вопросов больше нет, вы необычайно мне помогли, большое спасибо) Добавлено через 1 минуту конечно, надо познавать новое, но сейчас, как то не хочется node js изучать)
0
|
|||||||
|
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
|
||||||||||||
| 16.01.2015, 22:53 | ||||||||||||
|
веб сокеты - это сокрее протокол.
который нужно реализовать ещё на стороне сревера. то что вы показали на сервере - обычный tcp сокет. который сам по себе будет принимать данные от веб сокетов как простой текст. https://ru.wikipedia.org/wiki/WebSocket Вам придёт что то типа
и нужно формировтаь ответы по тому же протоколу
Тот кусок что вы показали - с js не заработает, он просто набором байт будет принимать и отдовать, а самое весёлое что нет никакой гарантии сколько за 1 раз при чтении будет прочитано байт, то етсь вы можете за ра хи не получить все данные. Вы даже ен знаете соклько данных должно придти. К тому же нужно делать неблокирующие сокеты, что бы если 1 клиент с медленным интернетом, другие просто не зависли. Вам слишком рано начинать реализовывать свой протокол, или писать на tcp сокетах сервер для web сокетов. Но дело ваше, я например люблю учиться на поставленных перед собой задачах ![]() Успехов в написании ![]() Добавлено через 2 минуты Открою сикрет, у меня 2 знакомых программиста сетевых, который не 1 год этим занимаются, и даже они столкнулись с проблемой чтения. Ибо юди думают что они написали read, recv,... и всё, они прочти всё что нужно, но это не так)) не зря функция возвращает количество байт прочитанных... Добавлено через 57 секунд А вот если вы этого всего ен знаете, то вам выход самый простой использовать что то готовое, socket,io, tornado web,...
1
|
||||||||||||
| 16.01.2015, 22:53 | |
|
Падающий снег
Падающий текст падающий квадрат
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|