Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];

Вниз

Почему 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.65 MB
Время: 0.007 c
2-1293698764
nza
2010-12-30 11:46
2011.03.27
фиксированные строки


2-1293272162
tanyusha333
2010-12-25 13:16
2011.03.27
Не могу решить задачу по системному программированию!


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


15-1290889921
set
2010-11-27 23:32
2011.03.27
Атрибуты на папках


1-1250980688
Ruzzz
2009-08-23 02:38
2011.03.27
Класс настроек и сохранение/загрузка XML





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский