Форум: "Прочее";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];
ВнизПочему JAVA не используется в HighLoad интернет-проектах? Найти похожие ветки
← →
Дмитрий Тимохов (2010-11-05 21:48) [0]Добрый день, уважаемые!
Осмысляя свое место в мире "IT и заработка на IT" я, зная только дельфи, но желаючи знать что-то еще, мечусь в своих размышлениях - а не изучить ли мне вот эту классную технологию, сделать эту классную штуку и не срубить на этом определенное количество денег.
И вот дошел я таки до Java.
Ну Java я немного знаю - и 1.4 и 1.5 смотрел. И т.д. - банальные десктопные приложения писал. Пытался изучить пару интернет-фреймворков, но дело до практики не дошло.
Многие хвалят Java не только как средство разработки от Sun, но и как хорошую платформу для интернет-проектов. В Java много готовых и поддерживаемых community фреймворков разных направлений. Вообще хорошее community за рубежом. И вообще - это не галимый скриптовый язык, это все же компилятор!
Однако, посмотрев на разные HighLoad интернет-проекты я не вижу вообще применения Java для их создания! Почему?
Достоинства Java:
1. Это же компилятор, т.е. по идее быстрее, чем обычный скриптовый PHP (я знаю про компиляторы под PHP, но не уверен, что они имеют массовое применение).
2. Это все же язык с хорошими IDE. Возможно NetBeans не дотягивает до Дельфи, но я этот NetBeans мучал сильно - эта зараза ни разу не упала и ни разу я вообще ошибки не видел (но я, напомню, не профессионально смотрел этот NetBeans - просто изучал). К тому же NetBeans бесплатен (был, сейчас - не знаю). Есть нормальный дебагер, не то, что в PHP.
3. Опять же есть большое количество фреймворков разных направлений.
Так почему на Java мало HighLoad (с высокой нагрузкой) интернет-проектов?
ЗЫ Если кого удивит моя позиция - делать проект через изучение средства разработки, то скажу - у меня есть постоянная работа. Я хочу сам в свое личное время сделать свой проект. Вот и выбираю на чем делать - делать то мне нужно будет, а не кому-то еще.
← →
DiamondShark © (2010-11-05 21:52) [1]
> Так почему на Java мало HighLoad (с высокой нагрузкой) интернет-
> проектов?
А это утверждение откуда взялось?
← →
Дмитрий Тимохов (2010-11-05 21:54) [2]
> DiamondShark © (05.11.10 21:52) [1]
>
>
> > Так почему на Java мало HighLoad (с высокой нагрузкой)
> интернет-
> > проектов?
>
> А это утверждение откуда взялось?
Назови примеры, я не знаю такие.
Я смотрю на известные - ВКонтакт, FaceBook, однокамерники ну и т.д.
← →
картман © (2010-11-05 21:56) [3]
> Возможно NetBeans не дотягивает до Дельфи
Idea посмотри - за дельфи(как ИДЕ) стыдно станет, по крайней мере за 7-ку
← →
DiamondShark © (2010-11-05 22:03) [4]
> Дмитрий Тимохов (05.11.10 21:54) [2]
> Назови примеры, я не знаю такие.
А я не знаю ни одного китайца. Почему в мире так мало китайцев?
Кстати, спорим, что ты не назовёшь много знакомых китайцев. Значит, моё утверждение, что в мире мало китайцев будем считать верным.
:)
А если серьёзно, то в ответе на вопрос: "Каким образом ты выяснил, что на Java мало HighLoad (с высокой нагрузкой) интернет-проектов?" содержится значительная часть ответа на вопрос: "Почему...".
← →
DVM © (2010-11-05 22:05) [5]
> Дмитрий Тимохов (05.11.10 21:48)
У Сбербанка есть Интернет бизнес-онлайн сайт. Нагрузка на него судя по всему высокая ибо он периодически жутко тормозит :) По всей видимости на джаве оно.
← →
Дмитрий Тимохов (2010-11-05 22:16) [6]
> DiamondShark © (05.11.10 22:03) [4]
>
>
> > Дмитрий Тимохов (05.11.10 21:54) [2]
> > Назови примеры, я не знаю такие.
>
> А я не знаю ни одного китайца. Почему в мире так мало китайцев?
>
> Кстати, спорим, что ты не назовёшь много знакомых китайцев.
> Значит, моё утверждение, что в мире мало китайцев будем
> считать верным.
> :)
>
Давай без демагогии. Не в обиду сказано. Честно. Просто на такие высказывания ответить нечего. Давай еще про атомы поговорим - я ни одного глазами не видел, от этого я не оспариваю их наличие.
Я вот читаю периодически блог http://www.insight-it.ru/ (это не скрытый маркетинг, просто мне блог очень задуматься заставляет). Автор пишет о многих проектах. О десятках проектов. Все они на слуху. Он дает либо переводные статьи, либо свою стенограмму конференций с авторами проектов. Нет там Java.
Почему? Скажи, что думаешь по теме ))
← →
Anatoly Podgoretsky © (2010-11-06 07:13) [7]> Дмитрий Тимохов (05.11.2010 22:16:06) [6]
Вроде как AJAX достаточно распространен, да и ASP.NET его широко использует,
а буква J это от JAVA
← →
icelex © (2010-11-06 10:31) [8]
> Anatoly Podgoretsky © (06.11.10 07:13) [7]
вапщето от джаваскрипт :)
← →
Дмитрий Тимохов (2010-11-06 12:14) [9]
> Anatoly Podgoretsky © (06.11.10 07:13) [7]
>
> > Дмитрий Тимохов (05.11.2010 22:16:06) [6]
>
> Вроде как AJAX достаточно распространен, да и ASP.NET его
> широко использует,
> а буква J это от JAVA
Дядя Толя, ты чего. J - это JavaScript.
JavaScript активно используется и на серверной и на клиентских сторонах. Это да.
← →
Фокс Йовович (2010-11-06 12:20) [10]
> ВКонтакт, FaceBook, однокамерники ну и т.д.
Разве они HighLoad? Никаких вычислений, отчетности, никакой ресурсоемкой обработки данных.
← →
Дмитрий Тимохов (2010-11-06 12:34) [11]
> Фокс Йовович (06.11.10 12:20) [10]
>
>
> > ВКонтакт, FaceBook, однокамерники ну и т.д.
>
> Разве они HighLoad? Никаких вычислений, отчетности, никакой
> ресурсоемкой обработки данных.
Ну а почему нет? Десятки (сотни) тысяч запросов в секунду, гигабайты трафика в секунду, десятки тысяч серверов.
Я согласен, это не расчет ядерного взрыва на суперкластере. Но там JAVA и подавно нет. Там Фортран.
← →
Anatoly Podgoretsky © (2010-11-06 12:37) [12]> Дмитрий Тимохов (06.11.2010 12:14:09) [9]
А зачем нам Ява?
← →
Фокс Йовович (2010-11-06 12:48) [13]
> Ну а почему нет? Десятки (сотни) тысяч запросов в секунду,
> гигабайты трафика в секунду, десятки тысяч серверов.
вот и ответ :-) Взяли готовый движок, допилили, установили на десятках тысяч серверов.
← →
Фокс Йовович (2010-11-06 12:51) [14]А там, где вычисления и отчетность, например, в банковской сфере, там и Java. Пример - Websphere.
← →
Дмитрий Тимохов (2010-11-06 13:06) [15]
> А там, где вычисления и отчетность, например, в банковской
> сфере, там и Java. Пример - Websphere.
я понимаю.
видимо Java подходит для ответственных дел. Транзакции там распределенные, например. Опять же - Java есть язык разработки под многие корпоративные продукты. Упомянутая Websphere так же.
А вот в развлекательном вебе можно и без Java. PHP хороший выбор.
Так как-то надо понимать современные тенденции?
← →
icelex © (2010-11-06 13:14) [16]какааааааааая каша в голове!!!
← →
Фокс Йовович (2010-11-06 13:23) [17]Вот тут интересно дядька рассказывает про HighLoad: http://video.yandex.ru/users/ysirotkin/view/2/
← →
Дмитрий Тимохов (2010-11-06 13:30) [18]
> icelex © (06.11.10 13:14) [16]
> какааааааааая каша в голове!!!
Ну вот так всегда - все бы на личности перейти.
Это же форум. А форум изначально это место где люди могут свободно
общаться. Если есть что полезное сказать или дать ссылку почитать, то дай.
А так, то что языком трепать.
> Фокс Йовович (06.11.10 13:23) [17]
>
> Вот тут интересно дядька рассказывает про HighLoad: http:
> //video.yandex.ru/users/ysirotkin/view/2/
Пасиб, смотрю.
← →
Дмитрий Тимохов (2010-11-06 21:12) [19]
> Фокс Йовович (06.11.10 13:23) [17]
>
> Вот тут интересно дядька рассказывает про HighLoad:
> http://video.yandex.ru/users/ysirotkin/view/2/
Благодарю за кино. В принципе все, что сказано мне знакомо. Но посмотреть полезно такие фильмы всегда - всегда приятно понимать, что у тебя не каша в голове )))
Как они задорно на восьмой минуте ржут над словом Борланд. Лемминги )))
Умиляет рассуждение о том, что отдавать данные в сокет, если на конце клиента модем, видите ли долго, поэтому кончаются потоки.
Ну почему у них нет асинхронной обработки запросов!!? Задаю вопрос не первый раз:
http://delphimaster.net/view/15-1288472674/.
Смешно просто - люди в HiLoad борются с системой, которая их заставляет пользоваться синхронными блокирующими сокетами.
ВОПРОС (конкретный) к знатокам, особенно к тем, у кого каши в голове нет (я имею в виду индивидума icelex): в java есть возможность использовать асинхронные сокеты, или нет, т.к. native уровень не предоставляет такую возможность?
← →
asail © (2010-11-06 21:21) [20]
> Anatoly Podgoretsky © (06.11.10 12:37) [12]
Пральна... Нафик Яву - Курилы ж есть! :)
← →
DVM © (2010-11-06 22:00) [21]
> Дмитрий Тимохов (06.11.10 21:12) [19]
> в java есть возможность использовать асинхронные сокеты,
> или нет, т.к. native уровень не предоставляет такую возможность?
>
Я не знаю, есть ли в JAVA асинхронные сокеты или нет, но если как ты говоришь, сама ОС не предоставляет такой возможности (Linux) то, очевидно, реализация этого в JAVA (если оно там есть) будет опираться на неблокирующие (в лучшем случае) сокеты или блокирующие и потоки (или их имитацию), что не лучшим образом отразится на производительности.
Теперь касательно асинхронности сокетов в Windows. Кто нибудь знает внутреннюю кухню этого дела? Как эта асинхронность устроена внутри системы?
← →
Дмитрий Тимохов (2010-11-06 22:32) [22]
> Теперь касательно асинхронности сокетов в Windows. Кто нибудь
> знает внутреннюю кухню этого дела? Как эта асинхронность
> устроена внутри системы?
А зачем тебе это знать?
Они дико производительные, это точно.
Один поток на фронтенде может может обрабатывать тысячи запросов в секунду.
Для примера http://rouse.drkb.ru/network.php#fwiocompletionpipe. Это Розыч написал на неблокирующих именованных каналах (концептуально те же сокеты) свой сервер - мы соревновались у кого толще. У Розыча по определению толще, но мой сервер схож по производительности. Главная особенность у нас обоих - один поток на фронтенде.
Вот автор Дмитрий Завалишин (автор http://video.yandex.ru/users/ysirotkin/view/2/) говорит, что HiLoad - это когда ты уперся во все мыслимые пределы одновременно. Полностью согласен, между прочим. Но есть ощущение, что юниксоиды и javисты борются с пределами, которые на самом деле не являются пределами. Т.е. не являются пределами при иной архитектуре ОС.
Поясню мысль. Я понял, что в Java 8000 потоков предел. У асинхронных подключений тоже есть предел - количество сокетов, я так понял, что это примерно 64000. Т.о. если использовать фронтенд с асинхронным вводом/выводом, то можно обрабатывать одновременно в 8 раз больше подключений, к тому же делать это без переключений контекста потоков.
Удивляют меня в общем даклады, которые рассказывают, как они классно реализовали обходной путь для несовершенства системы: блокирующие синхронные сокеты!
← →
Игорь Шевченко © (2010-11-06 23:10) [23]Дмитрий Тимохов (06.11.10 22:32) [22]
Димыч, бабла ты на этом все равно не срудишь - все уже срублено до тебя :)
← →
Дмитрий Тимохов (2010-11-06 23:13) [24]Игорь, ну интересно разобраться.
Что так много народу носится с линуксами и java, когда там даже асинхронного ввода вывода нет!
← →
DiamondShark © (2010-11-06 23:18) [25]
> Теперь касательно асинхронности сокетов в Windows. Кто нибудь
> знает внутреннюю кухню этого дела? Как эта асинхронность
> устроена внутри системы?
А что такое асинхронные сокеты в Windows?
Я знаю сокеты, которые могут быть в блокирующем и неблокирующем режиме.
Я знаю асинхронные запросы ввода/вывода, которые применяются в том числе и к сокетам.
А что такое асинхронные сокеты -- не знаю.
← →
Pavia © (2010-11-07 00:00) [26]
> Вот автор Дмитрий Завалишин (автор http://video.yandex.ru/users/ysirotkin/view/2/)
Пока лица не увидел сразу то и не догадался. Только я его советую не слушать. Фантазёр ещё тот.
← →
Pavia © (2010-11-07 00:03) [27]
> А что такое асинхронные сокеты -- не знаю.
Используй метод дедукции.
← →
DVM © (2010-11-07 00:06) [28]
> DiamondShark © (06.11.10 23:18) [25]
Термин весьма устоявшийся.
Везде применяется, вот например http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx
Если ты хочешь услышать мое понимание данного термина, то для меня асинхронные сокеты - это прежде всего сокеты, взаимодействие с которыми основано на каких либо событиях, внутри системы они могут быть как блокирующими так и нет, для моей программы сие неважно.
> Дмитрий Тимохов (06.11.10 22:32) [22]
Судя по всему, асинхронные сокеты опираются на специальный системный пул потоков.
← →
DiamondShark © (2010-11-07 00:13) [29]
> DVM © (07.11.10 00:06) [28]
> вот например http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx
То, что там описано -- это CLR-обёртка над обычными блокирующими сокетами, обслуживаемыми отдельным потоком (из пула потоков).
А что такое асинхронные сокеты в Windows?
> Термин весьма устоявшийся.
Тем не менее, в документации по WS2 он не используется.
← →
DiamondShark © (2010-11-07 00:24) [30]
> Поясню мысль. Я понял, что в Java 8000 потоков предел. У
> асинхронных подключений тоже есть предел - количество сокетов,
> я так понял, что это примерно 64000.
"примерно 64000" (точнее, ровно 64К-1) -- это теоретически возможное количество TCP-портов (для IPv4). Я, почему-то, думаю, что TCP-стек сдохнет значительно раньше, чем будет установлено 64К одновременных подключений.
Хочешь -- проведи тест, мне влом. Но я буду только рад, если оказался неправ.
Поэтому, если количество одновременных соединений реально приближается к 8000, то это хороший повод задуматься о кластере с балансировщиком, а не заниматься крэш-тестами системы.
← →
DVM © (2010-11-07 00:32) [31]
> DiamondShark © (07.11.10 00:13) [29]
> Тем не менее, в документации по WS2 он не используется.
Уже почти не используется. Раньше попадалось. Сама приставка WSA разве не означает Windows Socket Asynchronous? Сейчас чаще пишут что -то типа сокет в асинхронном режиме работы или сокет использующий асинхронный режим.
← →
Pavia © (2010-11-07 00:42) [32]
> Что так много народу носится с линуксами и java, когда там
> даже асинхронного ввода вывода нет!
Тут вы заблуждаетесь.
И в компиляторах вы не разбираетесь.
← →
DiamondShark © (2010-11-07 00:50) [33]
> Уже почти не используется. Раньше попадалось.
Ну, у меня поиск по локальному мсдну выдаёт только ссылки на .NET Framework: Networking.
> Сама приставка WSA разве не означает Windows Socket Asynchronous?
Да, вроде, Windows Socket API, ведь WSA -- это префикс для не-берклевских расширений.
В общем, получается: блокирующий сокет, обслуживаемый потоком из пула.
Может Дмитрий Тимохов скажет, что он имеет в виду.
← →
Pavia © (2010-11-07 00:55) [34]
> "примерно 64000" (точнее, ровно 64К-1) -- это теоретически
> возможное количество TCP-портов (для IPv4). Я, почему-то,
> думаю, что TCP-стек сдохнет значительно раньше, чем будет
> установлено 64К одновременных подключений.
Ты еще на IP забыл по множить.
Вообще соединений может быть гораздо больше.
Кому интересно советую раскопки начать отсюда.
http://www.wasm.ru/forum/viewtopic.php?id=22123
Дальше по ссылкам.
← →
DVM © (2010-11-07 01:04) [35]Мне вот другое интересно, ну подключим мы 10 000 клиентов, дальше что. С ними же обмен какой то надо вести. Я не представляю как это возможно.
Только если примитивное что-то совсем.
← →
DiamondShark © (2010-11-07 01:16) [36]
> Pavia © (07.11.10 00:55) [34]
ВнушаетЪ.
← →
Eraser © (2010-11-07 01:23) [37]> [35] DVM © (07.11.10 01:04)
обычно с 99% соединений идет обмен только сообщениями вроде keep alive. реально одновременно работает весьма малое количество. пример - любые ICQ, Skype и т.д. подобные системы.
> [28] DVM © (07.11.10 00:06)
> Судя по всему, асинхронные сокеты опираются на специальный
> системный пул потоков.
скорее не сокеты, а механизм IOCP. так и есть, его можно не только для сокетов использовать.
← →
Pavia © (2010-11-07 01:56) [38]
> Мне вот другое интересно, ну подключим мы 10 000 клиентов,
> дальше что. С ними же обмен какой то надо вести. Я не представляю
> как это возможно.Только если примитивное что-то совсем.
Skype действуют по принципу пиринга. Есть кластер серверов. К которым может коннектится клиент, а дальше уже только keep alive. Или запрос IP:порт для прямого соединения клиентов. Так что трафик не велик.
Вот в ICQ там нагрузка меньше. И балансировка несколько иначе происходит.
А вот если уже не хватает ресурсов, то задействуют кластеры. С балансировкой нагрузки.
Один из методов.
http://www.oszone.net/4187/Network_Load_Balancing
Гугл собственно как и ICQ использует службу DNS для раскидывания клиентов на разные сервера с разными IP.
И другие методы применяются.
10 000 * 1 500 байт=15 000 000 = 15 мбайт/с *8= 120МБит/с.
← →
Anatoly Podgoretsky © (2010-11-07 09:01) [39]> DVM (07.11.2010 00:06:28) [28]
асинхронные сокеты опираются на сообщения.
← →
Anatoly Podgoretsky © (2010-11-07 09:03) [40]> DiamondShark (07.11.2010 00:24:30) [30]
TCP-стек держит как минимум 32000 сокетов.
Страницы: 1 2 3 4 вся ветка
Форум: "Прочее";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.006 c