Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Собссно вопрос, как правильно сделать

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

у меня всё это вылетает скажем так, параллельно это круто, но сторонний сервис валится типа ту мени реквестс. да и мне столько не надо.

ну и вопрос, как мне заставить эти футуры выстреливать порционно. хотя бы.
я могу впилить Thread.sleep(t) внутрь форыча и будет то, что я хочу. Но мне что-то подсказывает, что есть более правильное решение.
25 мар 19, 09:44    [21842439]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
сторонний сервис (который тоже футуру возвращает)
http сервис что возвращает?
25 мар 19, 09:49    [21842445]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
    repository.findAllBySomeAttrs(Seq(attrA, attrB)).map {
      _.foreach { res => someService.inquiry(res.data) }
    }


вот вот это вот:
someService.inquiry(res.data)
возвращает футуру и фигачит мешок потоков в параллели которые параллельно же долбятся на удаленный сервис.

форыч можно заменить на мап если сильно жгет что возвращает юнит
25 мар 19, 09:53    [21842451]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Petro123
andreykaT
сторонний сервис (который тоже футуру возвращает)
http сервис что возвращает?

он возвращает какой-то объект который кладется в базу. или не кладется если не возвращает.

это задание для шедулера.
25 мар 19, 09:53    [21842452]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
Future должна предоставить тебе готовый результат. Если тебе еще надо куда-то сходить
чтобы его уточнить - то это хреновый Future и неправильно ты задизайнил.
25 мар 19, 11:17    [21842534]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
мне от футуры вообще ничего не надо. мне надо чтоб у меня всё исполнилось в одном потоке последовательно вот и всё.
25 мар 19, 11:46    [21842562]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
Капец ты противоречивый Определись что тебе. Мультипоточка или event-driven.
25 мар 19, 11:52    [21842568]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
мне от футуры вообще ничего не надо. мне надо чтоб у меня всё исполнилось в одном потоке последовательно вот и всё.
foreach в одном потоке
25 мар 19, 12:04    [21842593]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
у меня есть вызов, он возвращает лист футур
чем плохо в одном потоке синхронно ждать результаты сервиса?
25 мар 19, 12:06    [21842598]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
betelgeizex
Member

Откуда:
Сообщений: 46
https://notepad.mmakowski.com/Tech/Scala Futures on a Single Thread

это не оно?
25 мар 19, 12:46    [21842674]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
betelgeizex
https://notepad.mmakowski.com/Tech/Scala Futures on a Single Thread

это не оно?

Правильно. Для выполнения Future у тебя должен быть ExecutionContext, по дефолта это форкджойн пул, тебе надо создать однопоточный экзекьютор. ExecutionContext это Аля паттерн стратегия для многопоточных вычислений в скала.
А по православному надо взять Task из scalaz или monix или zio. А код должен ожидать некую монаду, описывающую вычисления, так ты сможешь не только описать стратегию, но и вызвать выполнение когда угодно и даже резать код. В случае future исполнение начинается сразу и ты не сможешь их реюзать
25 мар 19, 20:26    [21843147]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
При слове "монада" никому не стало плохо в аудитории?

Это знаешь как прийти в ПТУ и электро-механикам читать лекцию о квантовой механике :)) Ну правда зачем?
25 мар 19, 20:48    [21843177]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Тебе жалко штоле пусть будет монада. Говори проще просто. Монада это такая обёртка вокруг объекта которая даёт тебе выстраивать некую последовательность действий. Вот и все. Или ты думаешь что в ПТУ только отсталые учатся?
25 мар 19, 22:52    [21843251]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Petro123
andreykaT
у меня есть вызов, он возвращает лист футур
чем плохо в одном потоке синхронно ждать результаты сервиса?

Ты про асинк авайт? Или про онкомплит? Онкомплит да, тут всё решает. Ну почти. У тебя может запустить шедулер мешок задач и они будут бежать параллельно. Впрочем это лучше чем фейерверк потоков в любом случае. Как сделать чтоб шедулер не смог запустить таску ещё раз пока все активности предыдущей не закончились я пока не откопал
25 мар 19, 22:56    [21843255]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
fixxer
Member

Откуда:
Сообщений: 706
Petro123
andreykaT
у меня есть вызов, он возвращает лист футур
чем плохо в одном потоке синхронно ждать результаты сервиса?


Ожиданием ты занимаешь поток, который мог бы делом заняться.
25 мар 19, 23:23    [21843275]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
fixxer
Ожиданием ты занимаешь поток, который мог бы делом заняться.
правильно. Значит нужно всего лишь два потока, чтобы освободить основной.
Ни 10, ни пять, ни пул потоков. А всего фоновый поток и в нем цикл for к примеру.
Это исходя из ТЗ.
26 мар 19, 06:59    [21843361]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
andreykaT
Тебе жалко штоле пусть будет монада. Говори проще просто. Монада это такая обёртка вокруг объекта которая даёт тебе выстраивать некую последовательность действий. Вот и все. Или ты думаешь что в ПТУ только отсталые учатся?

Ну дай бох.
26 мар 19, 11:03    [21843510]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
короче, сделал актора, всё-равно на плее проект а плей на акке, актор одним концом читает данные из базы в очередь по онкомплиту, набивает очередь, как только очередь набилась, сам себе кидает ивент для того чтоб обработать очередь где она тоже в онкомплите поштучно обрабатывается, а когда обработает, и очередь кончается, шедулит первый ивент через какой-то период времени (аккасистем.шедуле) и снова его кидает и так по кругу. и всё получается в одном потоке. и задачи друг на друга не наслаиваются. правда, мне кажется, что костыль.
26 мар 19, 11:20    [21843529]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT,
Ну если нужна очередность, а не параллельность то все верно.
И очередь тоже лишняя теоретически. Но практически зависит от фреймворка.
26 мар 19, 11:39    [21843551]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
Дык тема топика - другая. Это - философия Scala/Play. Надо курить смыслы тамошних фреймворков.
Зачем так сделано. Какие там best-practices.
26 мар 19, 12:00    [21843572]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
mayton
Дык тема топика - другая. Это - философия Scala/Play. Надо курить смыслы тамошних фреймворков.
Зачем так сделано. Какие там best-practices.

Согласен.
Но невозможно последовательную задачу делать на акторах и параллельности.
Чтобы "задачи друг на друга не наслаивались")).
Например, есть 50 растров и нужно скачать с сервисов ПАРАЛЛЕЛЬНО. Далее событие на основной поток что все 50 скачаны. Ранее не нужно ничего делать.
26 мар 19, 12:14    [21843584]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
Petro123
mayton
Дык тема топика - другая. Это - философия Scala/Play. Надо курить смыслы тамошних фреймворков.
Зачем так сделано. Какие там best-practices.

Согласен.
Но невозможно последовательную задачу делать на акторах и параллельности.
Чтобы "задачи друг на друга не наслаивались")).
Например, есть 50 растров и нужно скачать с сервисов ПАРАЛЛЕЛЬНО. Далее событие на основной поток что все 50 скачаны. Ранее не нужно ничего делать.

Да. Но Андрейка нам поставил задачу в терминах "футуры", "форыч". Что мы можем с этого вынести?
Есть просто его персональные пожелания.
26 мар 19, 12:23    [21843598]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
потому что в плее всё возвращает футуры. ну, практически всё. принтлн не возвращает.
26 мар 19, 12:38    [21843625]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
я читаю с базы - получаю футуру. иду с этими данными на вебклиент - снова получаю футуру. сохраняю результат - и тут футура.
причем вторая не будет работать без данных первой а третья без второй. выходит матрёшка.
26 мар 19, 12:40    [21843627]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
Чортова реактивность....
26 мар 19, 12:43    [21843632]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
у меня всё это вылетает скажем так, параллельно Картинка с другого сайта. это круто, но сторонний сервис валится типа ту мени реквестс. да и мне столько не надо.
поподробнее)
26 мар 19, 12:55    [21843644]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
andreykaT
короче, сделал актора, всё-равно на плее проект а плей на акке, актор одним концом читает данные из базы в очередь по онкомплиту, набивает очередь, как только очередь набилась, сам себе кидает ивент для того чтоб обработать очередь где она тоже в онкомплите поштучно обрабатывается, а когда обработает, и очередь кончается, шедулит первый ивент через какой-то период времени (аккасистем.шедуле) и снова его кидает и так по кругу. и всё получается в одном потоке. и задачи друг на друга не наслаиваются. правда, мне кажется, что костыль.



Future.sequence


А вообще Akka Streams + back pressure для такой задачи подойдет лучше.
26 мар 19, 14:02    [21843755]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
dimonz80
andreykaT
короче, сделал актора, всё-равно на плее проект а плей на акке, актор одним концом читает данные из базы в очередь по онкомплиту, набивает очередь, как только очередь набилась, сам себе кидает ивент для того чтоб обработать очередь где она тоже в онкомплите поштучно обрабатывается, а когда обработает, и очередь кончается, шедулит первый ивент через какой-то период времени (аккасистем.шедуле) и снова его кидает и так по кругу. и всё получается в одном потоке. и задачи друг на друга не наслаиваются. правда, мне кажется, что костыль.



Future.sequence


А вообще Akka Streams + back pressure для такой задачи подойдет лучше.



На мой дилетантский взгляд типа как-то так:

 
import akka.actor._
import akka.stream._
import akka.stream.scaladsl.{Keep, Sink, Source}

import scala.concurrent.{Await, Future}
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global

implicit val system = ActorSystem("System")
implicit val materializer = ActorMaterializer()


// remote service mock
def remoteServiceResult(i: Int) = Future(i)

// Типа результат локального асинхронного чего-то там как List[Future[Int]]
val fList: Seq[Future[Int]] = (1 to 10).map { i =>  Future(i) }.toList

// Дожидаемся  результата
val syncLocalResult: Seq[Int] = Await.result(Future.sequence(fList),10 seconds)

// Стримом окучиваем удаленный сервис с ограничением 2 запроса/сек
val remoteServiceAsyncResult: Future[Seq[Int]] = 
  Source
    .fromIterator(() => syncLocalResult.toIterator)
    .throttle(2, 1 second) // Ограничить скорость 2 запроса/сек
    .map{ i =>
      // Тут на свое усмотрение работаем с запросом к сервису (в данном случае синхронно, чтобы на выходе стрима было Future[Seq[Int]])
      // Хотя можно отложить ожидание на потом и получить Future[Seq[Future[Int]]]
      Await.result(remoteServiceResult(i), 10 seconds)
    }
    .toMat(Sink.collection)(Keep.right).run()

 
26 мар 19, 14:47    [21843822]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
dimonz80
с ограничением 2 запроса/сек
это зачем?
Я понимаю ещё, ограничить количество потоков или загрузку процессора.
А тут?
26 мар 19, 14:53    [21843833]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
Petro123
dimonz80
с ограничением 2 запроса/сек
это зачем?
Я понимаю ещё, ограничить количество потоков или загрузку процессора.
А тут?


А чего нам самих себя ограничивать в потоках? У нас все в порядке))) Проблема с удаленным сервисом
автор
но сторонний сервис валится типа ту мени реквестс


Наша задача врубить троттлинг а там акка пусть сама ресурсами рулит.
26 мар 19, 14:59    [21843846]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
dimonz80
Petro123
пропущено...
это зачем?
Я понимаю ещё, ограничить количество потоков или загрузку процессора.
А тут?


А чего нам самих себя ограничивать в потоках? У нас все в порядке))) Проблема с удаленным сервисом
автор
но сторонний сервис валится типа ту мени реквестс


Наша задача врубить троттлинг а там акка пусть сама ресурсами рулит.




А хотя для ожидания удаленного сервиса неплохо бы отдельный тред пул для акки сконфигурить
26 мар 19, 15:02    [21843858]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
dimonz80
А чего нам самих себя ограничивать в потоках? У нас все в порядке))) Проблема с удаленным сервисом
про сервис автор молчит.
Ты тоже не сказал, зачем воткнул ограничение.
26 мар 19, 15:09    [21843869]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
Petro123
dimonz80
А чего нам самих себя ограничивать в потоках? У нас все в порядке))) Проблема с удаленным сервисом
про сервис автор молчит.
Ты тоже не сказал, зачем воткнул ограничение.



Может я неверно постановку вопроса понял. Но видится мне что проблема в потопе удаленного сервиса и с нашей стороны надо умерить аппетит.

andreykaT
Собссно вопрос, как правильно сделать

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

у меня всё это вылетает скажем так, параллельно это круто, но сторонний сервис валится типа ту мени реквестс. да и мне столько не надо.

ну и вопрос, как мне заставить эти футуры выстреливать порционно . хотя бы.
я могу впилить Thread.sleep(t) внутрь форыча и будет то, что я хочу. Но мне что-то подсказывает, что есть более правильное решение.


Ждем ТСа. Пусть внесет ясность в постановку задачи
26 мар 19, 15:16    [21843883]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
dimonz80,
Да.
Не должен падать рест сервис по ерунде)
26 мар 19, 15:34    [21843927]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
да, всё верно. футура листа данных начинает его мапить в вебклиент, который конечно же тоже возвращает футуру, итого пробегает цикл неблокируемо, создающий набор футур от вебклиента, которые ессно в бэкграунде сразу же и стреляют фейерверком из всех стволов на все возможные потоки которые пулл ему выдал. а удаленный вебсервис имеет ограничение по количеству запросов параллельных с одного адреса. скажем, в параллели выстреливает 8 запросов из них 2 проходит, шесть фейлит с ошибкой тумениреквестс, следующим прогоном мне залетает уже 6 запросов из них 4 валится, далее, 4 ну и вы поняли. оно работает но не очень. сделай изначально последовательно - все 8 за проход бы прошлись.

(зы если что это изначальная ситуация была)
26 мар 19, 15:36    [21843930]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
фейерверком из всех стволов
так и надо
andreykaT
выстреливает 8 запросов
веб сервис не способен отработать 8 запросов?
26 мар 19, 15:42    [21843938]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT,
"Не ломай клиент под импотентный сервис"(с)
26 мар 19, 15:43    [21843939]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
Да. Необходимость дросселя (throttle) под вопросом. Я считаю что мы должны консьюмить на максимально
возможной скорости. Будем успевать обрабатывать или нет это уже второй вопрос.
26 мар 19, 15:44    [21843940]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
mayton
Да. Необходимость дросселя (throttle) под вопросом. Я считаю что мы должны консьюмить на максимально
возможной скорости. Будем успевать обрабатывать или нет это уже второй вопрос.


Ага, и городить навороченного потребителя с политиками повторного опроса, километрами настроек и т.п., которого отладим до приемлемого состояния к 4 кварталу следующего года))
26 мар 19, 16:03    [21843965]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Petro123
andreykaT
фейерверком из всех стволов
так и надо
andreykaT
выстреливает 8 запросов
веб сервис не способен отработать 8 запросов?

это не мой вебсервис, я не знаю. может и не может. а может просто не хотят.
26 мар 19, 16:15    [21843978]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5044
andreykaT, неужели в скале нет примитивного fixedThreadPool`а?
26 мар 19, 16:21    [21843983]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
dimonz80
Member

Откуда:
Сообщений: 189
Озверин
andreykaT, неужели в скале нет примитивного fixedThreadPool`а?



Keep calm and use Java
26 мар 19, 16:40    [21844008]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
это не мой вебсервис, я не знаю. может и не может. а может просто не хотят.
ты хотя бы скрин ошибки показал.
То есть два клиента не могут работать одновременно?
Это как?
26 мар 19, 16:46    [21844011]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Озверин
andreykaT, неужели в скале нет примитивного fixedThreadPool`а?
ТС с play у нас единственный.
А скалу наверно тормозить в однопоточность идиотская затея.
"клиент не должен делать следующий запрос без ответа предыдущего"))) LOL
26 мар 19, 16:50    [21844017]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
Imho весь топик не туда, так как автор не так понял ошибки веб сервиса.
26 мар 19, 16:51    [21844019]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5044
andreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.
26 мар 19, 16:55    [21844025]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Озверин
Member

Откуда: Ростов-на-Дону
Сообщений: 5044
Озверин
andreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.


https://www.playframework.com/documentation/2.7.x/ThreadPools
26 мар 19, 16:55    [21844026]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
dimonz80
mayton
Да. Необходимость дросселя (throttle) под вопросом. Я считаю что мы должны консьюмить на максимально
возможной скорости. Будем успевать обрабатывать или нет это уже второй вопрос.


Ага, и городить навороченного потребителя с политиками повторного опроса, километрами настроек и т.п., которого отладим до приемлемого состояния к 4 кварталу следующего года))

Я этого не говорил.
26 мар 19, 16:58    [21844032]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Озверин
andreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.

так я в итоге так и сделал через актор с блокинг-кью. ну мне кажется это костылина. хотя народ говорит что если мне надо то что мне надо то сойдет.

но тут бы в крайности не впадать. ты можешь и пропихнуть тредпул с одним потоком, например, или асинкавайт сделать. вопрос скорее - насколько это верно в принципе.
26 мар 19, 17:01    [21844036]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
Petro123
andreykaT
это не мой вебсервис, я не знаю. может и не может. а может просто не хотят.
ты хотя бы скрин ошибки показал.
То есть два клиента не могут работать одновременно?
Это как?

могут. это внутренний сервис, для ограниченного числа клиентов. да. оно вернет 429 после определенного количества параллельных запросов с одного адреса. он такой какой он есть. он константа. ну вот так вот да. я не пойму что удивляет, а если у меня начнет бомбить скажем ну ладно не 8 запросов, а 80 или 800. мне всё же кажется, надо иметь какой-то инструмент ограничения подобного поведения. и всего то.
26 мар 19, 17:04    [21844039]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT
могут. это внутренний сервис,
ты не ответил.
Сервис один для 10 клиентов?
26 мар 19, 17:06    [21844041]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
да. типа того. не 10. на порядок больше (порядок это один ноль)
26 мар 19, 17:16    [21844059]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT,
Блин, ну 100 клиентов это 10 одновременных запросов.
В говорите сервер пропускает только два запроса.
26 мар 19, 17:24    [21844075]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
да. от одного клиента
26 мар 19, 17:35    [21844094]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT,
Не понял.
Третий запрос максимум, это избирательно для одного?
А 100х3=300 параллельно это работает?
26 мар 19, 17:43    [21844109]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
andreykaT
Member

Откуда:
Сообщений: 1884
блин. я чот как то наверное не так говорю. ну это же очевидно. ты стучишь на сервис с какими то кредами своими, сервис знает что ты это ты. ты делаешь запрос номер один (сервис допустим, отвечает через 1000 мс), после того как ты начал делать запрос номер один, через 10мс ты делаешь запрос номер два (запрос номер один еще не закрылся). следом через 10 мс ты делаешь запрос номер три (запросы 1 и 1 еще не закрылись), и тут раз тебе прилетает 429. тебе только тебе. что там с другими клиентами тебе фиолетово они со своими кредами ходят и у них всё хорошо.
26 мар 19, 17:55    [21844124]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
andreykaT,
Понятно.
Но сам ты не пробовал проверить, что с двумя рядом та же картинка?
26 мар 19, 18:07    [21844134]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
mayton
Member

Откуда: loopback
Сообщений: 39868
andreykaT
Озверин
andreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.

так я в итоге так и сделал через актор с блокинг-кью. ну мне кажется это костылина. хотя народ говорит что если мне надо то что мне надо то сойдет.

но тут бы в крайности не впадать. ты можешь и пропихнуть тредпул с одним потоком, например, или асинкавайт сделать. вопрос скорее - насколько это верно в принципе.

Делай спокойно BlockingQueue. Для большинства кейсов его таймауты все равно меньше чем network I/O.
26 мар 19, 19:03    [21844180]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 37971
mayton,
Дык там просто очередь одна. 10 кладут в очередь и один берет.
Конечно сервис не упадет.
26 мар 19, 19:35    [21844213]     Ответить | Цитировать Сообщить модератору
 Re: И снова скала немного многопоточки  [new]
забыл ник
Member

Откуда:
Сообщений: 2614
Актеры тут ни к селу ни к городу. Как сделать правильно я сказал - подсунуть нужный экзекьютор. Можно все усложнить и посмотреть что-то готовое, гуглить rate limiter. Например вот https://github.com/sief/play-guard, правда не уверен что совсем то что нужно
27 мар 19, 00:13    [21844402]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Java Ответить