|
|
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
забыл никЕсли вам нужно блокирующее ожидание, то акторы идут мимо вас. Это совершенно другая Concurrency model, глупо на нее смотреть с позиции sharing&Locking. +++ акторы это совершенна другая идеология, местами логична, местами идиотична.. Если человек может в ней думать и грамотно проектировать систему исходя из этой идеологии - будут какие то плюсы, если нет - будет гибрид ежа и ужа, т.е. много колючей проволоки забыл никНет такой задачи, которую обязательно нужно(и только на акторах решать) это просто еще один инструмент, где-то он подойдет лучше, где-то хуже. имхо а вот это совсем не факт. сомневаюсь, что один и тот же разработчик, может одинаково хорошо мыслить/проектировать систему в двух принципиально разных идеологиях. За исключением явно выраженных случаев психических заболеваний типа раздвоения личности ))) а использовать акторы, если не умеешь в них мыслить... проще за день сотворить самопальную очередь сообщений и обменивать ими, сколько душе угодно... не втаскивая в проект ворох проблем которые идут с АККА в одной коробке, подарочным набором (сложность отладки, сложность обработки ошибок /скажи прощай эксепшенам/, совершенно отличные способы и ограниченный набор средств для оптимизации производительности и так далее) и честно говоря, смысла в акка особого не вижу. Отдельные языки типа эрланг ... идея интересная, но гибрид эрланга и явы... колючая проволока изначально IMHO. p.s. ничего не имею против акторов как идеи, сам мыслить в них не умею, но и не встречал тех, кто бы умел. А проекты, классический ява программист + добавь немного АККА..... на мой взгляд смысл отсутствует полностью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 12:33 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Cheblin... Один из фундаментальных компонентов распределенных систем - протокол обмена... И разработчики AKKA предоставляют... протокол обмена изначально НЕ гарантирующий доставки и обработки сообщений Если человек может мыслить в идеологии: если выполнился модуль A, то следом может выполниться и модуль B... но может и не выполнятся - все хорошо А если привык к обычным языкам программирования: если выполнилась строка 11, то следом выполнится строка 12 или произошло исключение - то все плохо ((( Т.к. результат использования АККА будет кучу распределенного гуана без обработки ошибок IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 12:39 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, +1 Кому надо есть эрланг. Но это мозги совсем другие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 14:22 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Для ниасиливших есть Akka Streams, которые снаружи выглядят как вполне себе Reactive Streams или Flow из 9-ки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 16:41 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Вот этот кусок текста непонятен. https://doc.akka.io/docs/akka/current/guide/tutorial_5.html Scheduling the query timeout Since we need a way to indicate how long we are willing to wait for responses, it is time to introduce a new Akka feature that we have not used yet, the built-in scheduler facility. Using the scheduler is simple: We get the scheduler from the ActorSystem, which, in turn, is accessible from the actor’s context: getContext().getSystem().scheduler(). This needs an ExecutionContext which is basically the thread-pool that will execute the timer task itself. In our case, we use the same dispatcher as the actor by passing in getContext().dispatcher(). The scheduler.scheduleOnce(time, actorRef, message, executor, sender) method will schedule the message message into the future by the specified time and send it to the actor actorRef. Непонятно чем отличаются шедулер и диспатчер Ну и дальше там есть кусок кода: Код: java 1. 2. 3. Непонятно что случится по истечению тайм аута ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 15:44 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Как минимум разобрался с основными аргументами timeout - собсно через сколько отправится сообщение getSelf() - кому послать new CollectionTimeout() - какое сообщение отправится getContext().dispatcher() - какая-то непонятная сущность getSelf() - кому сможет ответить получатель собщения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 18:22 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Код: java 1. Это что-то типа тред пула? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 18:47 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
redwhite90This needs an ExecutionContext which is basically the thread-pool that will execute the timer task itself ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 20:29 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
ExecutionContext - это специфичная абстракция из scala, которая протекла в akka. Суть ее в том, что код работающий с многопоточностью ожидает что в контексте будет лежать стратегия многопоточных вычслений(по дефолту fork-join pool как в java). Параметр этот имплицитный, и это позволяет изящно сменить стратегию выполнения с многопоточной на однопоточную например, или пул хранящий состояние и т.д. Мощная штука ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2018, 20:33 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
забыл никExecutionContext - это специфичная абстракция из scala, которая протекла в akka. Суть ее в том, что код работающий с многопоточностью ожидает что в контексте будет лежать стратегия многопоточных вычслений(по дефолту fork-join pool как в java). Параметр этот имплицитный, и это позволяет изящно сменить стратегию выполнения с многопоточной на однопоточную например, или пул хранящий состояние и т.д. Мощная штука а как связан ExecutionContext и dispatcher ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:18 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
ExecutionContextExecutor это dispatcher Код: java 1. 2. Но тем не менее не очень понятно взаимоотношение этих сущностей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:28 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Ну и кстати как смотреть сорцы с документацией? Когда я перехожу в либу я вижу что-то типо: Декомпилированный код только. Неудобно читать. Акка на Scala написана - в этом причина? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2018, 15:33 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
fixxerredwhite90Акка на Scala написана - в этом причина? Как бы да. ExecutionContext.scala То есть если мне скала не сдалась, то на Акка мне суждено страдать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2018, 00:34 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Какая же у тебя каша в голове)) Leonid Kudryavtsevпротокол обмена изначально НЕ гарантирующий доставки и обработки сообщений Ни один протокол не гарантирует доставку (гуглить задача о двух генералах) и уж тем более протокол не может гарантировать обработку это вообще не его задача. Leonid KudryavtsevЕсли человек может мыслить в идеологии: если выполнился модуль A, то следом может выполниться и модуль B... но может и не выполнятся - все хорошо А если привык к обычным языкам программирования: если выполнилась строка 11, то следом выполнится строка 12 или произошло исключение - то все плохо ((( Т.к. результат использования АККА будет кучу распределенного гуана без обработки ошибок Какие модули, какие строки, хоспади? Это обычная асинхронная обработка, как в любых других языках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 00:40 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Ищущий ЗнанияНи один протокол не гарантирует доставку (гуглить задача о двух генералах) и уж тем более протокол не может гарантировать обработку это вообще не его задача. Вы как-то очень не к месту ввернули сюда эту задачу. Это парадокс принятия решения. В условиях плохой связи. И к данному топику он имеет мало отношения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 09:59 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Ищущий ЗнанияКакие модули, какие строки, хоспади? Это обычная асинхронная обработка, как в любых других языках. разверните мысль. В akka всё как и везде? А то как то голословно и слабо написали) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 11:46 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Вот, свежак совсем - очень неплохое high level overview что такое akka https://info.lightbend.com/rs/558-NCX-702/images/COLL-white-paper-akka-A-to-Z.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 13:55 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
На Хабре вышла статья https://habrahabr.ru/company/piter/blog/353496/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2018, 19:06 |
|
||
|
Изучаю akka
|
|||
|---|---|---|---|
|
#18+
Ищущий Знания Leonid Kudryavtsevпротокол обмена изначально НЕ гарантирующий доставки и обработки сообщений Ни один протокол не гарантирует доставку (гуглить задача о двух генералах) и уж тем более протокол не может гарантировать обработку это вообще не его задача. Транспортные протоколы с гарантией доставки или доставят сообщение или сообщат ошибку. В крайнем случае - timeout. Если в протоколе ожидается обработка на другой стороне и получение ответа, то будет или результат или ошибка. В AKKA afaik в большинстве случаев генерация ответного сообщения - на ответственности вызываемого модуля. Если забыли/не_получилось - ответного сообщения просто не будет. Вызывающий модуль может ждать ответа до следующего ребута системы. Про автоматическое отслеживание [например таймаут] на уровне библиотеки и говорить не стоит. Нет его. Ищущий ЗнанияКакие модули, какие строки, хоспади? Это обычная асинхронная обработка, как в любых других языках. См. выше. В нормальной Java или гарантированна обработка или гарантирован эксепшен. В AKKA - нет. Или ВСЕ вызовы через AKKA нужно обрамлять своим кодом отслеживающих ошибок или говорить об обработки ошибок вообще не приходится. Но если обрамлять ВСЕ - то тогда нафига оно вообще нужно? Ну и синтаксис стандартных exception в AKKA afaik полностью убит, что тоже не делает обработку ошибок простой задачей. Насчет обычной асинхронной обработки - асинхронная обработка в обычных приложениях, вещь совершенно НЕ обычная и обычно инкапсулирована ))) в отдельном небольшом модуле/программном коде. Где, ясное дело, с теми же проблемами иногда приходится сталкиваться. НО в отдельно взятом модуле. Если же пользоваться AKKA, то это нужно делать и держать в голове всегда и везде. === Банальная задача - желание сделать LRU кэшь для акторов, что бы когда акторов определенного типа становится слишком много, самые старые умирали. Убивая актор, мы никак не можем проверить, есть ли в очереди не обработанные сообщения для данного актора. А если тупо убьем актор, то пославший сообщения никогда ответа не дождется. Но в принципе, imho любое убийство актора автоматом приводит к данной проблеме. Т.ч. получаем нормальное средство программирование, где создать актор можно без проблем, а вот корректно убить его, крайне тяжело. Со стороны пославшего не легче. Даже если пославший модуль определит наступление timeout'у, у него нет никаких возможностей повлиять [terminate] на обработку созданных им сообщений. Да и просто понять, в каких акторах сейчас происходит обработка которую он инициировал. В результате может получится полная ерунда, когда в попытках сделать реально масштабируемую систему, которая одновременно понимает, что же и где происходит - нужно руками переписывать и дублировать почти все возможности предоставляемые AKKA. afaik Возможно я что-то не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 09:12 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2122122]: |
0ms |
get settings: |
13ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 208ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...