![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А что будет быстрее работать при написании приложения для сети?
nester © (2004-04-09 16:08:00)Меня интересует намного ли будет тормознутее работать сетевая прога написаная на Делфи/Kylix под линух по сравнению с С.
Специфика проги - Держать много открытых коннекшенов TCP и обменивать данные между ними.
Коннекшенов будет ооооочень много, порядка милионов, ну железо тоже будет соответствующее.
Вод думаю на Делфи/Kylix под линух писать. Но прежде интересуюсь на сколько это медленнее будет работать, желательно ответ услышать типа примерно в х раз%)))
Заранее благадарю
nikkie (2004-04-09 19:46:00) [21]>:)))) Читай выше.
выше я уже перестал понимать, что именно обсуждают.
проблема в том, что у одного серверного порта есть ограничение на количество клиентов? если так, то решение в точности как в [34], только диспетчер выдает не ip, а номер порта, к которому коннектиться. зачем с ip заморачиваться-то?
nester (2004-04-09 19:30:00) [22]:)))) Читай выше.
А мне больше с ДНС все равно нравиться, меньше запросов к серверу, меньше лишних коннектов ...
nikkie (2004-04-09 18:52:00) [23]а зачем по ip разводить? не проще по нескольким серверным портам?
Digitman (2004-04-09 18:47:00) [24]
> nester © (09.04.04 18:41) [33]
так я и говорю, что лучше не напрягать ДНС !
клиент делает запрос к ДНС, получает некий фикс.адрес
далее по этому адресу клиент делает запрос к серверу, мол, дай актуальный, наиболее свободный в дан.момент интерфейсный адрес ... сервер, подумав куда "развести" данногго клиента, отвечает и тут же рвет коннект ... клиент, получив акт.адрес интерфейса, делает коннект уже к нему, к акт.адресу
nester (2004-04-09 18:41:00) [25]2Digitman © (09.04.04 18:32) [31]
Почему лучше?
Это отсеется сразу много "лишних" запросов в варианте с ДНС.
Verg (2004-04-09 18:36:00) [26]
> Digitman © (09.04.04 18:29) [30]
Да. Я сам частенько путаю connect-accept, особенно по пятницам :)). Вот при connect-е - там да, берется произвольный порт из числа незанятых в специальном диапазоне и назначается на localport этого сокета.
Digitman (2004-04-09 18:32:00) [27]
> nester © (09.04.04 18:26) [29]
да, вариант без использования ДНС провайдера, пожалуй, лучше будет
Digitman (2004-04-09 18:29:00) [28]
> Verg © (09.04.04 18:17) [27]
могу и заблуждаться ... ты уверен ?
nester (2004-04-09 18:26:00) [29]В конечном счете можно будет заложить в протокол выбор айпишника при запросе с сервера. Типа основной айпишник, который будет при коннекте раздавать айпишник для коннекта и сразу же обрывать соедиенение таким образом освобождая порт, но мне кажется с ДНС лучше будет, к тому же к одному доменному имени можно будет прописать наверно тоже 65к айпишников:)))
nester (2004-04-09 18:23:00) [30]2Digitman [25] А ето мне кажется просто очень будет. На одно доменное имя привязать 16 айпишников, ДНС сервера будут выдавать их примерно случайно и нагрузка как показывает опыт распределяется болееменее равномерно с разницей примерно 15-20%(не очень большой разброс)
Тогда возникает вопрос а какой ето ДНС сервер сразу будет успевать раздавать так быстро айпишники%)))?
Ну а для етого у каждого провайдера каждого уровня есть свой кэширующий ДНС сервер, он по каждому запросу не будет лезть на основной, а будет выдавать айпишник из кэша.
Проверяли уже:)))
Verg (2004-04-09 18:17:00) [31]
> Digitman © (09.04.04 18:07) [23]
Погоди, погоди....
При accept-е образуется "присоединенный" сокет, localport, которого равен порту слушающего сокета от которого он с-accept-ился.
nester (2004-04-09 18:16:00) [32]Я сомниваюсь в оптимизаторе:))), я думал это и так понятно.
Насколько будет оптимально
Я сомниваюсь в оптимальности скомпелированого кода:)))
Точно так же как разница между программами написаными на делфи и си под винду(ну или масме :))). При этом я понимаю разницу в трудозатратах.
2Digitman[23] - спасибо, я примерно так и представлял себе, теперь убедился.
Т.е. вопрос на число открытых соединений решается добавлением айпишников:)))
Digitman (2004-04-09 18:11:00) [33]
> В любом случае решается все просто - добавлением айпишников
> для одного сервера
вот чтобы получить около миллиона одновременных коннектов, тебе и придется не менее 16 "айпишников" добавлять
а ты о клиенте подумал ? он как, по твоему, будет искать сервер, ежели заранее не знает, какой из "айпишников" в дан.момент имеет возможность акцептировать его запрос ?
нет, это несколько по-другому реализуется ...
Verg (2004-04-09 18:07:00) [34]
> Впрос с сервером, хочу прикинуть потянет ли все ето киликс
> или нет?
Так не Киликс же "тянуть"-то будет, а программа на нем написанная и откомпилированная. Все зависит от того, как будет написана программа.
Ты в чем сомневаешься - в оптимизаторе Киликса или в чем?
Это как справшивать - на каком Асм-е программа будет работать быстрее - на At&T-шном или на MASM-е.
Digitman (2004-04-09 18:07:00) [35]
> nester © (09.04.04 18:02) [22]
Апач, равно как и любой иной сервер, использующий ТСР-транспорт, имеет фикс.гнездо на фикс.порту... это гнездо есть "слушающее" .. при поступлении кл.запроса на коннект код сервера выполняет акцепт, в рез-те чего автоматически создается отд.гнездо с динамически присвоенным номером порта из списка свободно-доступных в системе, после чего слушающее гнездо продолжает "слушать" новые запросы
nester (2004-04-09 18:02:00) [36]2Digitman [18]
А как апач весит на одном порту?
Или каждому соединению порт переопределяется?
Или как?
В любом случае решается все просто - добавлением айпишников для одного сервера
nester (2004-04-09 17:58:00) [37]Ето сервер будет:)) который должен с этим справиться:)
У клиента будет одно соединение - к серверу и все. С клиентом вопросов не возникает. Впрос с сервером, хочу прикинуть потянет ли все ето киликс или нет?
Или на С писать - но на С у нас программеров нет в конторе - придется нанимать когото:(
Вот я и хотел узнать, можно на киликсе такое потянуть или нет? Нужен программер С или киликсом обойтись можно.
В начале планируется поставить дуал Оптерон(ето AMD 64-битный) с двумя гигами оперативки под SuSe Linux, вот хочу узнать сколько такая тачка выдержит? То что все обрабатываться сишным кодом, который написан задолго до меня, и то что мне только нужно вызывать нужное - я уже понял, а что киликсу останется? или киликс будет переводиться в сишный код и компиляться как сишный код? Я сомневаюсь в этом.
И еще вопрос какую базу данных лучше использовать, MySQL мне кажется сдохнет, но не уверен.
Для базы требования простые - быстрая выборка селектов.
Всякие утяжеления типа транзакции и хранимые процедуры не нужны.
Интербэйз(точнее его бесплатная версия файрберд кажется зовется) кажется тяжеловат, или его можно скомпилять без поддержки хранимых процедур и транзакций?
Digitman (2004-04-09 17:56:00) [38]
> Verg © (09.04.04 17:54) [19]
ну да ... уточнение правильно
Verg (2004-04-09 17:54:00) [39]
> Digitman © (09.04.04 17:50) [18]
Четверкой чисел адрес:порт(local)-адрес:порт(remote)
Digitman (2004-04-09 17:50:00) [40]
> почему можно делать много соединений на одном порту
как раз нельзя
виртуальная петля соединения однозначно определяется на каждой из сторон комбинацией "адрес:порт"