powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / И снова скала немного многопоточки
25 сообщений из 60, страница 2 из 3
И снова скала немного многопоточки
    #39791440
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTу меня всё это вылетает скажем так, параллельно
это круто, но сторонний сервис валится типа ту мени реквестс. да и мне столько не надо.поподробнее)
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791511
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTкороче, сделал актора, всё-равно на плее проект а плей на акке, актор одним концом читает данные из базы в очередь по онкомплиту, набивает очередь, как только очередь набилась, сам себе кидает ивент для того чтоб обработать очередь где она тоже в онкомплите поштучно обрабатывается, а когда обработает, и очередь кончается, шедулит первый ивент через какой-то период времени (аккасистем.шедуле) и снова его кидает и так по кругу. и всё получается в одном потоке. и задачи друг на друга не наслаиваются. правда, мне кажется, что костыль.


Future.sequence


А вообще Akka Streams + back pressure для такой задачи подойдет лучше.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791555
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimonz80andreykaTкороче, сделал актора, всё-равно на плее проект а плей на акке, актор одним концом читает данные из базы в очередь по онкомплиту, набивает очередь, как только очередь набилась, сам себе кидает ивент для того чтоб обработать очередь где она тоже в онкомплите поштучно обрабатывается, а когда обработает, и очередь кончается, шедулит первый ивент через какой-то период времени (аккасистем.шедуле) и снова его кидает и так по кругу. и всё получается в одном потоке. и задачи друг на друга не наслаиваются. правда, мне кажется, что костыль.


Future.sequence


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


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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
 
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()

 
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791565
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80
Код: java
1.
с ограничением 2 запроса/сек

это зачем?
Я понимаю ещё, ограничить количество потоков или загрузку процессора.
А тут?
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791575
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123dimonz80
Код: java
1.
с ограничением 2 запроса/сек

это зачем?
Я понимаю ещё, ограничить количество потоков или загрузку процессора.
А тут?

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

Наша задача врубить троттлинг а там акка пусть сама ресурсами рулит.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791582
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimonz80Petro123пропущено...
это зачем?
Я понимаю ещё, ограничить количество потоков или загрузку процессора.
А тут?

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

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



А хотя для ожидания удаленного сервиса неплохо бы отдельный тред пул для акки сконфигурить
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791591
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80А чего нам самих себя ограничивать в потоках? У нас все в порядке))) Проблема с удаленным сервисомпро сервис автор молчит.
Ты тоже не сказал, зачем воткнул ограничение.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791603
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123dimonz80А чего нам самих себя ограничивать в потоках? У нас все в порядке))) Проблема с удаленным сервисомпро сервис автор молчит.
Ты тоже не сказал, зачем воткнул ограничение.


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

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

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

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

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


Ждем ТСа. Пусть внесет ясность в постановку задачи
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791641
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80,
Да.
Не должен падать рест сервис по ерунде)
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791643
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, всё верно. футура листа данных начинает его мапить в вебклиент, который конечно же тоже возвращает футуру, итого пробегает цикл неблокируемо, создающий набор футур от вебклиента, которые ессно в бэкграунде сразу же и стреляют фейерверком из всех стволов на все возможные потоки которые пулл ему выдал. а удаленный вебсервис имеет ограничение по количеству запросов параллельных с одного адреса. скажем, в параллели выстреливает 8 запросов из них 2 проходит, шесть фейлит с ошибкой тумениреквестс, следующим прогоном мне залетает уже 6 запросов из них 4 валится, далее, 4 ну и вы поняли. оно работает но не очень. сделай изначально последовательно - все 8 за проход бы прошлись.

(зы если что это изначальная ситуация была)
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791651
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTфейерверком из всех стволовтак и надо
andreykaTвыстреливает 8 запросоввеб сервис не способен отработать 8 запросов?
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791652
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
"Не ломай клиент под импотентный сервис"(с)
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791653
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Необходимость дросселя (throttle) под вопросом. Я считаю что мы должны консьюмить на максимально
возможной скорости. Будем успевать обрабатывать или нет это уже второй вопрос.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791671
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonДа. Необходимость дросселя (throttle) под вопросом. Я считаю что мы должны консьюмить на максимально
возможной скорости. Будем успевать обрабатывать или нет это уже второй вопрос.

Ага, и городить навороченного потребителя с политиками повторного опроса, километрами настроек и т.п., которого отладим до приемлемого состояния к 4 кварталу следующего года))
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791679
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTфейерверком из всех стволовтак и надо
andreykaTвыстреливает 8 запросоввеб сервис не способен отработать 8 запросов?
это не мой вебсервис, я не знаю. может и не может. а может просто не хотят.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791682
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, неужели в скале нет примитивного fixedThreadPool`а?
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791702
dimonz80
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОзверинandreykaT, неужели в скале нет примитивного fixedThreadPool`а?


Keep calm and use Java
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791704
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTэто не мой вебсервис, я не знаю. может и не может. а может просто не хотят.ты хотя бы скрин ошибки показал.
То есть два клиента не могут работать одновременно?
Это как?
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791707
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинandreykaT, неужели в скале нет примитивного fixedThreadPool`а?ТС с play у нас единственный.
А скалу наверно тормозить в однопоточность идиотская затея.
"клиент не должен делать следующий запрос без ответа предыдущего"))) LOL
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791708
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Imho весь топик не туда, так как автор не так понял ошибки веб сервиса.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791712
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791713
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинandreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.

https://www.playframework.com/documentation/2.7.x/ThreadPools
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791719
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimonz80maytonДа. Необходимость дросселя (throttle) под вопросом. Я считаю что мы должны консьюмить на максимально
возможной скорости. Будем успевать обрабатывать или нет это уже второй вопрос.

Ага, и городить навороченного потребителя с политиками повторного опроса, километрами настроек и т.п., которого отладим до приемлемого состояния к 4 кварталу следующего года))
Я этого не говорил.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791722
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОзверинandreykaT, собственно, если чо, я про скалу ничего не знаю, и про плэей, но тут есть описание всяких тред пулов и не вижу особых проблем взять любой с фикированным размером использовать какой-нить блокинг аррэй, если надо получать exception при переполнении очереди или linkedqueue если нужна безрамерная очередь.
так я в итоге так и сделал через актор с блокинг-кью. ну мне кажется это костылина. хотя народ говорит что если мне надо то что мне надо то сойдет.

но тут бы в крайности не впадать. ты можешь и пропихнуть тредпул с одним потоком, например, или асинкавайт сделать. вопрос скорее - насколько это верно в принципе.
...
Рейтинг: 0 / 0
И снова скала немного многопоточки
    #39791725
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andreykaTэто не мой вебсервис, я не знаю. может и не может. а может просто не хотят.ты хотя бы скрин ошибки показал.
То есть два клиента не могут работать одновременно?
Это как?
могут. это внутренний сервис, для ограниченного числа клиентов. да. оно вернет 429 после определенного количества параллельных запросов с одного адреса. он такой какой он есть. он константа. ну вот так вот да. я не пойму что удивляет, а если у меня начнет бомбить скажем ну ладно не 8 запросов, а 80 или 800. мне всё же кажется, надо иметь какой-то инструмент ограничения подобного поведения. и всего то.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / И снова скала немного многопоточки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]