Форум: "Прочее";
Текущий архив: 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