Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.27;
Скачать: CL | DM;

Вниз

Почему 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;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.015 c
2-1293352804
Mitroshin
2010-12-26 11:40
2011.03.27
Как правильно: Button1Click(Sender, nil или null)?


6-1236003416
Alik
2009-03-02 17:16
2011.03.27
Где взять компоненту TNmudp


15-1292354107
Фокс Йовович
2010-12-14 22:15
2011.03.27
Убить процесс


8-1211198951
Ganda
2008-05-19 16:09
2011.03.27
FastReport 3.0 + Bmp


2-1293575440
Anthony
2010-12-29 01:30
2011.03.27
Как правильно отображать ход долгих процессов?