powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Изучаю akka
45 сообщений из 45, показаны все 2 страниц
Изучаю akka
    #39624335
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил расширить кругозор и поизучать akka.

Как я понял суть в том, что на akka писать многопоточный код проще, он легко масштабируется.

Правда как именно он лучше масштабируется я не понял.

Я слизал в интернетах код, который смог запустить у себя. Он выглядит примерно так:

main:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
//Как-то хитро конфигурим систему акторов
ActorSystem actorSystem = ...
//делаем ActorRef
ActorRef greeter1 = actorSystem.actorOf(springExt.props("actorBeanName"));
//В ссылку вставляем что хотим отправить и кому.
greeter1.tell(new GreetingActor.Greet("Ololo"), greeter1);
//тоже самое только есть возможность дождаться ответа.
 Future<Object> futureResult1 = Patterns.ask(greeter1, new GreetingActor.Greet("John"), timeout);




ну и сам актор:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@Override
    public void onReceive(Object message) throws Throwable {
        logger.info("instance {} Got message {}", index, message);
        if (message instanceof Greet) {
            String name = ((Greet) message).getName();
            String greet = greetingService.greet(name);
            logger.info("instance {} Respond message {}", index, greet);
            // Зачем этот getSelf() и где его можно получить?
            getSender().tell(greet, getSelf());
        } else {
            unhandled(message);
        }
    }



На данный момент есть несколько вопросов.

1. Как это всё можно отмасштабировать в рамках одной jvm?
2. Как это всё можно отмасштабировать в рамках нескольких приложений запущенных на одном компутере? какой механизм передачи сообщений будет работать?
3. Что полезно почитать по теме вообще?
4. Какую задачу посоветуете решить, чтобы пощупать технологию?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624357
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

1. Выполнение onReceive происходит на пуле потоков.
2. Для этого нужен Akka Cluster .
3. Если с английским норм, то лучше всего начинать с диссертации Joe Armstrong.
4. Любая конкурентная задача, чат, аналог твитера, инстраграма.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624373
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так понимаю акка это такая хрень типа ивентов и очередей. не?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624378
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTя так понимаю акка это такая хрень типа ивентов и очередей. не?
Нет, akka это про Модель Акторов .
...
Рейтинг: 0 / 0
Изучаю akka
    #39624617
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxer,


fixxer1. Выполнение onReceive происходит на пуле потоков.

То есть если я просто начну делать tell очень интенсивно, и сделаю onReceive медленным, то акка магически создаст ещё одного актора? я чего-то сомневаюсь
fixxer2. Для этого нужен Akka Cluster.

Надо почитать про это видимо. Но механизм передачи то какой? какая-то очередь?
fixxer3. Если с английским норм, то лучше всего начинать с диссертации Joe Armstrong.

Ну 260 страниц это уж слишком)
fixxer4.Любая конкурентная задача, чат, аналог твитера, инстраграма.

Не очень понятно. В голову сразу приходят веб сокеты. "Сервлеты" и так работают параллельно. Хотелось бы какую-то очень техническую задачу.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624660
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90fixxer1. Выполнение onReceive происходит на пуле потоков.

То есть если я просто начну делать tell очень интенсивно, и сделаю onReceive медленным, то акка магически создаст ещё одного актора? я чего-то сомневаюсь


А как связаны количество потоков и количество экземпляров актора? Никак.

redwhite90fixxer2. Для этого нужен Akka Cluster.

Надо почитать про это видимо. Но механизм передачи то какой? какая-то очередь?


По дефолту какой-то свой протокол на основе netty. Но по идее должно быть можно свое прикрутить, но это не точно.

redwhite90fixxer3. Если с английским норм, то лучше всего начинать с диссертации Joe Armstrong.

Ну 260 страниц это уж слишком)


На нет и суда нет. Читайте википедию тогда.

redwhite90fixxer4.Любая конкурентная задача, чат, аналог твитера, инстраграма.

Не очень понятно. В голову сразу приходят веб сокеты. "Сервлеты" и так работают параллельно. Хотелось бы какую-то очень техническую задачу.

А вы отличаете понятие конкурентности и параллельности? Они связаны, конечно, но не идентичны. Грубо говоря, конкурентность это понятие сферы решаемой задачи, когда у нас натурально несколько независимых источников данных и событий. Параллельность это понятие сферы решения, типа, мы тут видим несколько одинаковых по структуре объектов и считаем, что поимеем профит, если будем их обрабатывать параллельно.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624706
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxer,

авторА как связаны количество потоков и количество экземпляров актора? Никак.
напомню, что эта дискуссия начиналась с моего вопроса:

автор1. Как это всё можно отмасштабировать в рамках одной jvm?


Чтобы отмасштабировать нужно уметь подключать 2 и более актора. 1 актор == 1 поток
...
Рейтинг: 0 / 0
Изучаю akka
    #39624711
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90fixxer,

авторА как связаны количество потоков и количество экземпляров актора? Никак.
напомню, что эта дискуссия начиналась с моего вопроса:

автор1. Как это всё можно отмасштабировать в рамках одной jvm?


Чтобы отмасштабировать нужно уметь подключать 2 и более актора. 1 актор == 1 поток

Так я вам и отвечаю, что у вас путаница в голове. Актор один (или сколько надо, не зависит от потоков, зависит от состояния, которое в актор инкапсулировано), а потоков столько сколько в пуле. Масштабируется настройкой пула.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624719
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз, акторы они не про параллельность, а про конкурентность.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624726
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxerredwhite90fixxer,

пропущено...

напомню, что эта дискуссия начиналась с моего вопроса:

пропущено...


Чтобы отмасштабировать нужно уметь подключать 2 и более актора. 1 актор == 1 поток

Так я вам и отвечаю, что у вас путаница в голове. Актор один (или сколько надо, не зависит от потоков, зависит от состояния, которое в актор инкапсулировано), а потоков столько сколько в пуле. Масштабируется настройкой пула.

Какой смысл масштабировать пул если разгребать будет только один актор?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624727
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixxerТо есть если я просто начну делать tell очень интенсивно, и сделаю onReceive медленным, то акка магически создаст ещё одного актора? я чего-то сомневаюсь


Если вам нужно блокирующее ожидание, то акторы идут мимо вас. Это совершенно другая Concurrency model, глупо на нее смотреть с позиции sharing&Locking.
Нет такой задачи, которую обязательно нужно(и только на акторах решать) это просто еще один инструмент, где-то он подойдет лучше, где-то хуже.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624729
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никfixxerТо есть если я просто начну делать tell очень интенсивно, и сделаю onReceive медленным, то акка магически создаст ещё одного актора? я чего-то сомневаюсь


Если вам нужно блокирующее ожидание, то акторы идут мимо вас. Это совершенно другая Concurrency model, глупо на нее смотреть с позиции sharing&Locking.
Нет такой задачи, которую обязательно нужно(и только на акторах решать) это просто еще один инструмент, где-то он подойдет лучше, где-то хуже.

Мне ничего не нужно в плане задачи. Я просто пытаюсь врубиться зачем это нужно
...
Рейтинг: 0 / 0
Изучаю akka
    #39624735
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90
Какой смысл масштабировать пул если разгребать будет только один актор?

На эндпоинте может висеть актор, принимая сообщение из mailbox, может запустить дочерний актор, который самоуничтожится после выполнения. Для физического выполнения задачи нужно ядро процессора, акторов может быть миллион, а ядер 8, значит 8 выполняются - остальные ждут, но никакого состояния между нами не шарится, вот и весь benefit. И да, обработаться могут в различном порядке, акторная модель не про строгую последовательность, а про eventual выполнение и вызов коллбека. так понятнее?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624739
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90
Мне ничего не нужно в плане задачи. Я просто пытаюсь врубиться зачем это нужно

Зачем нужна Java если есть C# и C++?
Акторы это просто модель конкурентных вычислений, одна из. Это другой подход к написанию многопоточного кода.
...
Рейтинг: 0 / 0
Изучаю akka
    #39624746
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никredwhite90Мне ничего не нужно в плане задачи. Я просто пытаюсь врубиться зачем это нужно

Зачем нужна Java если есть C# и C++?
Акторы это просто модель конкурентных вычислений, одна из. Это другой подход к написанию многопоточного кода.

Вот поэтому и решил разобраться
...
Рейтинг: 0 / 0
Изучаю akka
    #39624760
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxerЕще раз, акторы они не про параллельность, а про конкурентность.

Можете объяснить на примере?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624822
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90fixxerЕще раз, акторы они не про параллельность, а про конкурентность.

Можете объяснить на примере?

Лучше чем Jamie Allen тяжело объяснить: The 7 Ways to Wash Dishes and the Case for Message-driven Reactive Systems .
...
Рейтинг: 0 / 0
Изучаю akka
    #39624920
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxerredwhite90пропущено...


Можете объяснить на примере?

Лучше чем Jamie Allen тяжело объяснить: The 7 Ways to Wash Dishes and the Case for Message-driven Reactive Systems .

Ну если будет один актор, то есть один тред, то как тут масштабироваться то?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624923
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никredwhite90Какой смысл масштабировать пул если разгребать будет только один актор?

На эндпоинте может висеть актор, принимая сообщение из mailbox, может запустить дочерний актор, который самоуничтожится после выполнения. Для физического выполнения задачи нужно ядро процессора, акторов может быть миллион, а ядер 8, значит 8 выполняются - остальные ждут, но никакого состояния между нами не шарится, вот и весь benefit. И да, обработаться могут в различном порядке, акторная модель не про строгую последовательность, а про eventual выполнение и вызов коллбека. так понятнее?

Ну то есть самому надо как-то дочерних акторов запускать?
...
Рейтинг: 0 / 0
Изучаю akka
    #39624969
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90
Ну если будет один актор, то есть один тред, то как тут масштабироваться то?

Так не делают системы с одним актором. Актор это единица декомпозиции, вся система строится из акторов. Акторы инкапсулируют бизнес логику и локальное состояние.

redwhite90Ну то есть самому надо как-то дочерних акторов запускать?


В этом весь поинт, образуется дерево акторов, причем порождающие акторы задают стратегию обработки ошибок, так что исключение в одном поддереве не влияет на соседнее.
...
Рейтинг: 0 / 0
Изучаю akka
    #39625006
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxer,

Сможете какую-нибудь задачу разобрать на примере акторов?
То есть с объяснением кто есть актор и в каких случаях он должен порождать других акторов, в каких случаях он должен слать сообщения другим акторам?
Как вообще один актор должен узнавать о других акторах?
...
Рейтинг: 0 / 0
Изучаю akka
    #39625063
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

Вот тут подробно описан полный пример. Разберите его и приходите с _конкретными_ вопросами.
...
Рейтинг: 0 / 0
Изучаю akka
    #39625828
Cheblin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прелесть AKKA в унификации взаимодействия отдельных частей, которые, при необходимости, можно разнести на разные машины.

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

Предпринималось множество попыток решить проблему, привести к общепринятому виду ... CORBA например. Но идеология CORBA, сделать так чтобы вызов функции, либо создание объекта выглядело одинаково вне зависимости от того локально это происходит либо удаленно, скрывая детали происходящего, потерпела крах и не получила широкого распространения и поддержки.

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

Теоретическая база AKKA, как один из способов распределения задач, существовала давно.
Нужна была только грамотная реализация.

В отличии от CORBA, AKKA не пытается ничего скрывать от своего пользователя и даже на локальном компьютере ведет себя как распределенное приложение, слегка проигрывая в производительности и эффективности обычным приложениям с прямым вызовом.

Но в момент когда потребуется распределить нагрузку на несколько компов, в AKKA достаточно при старте просто подсунуть информацию о новой сетевой конфигурации...

Один из фундаментальных компонентов распределенных систем - протокол обмена. По умолчанию AKKA использует стандартную JAVA сериализацию, которая мягко говоря не эффективна.

И разработчики AKKA предоставляют API, написать использовать свой сериализатор путем расширения базового класса.

Код: 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.
public class MyOwnSerializer extends JSerializer {

  // This is whether "fromBinary" requires a "clazz" or not
  @Override public boolean includeManifest() {
    return false;
  }

  // Pick a unique identifier for your Serializer,
  // you've got a couple of billions to choose from,
  // 0 - 40 is reserved by Akka itself
  @Override public int identifier() {
    return 1234567;
  }

  // "toBinary" serializes the given object to an Array of Bytes
  @Override public byte[] toBinary(Object obj) {
    // Put the code that serializes the object here
    //#...
    return new byte[0];
    //#...
  }

  // "fromBinary" deserializes the given array,
  // using the type hint (if any, see "includeManifest" above)
  @Override public Object fromBinaryJava(byte[] bytes,
                                         Class<?> clazz) {
    // Put your code that deserializes here
    //#...
    return null;
    //#...
  }
}



и при старте AKKA указав каким сериалайзером в каких случаях пользоваться

одним из наиболее популярных является Kryo-based serializers

Но если захочется реально высокой производительности и минимального трафика, то https://github.com/cheblin/BlackBox] BlackBox будет покруче.
...
Рейтинг: 0 / 0
Изучаю akka
    #39625857
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90забыл никпропущено...


Зачем нужна Java если есть C# и C++?
Акторы это просто модель конкурентных вычислений, одна из. Это другой подход к написанию многопоточного кода.

Вот поэтому и решил разобраться
Вот чел. из Яндекса неплохо так вводную дает.
YouTube Video
...
Рейтинг: 0 / 0
Изучаю akka
    #39625914
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblinсделать так чтобы вызов функции, либо создание объекта выглядело одинаково вне зависимости от того локально это происходит либо удаленноэтого ни у кого не вышло и никому пока не надо
Эффективность страдает.
...
Рейтинг: 0 / 0
Изучаю akka
    #39626042
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никЕсли вам нужно блокирующее ожидание, то акторы идут мимо вас. Это совершенно другая Concurrency model, глупо на нее смотреть с позиции sharing&Locking.
+++
акторы это совершенна другая идеология, местами логична, местами идиотична..

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

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

а использовать акторы, если не умеешь в них мыслить... проще за день сотворить самопальную очередь сообщений и обменивать ими, сколько душе угодно... не втаскивая в проект ворох проблем которые идут с АККА в одной коробке, подарочным набором (сложность отладки, сложность обработки ошибок /скажи прощай эксепшенам/, совершенно отличные способы и ограниченный набор средств для оптимизации производительности и так далее)

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

IMHO.

p.s. ничего не имею против акторов как идеи, сам мыслить в них не умею, но и не встречал тех, кто бы умел. А проекты, классический ява программист + добавь немного АККА..... на мой взгляд смысл отсутствует полностью
...
Рейтинг: 0 / 0
Изучаю akka
    #39626046
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheblin...

Один из фундаментальных компонентов распределенных систем - протокол обмена...
И разработчики AKKA предоставляют...

протокол обмена изначально НЕ гарантирующий доставки и обработки сообщений

Если человек может мыслить в идеологии: если выполнился модуль A, то следом может выполниться и модуль B... но может и не выполнятся - все хорошо

А если привык к обычным языкам программирования: если выполнилась строка 11, то следом выполнится строка 12 или произошло исключение - то все плохо ((( Т.к. результат использования АККА будет кучу распределенного гуана без обработки ошибок

IMHO
...
Рейтинг: 0 / 0
Изучаю akka
    #39626134
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
+1
Кому надо есть эрланг. Но это мозги совсем другие.
...
Рейтинг: 0 / 0
Изучаю akka
    #39626219
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ниасиливших есть Akka Streams, которые снаружи выглядят как вполне себе Reactive Streams или Flow из 9-ки.
...
Рейтинг: 0 / 0
Изучаю akka
    #39627998
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот этот кусок текста непонятен.
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.
   queryTimeoutTimer = getContext().getSystem().scheduler().scheduleOnce(
                timeout, getSelf(), new CollectionTimeout(), getContext().dispatcher(), getSelf()
        );



Непонятно что случится по истечению тайм аута
...
Рейтинг: 0 / 0
Изучаю akka
    #39628075
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как минимум разобрался с основными аргументами
timeout - собсно через сколько отправится сообщение
getSelf() - кому послать
new CollectionTimeout() - какое сообщение отправится
getContext().dispatcher() - какая-то непонятная сущность
getSelf() - кому сможет ответить получатель собщения
...
Рейтинг: 0 / 0
Изучаю akka
    #39628084
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
getContext().dispatcher()

Это что-то типа тред пула?
...
Рейтинг: 0 / 0
Изучаю akka
    #39628113
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90This needs an ExecutionContext which is basically the thread-pool that will execute the timer task itself
...
Рейтинг: 0 / 0
Изучаю akka
    #39628114
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ExecutionContext - это специфичная абстракция из scala, которая протекла в akka. Суть ее в том, что код работающий с многопоточностью ожидает что в контексте будет лежать стратегия многопоточных вычслений(по дефолту fork-join pool как в java).
Параметр этот имплицитный, и это позволяет изящно сменить стратегию выполнения с многопоточной на однопоточную например, или пул хранящий состояние и т.д. Мощная штука
...
Рейтинг: 0 / 0
Изучаю akka
    #39628463
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никExecutionContext - это специфичная абстракция из scala, которая протекла в akka. Суть ее в том, что код работающий с многопоточностью ожидает что в контексте будет лежать стратегия многопоточных вычслений(по дефолту fork-join pool как в java).
Параметр этот имплицитный, и это позволяет изящно сменить стратегию выполнения с многопоточной на однопоточную например, или пул хранящий состояние и т.д. Мощная штука
а как связан ExecutionContext и dispatcher ?
...
Рейтинг: 0 / 0
Изучаю akka
    #39628481
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ExecutionContextExecutor это dispatcher


Код: java
1.
2.
public interface ExecutionContextExecutor extends ExecutionContext, Executor {
}



Но тем не менее не очень понятно взаимоотношение этих сущностей
...
Рейтинг: 0 / 0
Изучаю akka
    #39628486
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и кстати как смотреть сорцы с документацией?

Когда я перехожу в либу я вижу что-то типо:



Декомпилированный код только. Неудобно читать. Акка на Scala написана - в этом причина?
...
Рейтинг: 0 / 0
Изучаю akka
    #39628743
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Акка на Scala написана - в этом причина?

Как бы да.
ExecutionContext.scala
...
Рейтинг: 0 / 0
Изучаю akka
    #39628770
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fixxerredwhite90Акка на Scala написана - в этом причина?

Как бы да.
ExecutionContext.scala

То есть если мне скала не сдалась, то на Акка мне суждено страдать?
...
Рейтинг: 0 / 0
Изучаю akka
    #39630133
Какая же у тебя каша в голове))

Leonid Kudryavtsevпротокол обмена изначально НЕ гарантирующий доставки и обработки сообщений

Ни один протокол не гарантирует доставку (гуглить задача о двух генералах) и уж тем более протокол не может гарантировать обработку это вообще не его задача.

Leonid KudryavtsevЕсли человек может мыслить в идеологии: если выполнился модуль A, то следом может выполниться и модуль B... но может и не выполнятся - все хорошо

А если привык к обычным языкам программирования: если выполнилась строка 11, то следом выполнится строка 12 или произошло исключение - то все плохо ((( Т.к. результат использования АККА будет кучу распределенного гуана без обработки ошибок


Какие модули, какие строки, хоспади? Это обычная асинхронная обработка, как в любых других языках.
...
Рейтинг: 0 / 0
Изучаю akka
    #39630175
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияНи один протокол не гарантирует доставку (гуглить задача о двух генералах) и уж тем более протокол не может гарантировать обработку это вообще не его задача.

Вы как-то очень не к месту ввернули сюда эту задачу. Это парадокс принятия решения. В условиях
плохой связи. И к данному топику он имеет мало отношения.
...
Рейтинг: 0 / 0
Изучаю akka
    #39630189
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияКакие модули, какие строки, хоспади? Это обычная асинхронная обработка, как в любых других языках.
разверните мысль.
В akka всё как и везде?
А то как то голословно и слабо написали)
...
Рейтинг: 0 / 0
Изучаю akka
    #39630227
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот, свежак совсем - очень неплохое high level overview что такое akka

https://info.lightbend.com/rs/558-NCX-702/images/COLL-white-paper-akka-A-to-Z.pdf
...
Рейтинг: 0 / 0
Изучаю akka
    #39630474
Фотография Герой дня
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Хабре вышла статья https://habrahabr.ru/company/piter/blog/353496/
...
Рейтинг: 0 / 0
Изучаю akka
    #39630590
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий Знания
Leonid Kudryavtsevпротокол обмена изначально НЕ гарантирующий доставки и обработки сообщений

Ни один протокол не гарантирует доставку (гуглить задача о двух генералах) и уж тем более протокол не может гарантировать обработку это вообще не его задача.

Транспортные протоколы с гарантией доставки или доставят сообщение или сообщат ошибку. В крайнем случае - timeout. Если в протоколе ожидается обработка на другой стороне и получение ответа, то будет или результат или ошибка.

В AKKA afaik в большинстве случаев генерация ответного сообщения - на ответственности вызываемого модуля. Если забыли/не_получилось - ответного сообщения просто не будет. Вызывающий модуль может ждать ответа до следующего ребута системы.

Про автоматическое отслеживание [например таймаут] на уровне библиотеки и говорить не стоит. Нет его.

Ищущий ЗнанияКакие модули, какие строки, хоспади? Это обычная асинхронная обработка, как в любых других языках.
См. выше.

В нормальной Java или гарантированна обработка или гарантирован эксепшен. В AKKA - нет.

Или ВСЕ вызовы через AKKA нужно обрамлять своим кодом отслеживающих ошибок или говорить об обработки ошибок вообще не приходится. Но если обрамлять ВСЕ - то тогда нафига оно вообще нужно?

Ну и синтаксис стандартных exception в AKKA afaik полностью убит, что тоже не делает обработку ошибок простой задачей.

Насчет обычной асинхронной обработки - асинхронная обработка в обычных приложениях, вещь совершенно НЕ обычная и обычно инкапсулирована ))) в отдельном небольшом модуле/программном коде. Где, ясное дело, с теми же проблемами иногда приходится сталкиваться. НО в отдельно взятом модуле. Если же пользоваться AKKA, то это нужно делать и держать в голове всегда и везде.

===

Банальная задача - желание сделать LRU кэшь для акторов, что бы когда акторов определенного типа становится слишком много, самые старые умирали. Убивая актор, мы никак не можем проверить, есть ли в очереди не обработанные сообщения для данного актора. А если тупо убьем актор, то пославший сообщения никогда ответа не дождется.

Но в принципе, imho любое убийство актора автоматом приводит к данной проблеме. Т.ч. получаем нормальное средство программирование, где создать актор можно без проблем, а вот корректно убить его, крайне тяжело.

Со стороны пославшего не легче. Даже если пославший модуль определит наступление timeout'у, у него нет никаких возможностей повлиять [terminate] на обработку созданных им сообщений. Да и просто понять, в каких акторах сейчас происходит обработка которую он инициировал.

В результате может получится полная ерунда, когда в попытках сделать реально масштабируемую систему, которая одновременно понимает, что же и где происходит - нужно руками переписывать и дублировать почти все возможности предоставляемые AKKA.

afaik Возможно я что-то не знаю.
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Изучаю akka
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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