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

Вниз

Почему JAVA не используется в HighLoad интернет-проектах?   Найти похожие ветки 

 
Anatoly Podgoretsky ©   (2010-11-07 09:03) [40]

> DiamondShark  (07.11.2010 00:24:30)  [30]

TCP-стек держит как минимум 32000 сокетов.


 
Anatoly Podgoretsky ©   (2010-11-07 09:09) [41]

> DVM  (07.11.2010 01:04:35)  [35]

Например выдача страницы.


 
Дмитрий Тимохов   (2010-11-07 11:28) [42]


> DVM ©   (07.11.10 01:04) [35]
>
> Мне вот другое интересно, ну подключим мы 10 000 клиентов,
>  дальше что. С ними же обмен какой то надо вести. Я не представляю
> как это возможно.
> Только если примитивное что-то совсем.


Фронтенды всегда примитивны. Дальше запросы уже можно раскидать на сервера, например, согласно выбранному алгоритму балансировки нагрузки.
Тут еще можно масштабироваться как тебе вздумается - хоть 1000 серверов ставь. А фронтенд должен принять все запросы.


> DiamondShark ©   (07.11.10 00:13) [29]
> > DVM ©   (07.11.10 00:06) [28]
> >  вот например http://msdn.microsoft.com/en-us/library/5w7b7x5f.
> aspx
>
> То, что там описано -- это CLR-обёртка над обычными блокирующими
> сокетами, обслуживаемыми отдельным потоком (из пула потоков).
>
> А что такое асинхронные сокеты в Windows?


Насчет асинхронности.

Под асинхронностью я понимаю расширение WSA, где события пересылаются посредством оконных сообщений. Т.е. есть один поток, который работает с сокетом, для каждого коннекта отсылается сообщение, параметром является структура идентифицирующая клиента. Код в событии либо читает, либо пишет - что нужно по протоколу. Надеюсь, понятно объяснил.

Конечно это не какая не обертка над обычными берклевскими сокетами. Вообще откуда ноги растут у асинхронных сокетов? Ноги растут еще с Windows 3.1. Если помнишь там не вытесняющая многозадачность была. Я не помню деталей, если честно, но там писать программы в которых много потоков должны обслуживать каждый свое соединение было сложно. Поэтому были придуманы асинхронные средства ввода/вывода. Т.е. прямо в одном потоке можно было делать весьма производительные сервера. Потом оказалось, что и в мире вытесняющей многозадачности, асинхронность хорошая штука - опять же из-за высокой производительности.

Это "неблокирующие сокеты" называется? Пусть, так, сути не меняет.


 
_Юрий   (2010-11-07 11:40) [43]


> Это "неблокирующие сокеты" называется? Пусть, так, сути
> не меняет.
>


Нет, неблокирующие и асинхронные - это разное
неблокирующие - это те, которые сразу управление возвращают,  асинхронные - то что ты выше описал.


 
DVM ©   (2010-11-07 11:55) [44]


> Anatoly Podgoretsky ©   (07.11.10 09:01) [39]
> > DVM  (07.11.2010 00:06:28)  [28]
>
> асинхронные сокеты опираются на сообщения.

необязательно на сообщения


 
Омлет ©   (2010-11-07 12:02) [45]

Amazon
http://highscalability.com/amazon-architecture
http://aws.amazon.com/ec2/

eBay
http://highscalability.com/ebay-architecture


 
DiamondShark ©   (2010-11-07 13:05) [46]


> Дмитрий Тимохов   (07.11.10 11:28) [42]
> Фронтенды всегда примитивны.
> <...>
> А фронтенд должен принять все запросы.

Вот тебе и ответ на сабж: раз фронтенд примитивен, но требует высокой производительности, то проще и полезнее всего его написать на нативном языке.
А уже на высокоуровневом языке писать прикладные модули, которые оперируют на существенно более высоком уровне абстракции.


> Под асинхронностью я понимаю расширение WSA, где события
> пересылаются посредством оконных сообщений.

Ну мы примерно так и дотелепатировали уже ;)


> Вообще откуда ноги растут у асинхронных сокетов? Ноги растут
> еще с Windows 3.1.

Не ноги, а костыли ;)))


> Я не помню деталей, если честно, но там писать программы
> в которых много потоков должны обслуживать каждый свое соединение
> было сложно.

Я бы даже сказал, что не сложно, а невозможно. По причине отсутствия понятия "поток" в принципе.


>  Потом оказалось, что и в мире вытесняющей многозадачности,
>  асинхронность хорошая штука - опять же из-за высокой производительности.

Эта "штука", которая с сообщениями, не может обладать высокой производительностью.
Во-первых, узким местом будет очередь и цикл выборки.
Во-вторых, эта фича оставлена только для обратной совместимости, и эмулируется (сюрприз!) таки фоновыми потоками. О том, что новые приложения не должны пользоваться этой фичей, а должны использовать новые возможности мильтитридинга говорит сама микрософт.

Там вот (Pavia ©   (07.11.10 00:55) [34]) ссылочка была, недалеко от которой находится интересная глава из книги
http://www.microsoft.com/mspress/books/sampchap/5726a.aspx
в которой есть интересная табличка.

Обрати внимание на строку WSA-AsyncSelect


 
Eraser ©   (2010-11-07 13:32) [47]

> [39] Anatoly Podgoretsky ©   (07.11.10 09:01)

уже лет 10 как в MS рекомундуют на сообщения не опираться.


 
Anatoly Podgoretsky ©   (2010-11-07 14:33) [48]

> DiamondShark  (07.11.2010 13:05:46)  [46]

Лучше пусть посмотрит на WonSock Direct или Socket Direct


 
Дмитрий Тимохов   (2010-11-07 14:50) [49]

Коллеги, благодарю за участие в ветке. Это же форум?! Очень качественно и, уверен, не только для меня полезно.

Что смогу из посоветованного обязательно почитаю.

Но все же я хочу заметить, что исходная тема была несколько не в том, чтобы обсуждать в деталях WinSock. Общую картину, достаточную для обсуждения, я неплохо знаю.

Я скорее хочу обсудить маркетинговую (а может даже и религиозную) сторону дела - почему не сделать фронтенд на Windows, а вот сервера, пожалуйста, на чем душе угодно.

Вот у ВКонтакта 32 фронденд линуксовых сервера. Перед ними скорее всего некая желязяка стоит, которая поочередно на неком принципе распределяет запросы по этим серверам. Железяки такие, насколько я знаю, дорогие.

Это вопрос религии, что не делают подобные гетерогенные сети (фронт енд на винде, а основные сервера на линуксах)? Или как в рекламе, "а мужики то и не знают", что так можно (ведь, может же быть такое :) )?


 
Pavia ©   (2010-11-07 17:12) [50]


> Вот у ВКонтакта 32 фронденд линуксовых сервера. Перед ними
> скорее всего некая желязяка стоит, которая поочередно на
> неком принципе распределяет запросы по этим серверам. Железяки
> такие, насколько я знаю, дорогие.

Что вы опять придумываете. Нет такой железке. Вернее есть но к делу она не имеет отношение.

Есть служба DNS локальна в каждом городе. Которая по кругу дает разные IP.
Тем самым эти 32 сервера могут находится где угодно.
Но физически находятся в дата центре. К дата центру подведен широкий канал. И там стоит дорогая железка которая держит этот широкий канал. Но так как в дата-центре не один сайт держится то окупается запросто.

Так вот на этих 32 серверах стоит nginx.  Который выполняет вторую стадию балансировки нагрузки. Раскидывая по кластеру пользователей.

Почему на линуксе а не на виндоусе? Да по тому что линукс ничем не хуже.


 
DVM ©   (2010-11-07 17:30) [51]


> Почему на линуксе а не на виндоусе? Да по тому что линукс
> ничем не хуже.

Потому что ngnix уже есть готовый и те то делали систему вероятно с ним уже были знакомы. Это все проще чем писать заново что-то.


 
Дмитрий Тимохов   (2010-11-07 17:38) [52]


> Pavia ©   (07.11.10 17:12) [50]



> Что вы опять придумываете. Нет такой железке. Вернее есть
> но к делу она не имеет отношение.


Ну это было предположение.


> Есть служба DNS локальна в каждом городе. Которая по кругу
> дает разные IP.


Т.е. специально настроенная служба DNS, которая для www.vkontakte.ru дает последовательно (например) 111.111.111.0, 111.111.111.1 .. 111.111.111.31.
Так?

А как такая настройка называется? Это может расширение какое-то для DNS серверов?


 
Дмитрий Тимохов   (2010-11-07 22:34) [53]

Может продаст кто-то в Москве?
http://www.ozon.ru/context/detail/id/942504/


 
DVM ©   (2010-11-08 00:31) [54]


> Дмитрий Тимохов   (07.11.10 22:34) [53]

Она в отсканированном виде есть в сети. Понятно, что исключительно для ознакомления :)


 
Вариант   (2010-11-08 08:06) [55]


> Дмитрий Тимохов   (06.11.10 21:12) [19]


> Ну почему у них нет асинхронной обработки запросов!!? Задаю
> вопрос не первый раз:

Тебе уже отвечали еще в той ветке -есть select и есть неблокирующие сокеты, есть еще Poll и ePoll. И кстати в Java c 1.5 (могу ошибиться номером версии) поддерживает неблокирующий ввод вывод - java.nio.channels. Чем и насколько они хуже асинхронных сокетов в Windows?


 
Pseudoslav Miroedov   (2010-11-08 09:51) [56]

Дмитрий Тимохов

>неблокирующие сокеты

Если речь идет о Java для веб, то это автоматически означает сервер приложений. А сервер приложений (плюс веб фреймворк, плюс фреймворк данных, плюс dependency injection и иже с ними) это такой уровень абстракций на уровне абстракций, что говорить про неблокирующие сокеты уже не столько смысла, сколько, например, в случае простого веб-сервера с CGI. Хотя, кластеризация, load balancing, параллелизм из коробки наличествуют, и используются в основном в энтерпрайзе для приложений mid-уровня, кроме того, фреймворки позволяют делать довольно красивую и бизнес-логику и фронтенды со всеми прелестями ООП и высокой повторной используемостью кода.


 
Дмитрий Тимохов   (2010-11-08 10:09) [57]


> Pseudoslav Miroedov   (08.11.10 09:51) [56]


Ну в общем, я понял. Хорошо концептуально разложил. Благодарю.
Я в общем укрепился во мнении, что все же Java больше для интерпрайза, а не не интертеймента. Повторю, что моя задача - концептуально понять, что к чему сейчас в части веб-разработки. В части Java я с такой расстановкой точек на "ы" вроде справился. Всех благодарю.


> DVM ©   (08.11.10 00:31) [54]
> > Дмитрий Тимохов   (07.11.10 22:34) [53]
> Она в отсканированном виде есть в сети. Понятно, что исключительно
> для ознакомления :)


Да у меня есть где-то. Но такие книги в бумаге надо иметь. Своего рода книжный фетиш ))

Предложение в силе. Может у кого завялялось? Помню у Сереги Маслова была (он фотку выкладывал своей книжной полки) )))  Ну само-собой у Розыча... Может у кого есть, кому не нужно?


 
DiamondShark ©   (2010-11-08 10:44) [58]


> Я в общем укрепился во мнении, что все же Java больше для
> интерпрайза, а не не интертеймента.

А в чём разница?
На Яве пишут высокоуровневую логику, где уровня сокетов вообще не видно под толстым-толстым слоем шоколада. При чём здесь интерпрайз или интертеймент?


 
Дмитрий Тимохов   (2010-11-08 11:12) [59]


> При чём здесь интерпрайз или интертеймент?


Слуш, ты мне домик не разрушай. )))
У меня все стройненько и понятненько )

У меня была (да и сейчас есть) мечта сделать экономическую mmog.

Мне хороший приятель предлагал ее сделать на Java.
Но у меня возникли сомнения, что это не лучший инструмент для создания подобных программ. Поизучав практику использования Java для создания онлайн игр, я пришел к выводу, что насчет излишеств Java как инструмента для данной задачи я пожалуй прав. Инструмент хороший, но слишком "крутой" что-ли для онлайн игр.

На том истою пока )))


 
Sergey Masloff   (2010-11-08 11:26) [60]

Дмитрий Тимохов   (08.11.10 10:09) [57]
Дим я давно хотел подарить ее тебе, отложил даже но куда - не помню, если найдется - сразу позвоню и она твоя. P.S. на полке сейчас ее нет - смотрел ;-)


 
Дмитрий Тимохов   (2010-11-08 11:32) [61]


> Sergey Masloff   (08.11.10 11:26) [60]
>
> Дмитрий Тимохов   (08.11.10 10:09) [57]
> Дим я давно хотел подарить ее тебе, отложил даже но куда
> - не помню, если найдется - сразу позвоню и она твоя. P.
> S. на полке сейчас ее нет - смотрел ;-)


Сергей, только ты подпиши ее ))
С радостью возьму. Телефон у тебя есть вроде.
Благодарю!!!


 
DiamondShark ©   (2010-11-08 11:37) [62]


> У меня была (да и сейчас есть) мечта сделать экономическую
> mmog.

Если тебе нравится Ява, если твой приятель хорошо владеет Явой, то почему бы не сделать её на Яве? Тому нет никаких объективных препятствий.

Если тебя тошнит от Явы, если у вас там никто ни в зуб ногой в Яве, то почему бы не послать Яву в дупло? На то не требуется никаких объективных обоснований.

Где-то так ;)


 
Дмитрий Тимохов   (2010-11-08 12:56) [63]


>
> Если тебе нравится Ява, если твой приятель хорошо владеет
> Явой, то почему бы не сделать её на Яве? Тому нет никаких
> объективных препятствий.


Там же инвестироваться надо. Т.е. не забесплатно.

Я побаиваюсь подсесть на то, что замучаюсь потом с поддержкой.

А язык мне нравится, очень нравится.

Ладно, пошел с тараканами разбираться своими сам. )))


 
Anatoly Podgoretsky ©   (2010-11-08 13:13) [64]

> Дмитрий Тимохов  (08.11.2010 12:56:03)  [63]

Тапок бери.


 
Mystic ©   (2010-11-08 13:21) [65]

Главным образом потому, что перечисленные тобою проекты выходят из стартапов, где вложения на начальной стадии минимальны, и непонятно, что будет в результате :)


 
DVM ©   (2010-11-08 13:38) [66]


> Дмитрий Тимохов   (07.11.10 22:34) [53]
> Может продаст кто-то в Москве?
> http://www.ozon.ru/context/detail/id/942504/

к той книге вот эта еще вероятно будет хорошим подспорьем:
http://www.piter.com/book.phtml?978531800535&at=exc&n=0


 
Дмитрий Тимохов   (2010-11-08 23:37) [67]


> Pavia ©   (07.11.10 17:12) [50]


Вчерне прочел Стивенсона в части DNS.
Что-то я не понял, как штатный DNS сервер может выдавать разные IP одного имени домена.
Поясни, если можешь, пожалуйста.


 
Eraser ©   (2010-11-09 00:26) [68]

> [67] Дмитрий Тимохов   (08.11.10 23:37)

а почему не может то? он что хошь выдать может, было бы желание )


 
DVM ©   (2010-11-09 00:47) [69]


> Дмитрий Тимохов   (08.11.10 23:37) [67]

Балансировка DNS + google

http://project.net.ru/others/article9/gl4_7.html


 
Дмитрий Тимохов   (2010-11-09 01:27) [70]


> Eraser ©   (09.11.10 00:26) [68]
>
> > [67] Дмитрий Тимохов   (08.11.10 23:37)
>
> а почему не может то? он что хошь выдать может, было бы
> желание )
>


Ну, видимо, такая балансировка на основе DNS все же побочное явление, а не as design. Собственно, в ссылке http://project.net.ru/others/article9/gl4_7.html и говорится, что такая балансировка есть особенность сервера BIND. Поэтому, видимо, Стевенс и не излагает таких тонкостей.


> DVM ©   (09.11.10 00:47) [69]
> > Дмитрий Тимохов   (08.11.10 23:37) [67]
> Балансировка DNS + google
> http://project.net.ru/others/article9/gl4_7.html


Ага, благодарю. Все же я был прав, говоря, что такую балансировку можно делать на основе железяки (дорогостоящей, CISCO, например) на основе TCP протокола.


 
Anatoly Podgoretsky ©   (2010-11-09 09:36) [71]

> Дмитрий Тимохов  (08.11.2010 23:37:07)  [67]

Robin Round - штатная возможность ДНС

host.domain.ru    IP1
host.domain.ru    IP2
host.domain.ru    IP3


 
Alx2 ©   (2010-11-09 09:40) [72]

Наш Java-проект www.ecwid.com - загрузка нехилая.


 
Дмитрий Тимохов   (2010-11-09 09:42) [73]


> Anatoly Podgoretsky ©   (09.11.10 09:36) [71]
>
> > Дмитрий Тимохов  (08.11.2010 23:37:07)  [67]
>
> Robin Round - штатная возможность ДНС
>
> host.domain.ru    IP1
> host.domain.ru    IP2
> host.domain.ru    IP3


Ага, пасиб, буду изучать.


 
Дмитрий Тимохов   (2010-11-09 09:55) [74]


> Alx2 ©   (09.11.10 09:40) [72]
>
> Наш Java-проект www.ecwid.com - загрузка нехилая.

да вы издеваетесь - iPhone 3Gs за  $199 (http://www.ecwid.com/demo-frontend.html#ecwid:category=3003&mode=category&offset=0&sort=normal)

$-)

Дайте мне десяток!

Ну это я понял для заграницы? Все платежные средства не наши.


 
Anatoly Podgoretsky ©   (2010-11-09 09:58) [75]

> Дмитрий Тимохов  (09.11.2010 09:42:13)  [73]

Это должен поддерживать ДНС, не все еще поддерживают. Но это самый дешевый,
самый малозатратный метод из коробки.
Только точное название Round Robin


 
Alx2 ©   (2010-11-09 10:02) [76]

>Дмитрий Тимохов   (09.11.10 09:55) [74]

>Дайте мне десяток!
:))

>Ну это я понял для заграницы? Все платежные средства не наши.

На российский рынок тоже есть заточка (и продолжает затачиваться:) ): http://www.ecwid.ru


 
Kostafey ©   (2010-11-09 13:51) [77]


> Дмитрий Тимохов   (05.11.10 21:48) 

> а не изучить ли мне вот эту классную технологию, сделать
> эту классную штуку и не срубить на этом определенное количество
> денег

1C


> Однако, посмотрев на разные HighLoad интернет-проекты я
> не вижу вообще применения Java для их создания! Почему?

Зайдя на некий сайт вы не обязаны узнать, что серверная чать крутиться на java. Потом, в интранете ее много.


> 1. Это же компилятор, т.е. по идее быстрее, чем обычный
> скриптовый PHP

Говоря и java vs php как о том, что у одного есть быйт-компиляция а у другого нет... ну ближайший аналог - сравнивать вертолет и бабочку, рассуждая что у одной есть усики, а у вертолета нет. Отличий тьма.


> Это все же язык с хорошими IDE. Возможно NetBeans не дотягивает
> до Дельфи, но я этот NetBeans мучал сильно - эта зараза
> ни разу не упала и ни разу

Да там дыр тьма! Меня больше всего развлекали сообшения их баг-трекера, типа: "поздравляем! вы 1541-й пользователь, сообщивший об этом баге!" Класс.

Я немного обобщу впечателения о работе с java. Веб-фреймворкойв действительно есть, есть и хорошо документированные. Но не всякий веб-сервер тянет всякий фреймворк при тех же самых бубноплясках. Для JEE в целом принцип "Write Once Run Everywhere" соблюдается довольно слабо (читай не соблюдается).
Для JSE с переносимостью проблем действительно мало, однако писать полноценные GUI - приложения под десктоп, используюя открытые средства разработки почти невозможно (только не нужно говрить что в нетбинсе тоже можно баттоны на форму кидать - намаялся). Так что или ручками медитируем с лэйаут менеджерами (так я делал) или смотрим платные продукты (так я не делал).
Работа с БД, как правило, радует. Библиотека для джавы крайне богатая. Можно найти готовые решения под очень многие задачи.
Сам язык (java) оставляет двойственное впечатление. С одной стороны, кажется, там сделано все для повешения надежности кода, с другой стороны, язык добольно жесткий, топорный (нет функций, нет анонимных массивов, передача типа как объкета - можно, но муторно и т.д.). Да, можно использовать java и только как платформу, не прибегая к самому языку (см scala, clojure, jython, jruby, groovy, kava, etc).
Про производительность... Сановцы в свое время много копий поломали доказывая и придумывая искусственные примеры того, что java в xyz раз выполняется быстрее, чем приложения написанные на C (или иных нативных приложений). Если пример не искусственный, то это конечно не так, однако, от java какой-то безумной производительности требуют редко, а для своих задач ее производительности, как правило, более чем достаточно. Вообще, по сравнению с другими системами байт-компиляции (не считая .net, конечно, но это отдельная история, заточенная под единственную платформу) java многих опережает. С масштабируемостью дела обстоят еще лучше.
Резюме. Пользоваться java можно, иногда и нужно, но фанатеть от нее не стоит ;).


 
Anatoly Podgoretsky ©   (2010-11-09 13:57) [78]

> Kostafey  (09.11.2010 13:51:17)  [77]

Просто ты не видел вертолета с усами.


 
Alex Konshin ©   (2010-11-09 14:12) [79]

Батоны на форму кидать теперь гораздо лучше в Eclipse c установленым WindowsBuilder. Netbeans на дух не перевариваю, особенно после того, как попытался сделать что-нибудь сложнее Hello world на JavaFX.


 
tesseract ©   (2010-11-09 14:19) [80]


> Дайте мне десяток!


См Ebay.com :-)



Страницы: 1 2 3 4 вся ветка

Текущий архив: 2011.03.27;
Скачать: CL | DM;

Наверх




Память: 0.66 MB
Время: 0.015 c
2-1293457941
Тимоха111
2010-12-27 16:52
2011.03.27
case + pagecontrol, ordinal type required


1-1249831819
dmitry_12_08_73
2009-08-09 19:30
2011.03.27
Как скопировать клиентскую область окна в bitmap


3-1255705719
IOrist
2009-10-16 19:08
2011.03.27
Как отобразить поля в гриде без гемора?


15-1292196119
semjuel
2010-12-13 02:21
2011.03.27
Нужен компонент.....


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