Твиттер например, и фейсбук на Ц++ наверное уже на большую половину написан.Komissar wrote:и какие реальные примеры?Zorkus wrote:Есть прикольная книжка от инженегров твиттера (meap so far), Big Data называется. Если не читали, советую. Там любопытные вещи пишут об этом в том числе.crypto5 wrote:Им наверное не нужно запускать в бекграунде и стопать запросы выполняющиея часами.Komissar wrote:а вот я думаю: как же кучу могучих сайтов слабали на PHP и RoR, не заморачиваясь тонкостями многопоточности?
все, что я слышал - от индусов
1. был хороший сайт на ПХП
2. привлек тысячи и тысячи юзеров
3. в какой-то момент стал тормозить, и начальство наняло Великий Индусский Консалтинг (ВИК)
4. ВИК все тщательно проанализировал и рекомендовал все переписать на Джаву с начала и до забора
..
...
....
10. (5 лет прошло) ВИК все еще пасется работает на проекте, но воз и ныне там, а пока для юзеров держат старый ПХП-сайт.
Java ThreadPoolExecutor - достучаться до working threads
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Java ThreadPoolExecutor - достучаться до working threads
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Java ThreadPoolExecutor - достучаться до working threads
Вообще непонятно о чем тут речь - уверен, что в конечном итоге автор повесит запись в коллекцию и удаление из коллекции в beforeExecute/afterExecute.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
Нет, ну я про таких конечно не говорю. Я про примеры нормальных проектов, которые развиваются по как раз умной нормальной схеме (имхо):Komissar wrote:и какие реальные примеры?Zorkus wrote:Есть прикольная книжка от инженегров твиттера (meap so far), Big Data называется. Если не читали, советую. Там любопытные вещи пишут об этом в том числе.crypto5 wrote:Им наверное не нужно запускать в бекграунде и стопать запросы выполняющиея часами.Komissar wrote:а вот я думаю: как же кучу могучих сайтов слабали на PHP и RoR, не заморачиваясь тонкостями многопоточности?
все, что я слышал - от индусов
1. был хороший сайт на ПХП
2. привлек тысячи и тысячи юзеров
3. в какой-то момент стал тормозить, и начальство наняло Великий Индусский Консалтинг (ВИК)
4. ВИК все тщательно проанализировал и рекомендовал все переписать на Джаву с начала и до забора
..
...
....
10. (5 лет прошло) ВИК все еще пасется работает на проекте, но воз и ныне там, а пока для юзеров держат старый ПХП-сайт.
- первую версию пишут на коленке ночью в баре (в общаге гарварда или стенфорда) на макбуке два хипстера, озаренные Идеей. Она убогая, медленная и кривая, но идея есть, люди привлекаются. Пишут на том, что знают и на чем быстрей - джанга, RoR, php, whatever. Показали инвестору, получили денежку, отметили, поехали дальше.
- вторую версию они пишут с привлечением некоторого числа людей, кому раздали акций по чуть-чуть. В компании уже десятки народа, работа кипит, сайт ползет вверх, о нем пишут, юзерная база растет.
- в некоторый момент старый код на этих самых php/джанге/рельсах начинает тормозить, + тормозить начинает все. Рентеринг, перекачка данных, кеши, сеть. Нанимаются бородатые умные дядьки, которые переписывают линуксовый драйвер сетевой для оптимизации производительности, пишут транслятор с php на С++, переписывают где на С, где на скалу, где на эрланг (не факт, что нужно, но вроде как быстрее становится), и так далее.
А писали бы сразу надежно, сурьезно и на века, на С++ или яве - работающего сайта бы не получили до сих пор, или получили бы, но когда тренд уже ушел. Это мое мнение.
Примеры - ну фейсбук и твиттер, если погуглить можно еще найти наверняка. Из российских - яндекс (имхо), Одноклассники.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
Ну, ты ж знаешь что Java кроссплатформенно и обратно совместима до тех пор, пока абстракция не потекла, а там уж как получится Я сорри, привык мыслить категориями облачных деплойментов и когда мы контролируем среду, где все крутится, мы управляем / синхронизируем апдейта явы, оракла, линукса и прочего.Интеррапт wrote:Я заикался про reflection на предидущей - автор ответил, что нет. И это вполне разумно, что нет. Непонятно, как переписывать за 5 минут, если допустим этот код идет как компонента с какой-то библиотекой для вашего кастомера. И он решит апгрейднуть версию Джавы. И все накроется медным тазом. Это не считая того, что нужно каким-то образом помнить, где ты чего через reflection делал и при апргрейде Джавы - инспектировать все свои рефлектные извращения на предмет соответствия.Zorkus wrote: Если единственная проблема автора в том, что нужен доступ к этой коллекции, а злые дизайнеры j.u.c. не открыли ее в паблик, то в чем проблема, через reflection, setAccessible(true) и вперед. Будет работать всегда и без всякого геморроя и оверхеда за исключением двух случаев:
1) прога работает в jvm с суперстрогим security manager, которые не дает дергать через reflection поля. Я в реальности такого не встречал ни разу.
2) в следующем JDK структура этого пуля изменится. Ну и черт с ним, во время апгрейда переписать за 5 минут на массив или чего там. Я считаю, юзать приватные апи такие вещей как j.u.c. вполне нормально и цивильно.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
+1. я бы так и делал.Интеррапт wrote:Вообще непонятно о чем тут речь - уверен, что в конечном итоге автор повесит запись в коллекцию и удаление из коллекции в beforeExecute/afterExecute.
-
- Уже с Приветом
- Posts: 64875
- Joined: 12 Jul 2002 16:38
- Location: г.Москва, ул. Б. Лубянка, д.2
Re: Java ThreadPoolExecutor - достучаться до working threads
именно на яве и написано большинство дохлых сайтов.Zorkus wrote:
А писали бы сразу надежно, сурьезно и на века, на С++ или яве - работающего сайта бы не получили до сих пор, или получили бы, но когда тренд уже ушел. Это мое мнение.
Примеры - ну фейсбук и твиттер, если погуглить можно еще найти наверняка. Из российских - яндекс (имхо), Одноклассники.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Java ThreadPoolExecutor - достучаться до working threads
Все-равно боязно, можно просто забыть, где и чего рефлексировал, особенно на проектах побольше чем Hello World. Ну или самому какие-то compile-time аннотации писать и помечать ими метод в котором использовал рефлексии с параметром указывающим, на какой версии Java этот метод был протестирован.Zorkus wrote: Ну, ты ж знаешь что Java кроссплатформенно и обратно совместима до тех пор, пока абстракция не потекла, а там уж как получится Я сорри, привык мыслить категориями облачных деплойментов и когда мы контролируем среду, где все крутится, мы управляем / синхронизируем апдейта явы, оракла, линукса и прочего.
А то вдруг они вообще нафиг уберут все эти коллекции или имплементацию куда-нибудь в native И тогда переписка займет явно не 5 минут.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
Да ну какие, например? Именно сайтов, именно дохлых, и именно на яве? Если брать приличные проекты? Из первой тридцадки рейтинга алексы например если смотреть, на яве много чего, но дохлого там мало.Komissar wrote:именно на яве и написано большинство дохлых сайтов.Zorkus wrote:
А писали бы сразу надежно, сурьезно и на века, на С++ или яве - работающего сайта бы не получили до сих пор, или получили бы, но когда тренд уже ушел. Это мое мнение.
Примеры - ну фейсбук и твиттер, если погуглить можно еще найти наверняка. Из российских - яндекс (имхо), Одноклассники.
Гугл? С++, ява, еще наверное много чего. Амазон? Всего намешано, много на С написано, есть на перле код, ява тоже конечно есть. Фейсбук - php and C++, твиттер - руби и скала, ибей - опять таки там зоопарк дикий технологий но да, на яве и оракле много чего, как мне рассказывали. яндекс- движок оригинальный на С++, фронденд на xslt/perl/javascript, потом для доп. сервисов уже яву стали прикручивать. Википедия - ну там особый случай, там статика сплошная, вроде там на php работает сам сайт.
В общем, по мне, ява для фронденда веб-проектов не очень, для инфраструктуры сзади - вполне и вполне хорошо. Если, конечно, пишут на индусские консалтеры
А если про более мелкие сайты говорить, то именно сайты больше как раз на php/python/ruby. На яве тупо дольше писать намного, и сама технология более мастодонтная.
-
- Уже с Приветом
- Posts: 19041
- Joined: 11 Jan 2012 09:25
- Location: CA
Re: Java ThreadPoolExecutor - достучаться до working threads
Да это все wishful thinking ... Помню драчку-собачку на одном форуме, где упорно пытались доказать какая она медленная, плохая, кривая. Да со всем последним инструментарием для performance да с грамoтными руками там можно такое сваять - что все залетает. И не только на server sideZorkus wrote:Да ну какие, например? Именно сайтов, именно дохлых, и именно на яве? Если брать приличные проекты? Из первой тридцадки рейтинга алексы например если смотреть, на яве много чего, но дохлого там мало.
https://www.youtube.com/watch?v=wOwblaKmyVw
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
http://www.insight-it.ru/masshtabiruemo ... instagram/ - вот кстати интересная статья, про инстаграмм.
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
Так я за яву полностью. В рамках ее применимостиСабина wrote:Да это все wishful thinking ... Помню драчку-собачку на одном форуме, где упорно пытались доказать какая она медленная, плохая, кривая. Да со всем последним инструментарием для performance да с грамoтными руками там можно такое сваять - что все залетает. И не только на server sideZorkus wrote:Да ну какие, например? Именно сайтов, именно дохлых, и именно на яве? Если брать приличные проекты? Из первой тридцадки рейтинга алексы например если смотреть, на яве много чего, но дохлого там мало.
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Java ThreadPoolExecutor - достучаться до working threads
вы пытаетесь руками залезть в абстракцию!Montchik wrote: Без разницы как это сделано внутри executora. Мне бы доступ к active worker threadам получить. Reflection не подходит.
в общем случае - это зло
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Java ThreadPoolExecutor - достучаться до working threads
пока ваш вариант с наследованием и выставлением наружу интерфейса какой хочется имхо самый вменяемый из того, что успели обсудить в треде )))Интеррапт wrote:Вообще непонятно о чем тут речь - уверен, что в конечном итоге автор повесит запись в коллекцию и удаление из коллекции в beforeExecute/afterExecute.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: Java ThreadPoolExecutor - достучаться до working threads
Други! С statement.cancel это был просто пример зачем можед быть надо добраться до workers threads. Другой пример - отправить сообщение на сокет, который менеджится этим worker's thread. В этом случае наследование ThreadPoolExecutor и перекрытие beforeExecute и afterExecute не поможет.
А reflection это конечно же зло. И если мне не изменяет склероз, прямое назначение его облегчить жизнь разработчикам Java IDE.
А reflection это конечно же зло. И если мне не изменяет склероз, прямое назначение его облегчить жизнь разработчикам Java IDE.
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Java ThreadPoolExecutor - достучаться до working threads
так решение и на этот случай было упомянуто. обычный publish/subscriber.Montchik wrote:Другой пример - отправить сообщение на сокет, который менеджится этим worker's thread. В этом случае наследование ThreadPoolExecutor и перекрытие beforeExecute и afterExecute не поможет.
в самом thred.run бегает бесконечный цикл, который все время считывает сообщения из shared location.
тому, кто то эти сообщения туда кладет, не нужно знать ничего ни про workers, ни про futures, ни даже executors
Code: Select all
class Worker implements Runnable{
public void run(){
while (true) {
try{
msg = SharedQueue.getNexMessage();
...
}catch(SQLException ex){
...
}
}
}
}
class SharedQueue() {
public static Message getNexMessage() {
// read from queue
}
public static void postMessage(Message msg) {
// append to queue
}
}
-
- Уже с Приветом
- Posts: 13684
- Joined: 16 Jan 2001 10:01
Re: Java ThreadPoolExecutor - достучаться до working threads
А что поможет?Montchik wrote:Другой пример - отправить сообщение на сокет, который менеджится этим worker's thread. В этом случае наследование ThreadPoolExecutor и перекрытие beforeExecute и afterExecute не поможет.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
Re: Java ThreadPoolExecutor - достучаться до working threads
Задача workerов не ожидать появления сообщения в shared location, a работу свою основную делать. Типа слушать сокет, или там данные подкачивать с какого-нибудь блумберга. Хотя идея использования shared location для "общения" с воркерами интересная. Спасибо!
-
- Уже с Приветом
- Posts: 6969
- Joined: 26 Feb 2011 17:40
Re: Java ThreadPoolExecutor - достучаться до working threads
Прям вот уже "конечно"? По скорости уже давно практически не уступает прямому вызову, по запутанности кода - есть, конечно, но не так уж чтобы совсем смерть.Montchik wrote:Други! С statement.cancel это был просто пример зачем можед быть надо добраться до workers threads. Другой пример - отправить сообщение на сокет, который менеджится этим worker's thread. В этом случае наследование ThreadPoolExecutor и перекрытие beforeExecute и afterExecute не поможет.
А reflection это конечно же зло. И если мне не изменяет склероз, прямое назначение его облегчить жизнь разработчикам Java IDE.
Не только разработчикм IDE, еще внутри разных фреймворков довольно активно используется, а так же когда надо использовать код, автор которого интерфейс продумал недостаточно (или этот интерфейс для наших нужд не подходит).
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Java ThreadPoolExecutor - достучаться до working threads
sorry за оффтоп, по работе плотно общаюсь с SIEM (security events management) системами, которые все как один написаны на Java. так там давно уже уперлись в ограничения JVM из-за которых даже на могучем "железе" производительность аховая. Я всё жду, что будут создатели их систем с этим безобразием делать? Как-то не верится что они бросятся переписывать всё на C++crypto5 wrote:Твиттер например, и фейсбук на Ц++ наверное уже на большую половину написан.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 3647
- Joined: 23 May 2010 15:10
Re: Java ThreadPoolExecutor - достучаться до working threads
а причина аховости производительности известна? на Ц++ написать тоже можно креативноFlash-04 wrote:sorry за оффтоп, по работе плотно общаюсь с SIEM (security events management) системами, которые все как один написаны на Java. так там давно уже уперлись в ограничения JVM из-за которых даже на могучем "железе" производительность аховая. Я всё жду, что будут создатели их систем с этим безобразием делать? Как-то не верится что они бросятся переписывать всё на C++crypto5 wrote:Твиттер например, и фейсбук на Ц++ наверное уже на большую половину написан.
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Java ThreadPoolExecutor - достучаться до working threads
известна. там совокупность нескольких факторов (кстати предел у всех примерно одинаков):
1. ограничения SQL БД которая используется для хранения собираемых данных. Там я смотрю есть тенденция "переползать" на облегченные версии MySQL/Postgress
2. Ограничения JVM на кол-во сетевых соединений (для коллекторов)
3. Ограничения производительносьти JVM связанные с garbage collectors. Для "правил" требуется много памяти, т.к. создается дофига динамических объектов, которые кроме того имеют малое время жизни. В итоге очень забавно смотреть на график memory allocation JVM, выглядит как пила. В итоге при росте нагрузки JVM только и занимается "сборкой мусора".
У моего любимого вендора для одного коннектора эмпирическое ограничение - всего 1,000 записей в секунду, потом коннектор становится неустойчивым и "падает". Причем "падает" не приложение, а весь JVM контейнер.
1. ограничения SQL БД которая используется для хранения собираемых данных. Там я смотрю есть тенденция "переползать" на облегченные версии MySQL/Postgress
2. Ограничения JVM на кол-во сетевых соединений (для коллекторов)
3. Ограничения производительносьти JVM связанные с garbage collectors. Для "правил" требуется много памяти, т.к. создается дофига динамических объектов, которые кроме того имеют малое время жизни. В итоге очень забавно смотреть на график memory allocation JVM, выглядит как пила. В итоге при росте нагрузки JVM только и занимается "сборкой мусора".
У моего любимого вендора для одного коннектора эмпирическое ограничение - всего 1,000 записей в секунду, потом коннектор становится неустойчивым и "падает". Причем "падает" не приложение, а весь JVM контейнер.
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 2119
- Joined: 27 Dec 1999 10:01
- Location: Воронеж -> Naperville, IL
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Java ThreadPoolExecutor - достучаться до working threads
ага, такое решение предлагается, только стоит оно...
Not everyone believes what I believe but my beliefs do not require them to.
-
- Уже с Приветом
- Posts: 4195
- Joined: 27 Apr 2011 03:43
- Location: Сергели ->Chicago
Re: Java ThreadPoolExecutor - достучаться до working threads
Извините, а это что за зверь? дайте ссыль почитать если естьFlash-04 wrote: 2. Ограничения JVM на кол-во сетевых соединений (для коллекторов)
-
- Уже с Приветом
- Posts: 63430
- Joined: 03 Nov 2004 05:31
- Location: RU -> Toronto, ON
Re: Java ThreadPoolExecutor - достучаться до working threads
ну вот тут:valchkou wrote:Извините, а это что за зверь? дайте ссыль почитать если есть
http://stackoverflow.com/questions/5437 ... latest-jav
правда к продукту который я упомянул, это не совсем как бы относится, т.к. реально там соединений должно быть меньше, хотя... в большой enterprise сети его в принципе можно достичь.
Not everyone believes what I believe but my beliefs do not require them to.