Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1291973556
12
2010-12-10 12:32
2011.03.27
сломался ctrl+click в IDE. TLabel, ctrl+click на нем, и.. ничего.


4-1246910283
PooHer
2009-07-06 23:58
2011.03.27
COM порт Win API. Проблемы с приёмом.


3-1255678695
Lanu
2009-10-16 11:38
2011.03.27
Подключение ODAC


15-1292327670
12
2010-12-14 14:54
2011.03.27
именование объектов в ORACLE в БД


2-1293959368
Dimonch-ik
2011-01-02 12:09
2011.03.27
резонанс





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский