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

Откуда:
Сообщений: 1458
собссно сабж. прикольный подход, мне даже понравился немного. но я не совсем могу понять, как он скажем так, может быть применим в классических вебсервисах?

ну да.. ну удобно если их много то можно получить декаплинг и одновременно общение через мессаджи между сервисами.. а дальше то что? )) я так понимаю, те же самые микросервисы могут общаться и иными способами между собой, всякие там эмкью и т.п...
14 сен 18, 18:41    [21675019]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7217
IMHO
Если уж изучать, то тогда хардкордно Erlang. Так сказать первоисточник.

Сталкивался с AKKA.... толи заливная рыба... толи Карузо в перепеве Рабиновича. Т.ч. если уж изучать, то подлинник.

На форуме была ветка с парой десятков страниц AKKA-срача. Но людей которые бы на нем реально кодили большие системы, как-то не наблюдается.
14 сен 18, 19:18    [21675045]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7217
andreykaT
общение через мессаджи между сервисами.

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

IMHO & AFAIK
14 сен 18, 19:20    [21675047]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 37947
Leonid Kudryavtsev
IMHO
Если уж изучать, то тогда хардкордно Erlang. Так сказать первоисточник.

Я пока неасилил. У меня было 2 попытки с наскока взять язык Эриксона но
честно говоря.... Поинты:
- если вы знаете Lisp то вам будет легче войти. Если нет - то ожидайте ломку мозга. Я лисп немного знаю.
- нет классов и структур. Есть списки и вложенные списки и record как синтаксический сахар.
- если вы умеете разворачивать циклы (и системы циклов в рекурсии) то вам зайдет язык. Иначе будет тяжко.
- отсутствуют более-менее внятные фреймворки.
- в качестве замены предлагают Elixir, который насколько я понял базируется на Erlang.
- концепция акторов если и существует то ярко не выражена. Я-бы сказал что процессы Erlang это и есть акторы но главное
преимущество не в этом а в реакции на ошибки.
- из инфо-ресурсов есть хороший канал в Телеграме где наиболее живо идет обсуждение. Остальное - тухляк.

Вобщем пока отложил на полку. До лучших времен.
14 сен 18, 19:36    [21675063]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 37947
Leonid Kudryavtsev
Сталкивался с AKKA.... толи заливная рыба... толи Карузо в перепеве Рабиновича. Т.ч. если уж изучать, то подлинник.

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

Совершенно верно. Был топик Четверговых акторов где я поднимал те-же базовые вопросы.
Помю что Дима так глубоко проникся что даже запили свой фреймворк.
14 сен 18, 20:01    [21675085]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
andreykaT
Member

Откуда:
Сообщений: 1458
я так понимаю их подход с вытянутым продюсерконсюмером подразумевает некоторую изначальную потокобезопасность и возможность скажем так, писать многопоточное приложение без оглядки на всю эту конкурентную херабору, с которой ты должен биться делая его "по классике".
14 сен 18, 22:33    [21675178]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
andreykaT
Member

Откуда:
Сообщений: 1458
...кроме того я так понял нодажс тоже основана на чем то нечто подобном?
14 сен 18, 22:42    [21675182]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
mayton
Member

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

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

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

А асинхронизм и сообщения это КМК не главное в акторах хотя тоже дает некоторые бонусы
типа неблокирующего взаимодействия.

Ну и легкие треды. КМК не треды а просто кооперативное переключение между акторами. Типа контицуаций.
14 сен 18, 22:57    [21675201]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 37947
andreykaT
...кроме того я так понял нодажс тоже основана на чем то нечто подобном?

Эээ... нет вроде. Там просто асинхронный IO выпячивался как основной бонус.
14 сен 18, 22:57    [21675202]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
забыл ник
Member

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


А зачем акку пихать в обычные вебсервисы?
Вообще можно в принципе, но тогда придется отказаться от привычного java стека(спринг хибер апп сервер) и перейти на аналоги из scala экосистемы(play, akka-http и тд) Но по большей части все эти фреймворки сами под капотом используют акку, и опускаться до такого низкоуровнего кодинга в принципе и не надо. Да и кодить на голой акке занятие суровое и беспощадное.
А вот akka-streams уже могут быть полезны и приятны в кодировании. Когда у вас есть некий pipeline, по которому должны пройти данные и каким-либо образом преобразоваться.

А так вообще на акке много чего написано, взять хотя бы тот же spark и play.
15 сен 18, 00:54    [21675332]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
забыл ник
Member

Откуда:
Сообщений: 2574
andreykaT
...кроме того я так понял нодажс тоже основана на чем то нечто подобном?

абсолютно разные вещи. Да простят меня яваскриптеры но нод унылое говно
15 сен 18, 00:55    [21675334]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
забыл ник
Member

Откуда:
Сообщений: 2574
Leonid Kudryavtsev
IMHO
Если уж изучать, то тогда хардкордно Erlang. Так сказать первоисточник.


Если для самообучения - то совет правильный. Если для практического использования(а скорее всего так и есть) - то вредный. ТС наверняка интересует JVM стек, причем тут Erlang?
15 сен 18, 00:56    [21675336]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
забыл ник
Member

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


Пока каша в голове, но и тема конечно не легкая.
Модель акторов - одна из моделей конкурентного программирования, всего лишь одна из. а их достаточно много(softwaree transactional memory, locks\mutexes, actor model, CSP, go channels, lambda architecture...) так что классики не существует, как вы ее себе представляете.

В теории, каждый актор инкапсулирует некое состояние(нету состояния - акторы вам не нужны), доступ к этому состоянию контролируется actor system посредством mailbox механизма, каждый актор может обрабатывать одновременно только одно сообщение, поэтому можно этот стейт не синхронизировать(вернее сказать actor system берет все на себя). Вторая важная вещь в понимании акторов, это понимание процесса обработок ошибок - в каждом акторе пишется только простая и чистая бизнес логика, а все ошибки обрабатываются в супервайзерах, так как это по сути ортогональный аспект приложения(как и репликация, отказоустойчивость, масштабиррование и тд), что является частным случаем общего принципа разработки software system - high coupling and low cohesion, - код должениметь только одну причину для изменения(будь то бизнес-логика, необхоимость масштабирования и тд). Акторы прекрасно позволяет отделить бизнес логику от других аспектов.

Но в модели акторов есть куча подводных камней и граблей, иначе они бы давно уже захватили весь мир:) Самая главная из которых - отсутствие типизированности, их очень трудно рефакторить и дебажить
15 сен 18, 01:09    [21675341]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
Cheblin
Member

Откуда: Beijing
Сообщений: 107
уже писал.

Akka - если откинуть тонкости реализации, безболезненная система масштабирования. Больше никаких задач нет.

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

остаётся два подхода купить сервер помощнее, либо вынести часть задач на другие машины.
С AKKA распределение задач на другие компы - это просто небольшая правка в конфигурации.

ВСЁ
15 сен 18, 04:44    [21675362]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
Ищущий Знания
Member

Откуда:
Сообщений: 174
Leonid Kudryavtsev
На форуме была ветка с парой десятков страниц AKKA-срача. Но людей которые бы на нем реально кодили большие системы, как-то не наблюдается.


Потому и не наблюдается. Что тут сидят одни теоретики, которые на основе псевдостатей с хабра и высеров местных диванных аналитиков рассказывают зачем нужна акка.
Серьезно отвечать на эти высеры, тем кто реально пишет на акке проекты, не интересно. Просто потому, что тут пишут лютый бред про акку))

Делаю третий проект на акке. Два игровых сервера и вот сейчас финансовую систему. Акторы конечно же не иделальны. Но подходят для 90% задач, которыми занимается 90% программистов. Все вот эти ваши сайтики, опердени и прочие штуки отлично пишутся на акторах. Проблем на порядок меньше чем у соседей, которые другой проект пишут на стандартных микросервисах со спрингом.

P.S. Типизация в аткорах таки есть) Если не можете ее найти, то мне вас жаль. С таким уровнем чтения документации надо не в программисты идти...
9 окт 18, 23:59    [21699904]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
andreykaT
Member

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

я вас спрашиваю не наезда ради, а просто потому что вы вроде как человек, имеющий практический опыт общения с аккой, и более глубокое представление об обсуждаемом вопросе.
10 окт 18, 01:28    [21699946]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
andreykaT
Member

Откуда:
Сообщений: 1458
ау... снова Евгений Ню?
10 окт 18, 16:10    [21700682]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
cossack5
Member

Откуда:
Сообщений: 381
andreykaT
ау... снова Евгений Ню?

Ушел делать сервисы на Акке...
10 окт 18, 16:31    [21700730]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 37947
Ищущий Знания

Делаю третий проект на акке. Два игровых сервера и вот сейчас финансовую систему. Акторы конечно же не иделальны. Но подходят для 90% задач, которыми занимается 90% программистов. Все вот эти ваши сайтики, опердени и прочие штуки отлично пишутся на акторах. Проблем на порядок меньше чем у соседей, которые другой проект пишут на стандартных микросервисах со спрингом.
.

По игровым проектам. Можете кинуть ссылочку на ваши сорцы?

Спс.
10 окт 18, 18:43    [21700909]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
Ищущий Знания
Member

Откуда:
Сообщений: 174
mayton
По игровым проектам. Можете кинуть ссылочку на ваши сорцы?Спс.

А может вам еще и ключ от квартиры, где девки лежат? ;-)
11 окт 18, 10:57    [21701279]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 14871
Ищущий Знания
А может вам еще и ключ от квартиры, где девки лежат? ;-)
jотличное продвижение языка.
11 окт 18, 10:59    [21701285]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
mayton
Member

Откуда: loopback
Сообщений: 37947
Ищущий Знания
mayton
По игровым проектам. Можете кинуть ссылочку на ваши сорцы?Спс.

А может вам еще и ключ от квартиры, где девки лежат? ;-)

Жаль. Просто после пассажа об обширном опыте я рассчитывал на мастер-класс.
11 окт 18, 11:30    [21701343]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
andreykaT
Member

Откуда:
Сообщений: 1458
Хотя бы на какой нибудь ростер на тему плюсы акки минусы спринга вебсервисов которых на порядок больше. По ходу точно это Евгений ню перелогинился
11 окт 18, 12:01    [21701397]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
cossack5
Member

Откуда:
Сообщений: 381
Здесь вроде есть парочка проектов.
11 окт 18, 14:13    [21701624]     Ответить | Цитировать Сообщить модератору
 Re: Akka - что можно на ней написать?  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7217
Повторю мою критику AKKA из четверговых акторов

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

OK. Упал, подняли, в общем проблемы с актором действительно нет.

При этом ни один байт данных не пострадает и месседжи
которые будут необработаны остаются в очередях до тех пор пока поднятый актор снова их не отработает.

Стоп... стоп... стоп... Что значит, ни один байт не пострадает?
Логика работы:
1. Актор ПОЛУЧИЛ сообщение из очереди (оно из очереди уже УШЛО)
2. Актор попытался его обработать и почему-то УПАЛ
3. Т.к. упал, актор НЕ смог послать сообщения-ответа с результатом или ошибкой.

Необработанное сообщение ПОТЕРЯЛОСЬ и, самое страшное, ошибки нет (((

Ищущий Знания
вот сейчас финансовую систему.

So do I.
Точнее So did I ))) в past simple )))

Ищущий Знания
....Все вот эти ваши сайтики... отлично пишутся на акторах....


"финансовая система", "микросервис", over несколько сотен тысяч юзеров по миру.

Первый сценарий:

NIO.

Клиент установил соединение, channel записался в какие-то внутренние списки NIO
Клиент прислал HTTP-запрос, запрос записался в какие-то внутренние списки NIO, ожидает ассинхронного ответа
Разобрали запрос, сформировали AKKA-сообщения, послали актору
На ответное AKKA-сообщение, формируем HTTP-ответ и отсылаем через NIO, после отсылки NIO свои списки почистит

Какой-то актор из 100500 акторов в системе "ошибко-безопасность" упал.... УПС.... а как мы об этом узнаем?... нам же НИЧЕГО в ответ никто не пришлет и прислать не может (т.к. актор который должен был послать ответ "упал")

Т.е. получаем "ошибко-безопасный" resource leak

note: более частая ситуация, программист в одном из 100500 if в коде или забыл послать сообщение-ответ или не верно сформировал сообщение-ответ (поэтому актор "верхнего уровня" его не получил). Или ошибка или рефакторили и в процессе рефакторинга пару мест пропустили. Ошибки нет, а resource leak есть (((

Второй сценарий:

Создание акторов - все хорошо. В "финансовой системе" на каждый символ на бирже создавали отдельный актор. Для "обычных бирж" где торгуется несколько тысяч, максимум десяток тысяч символов... все хорошо ))) Но были отдельные случае бирж (специфику я уже не помню), где коль-во символов было за сотни тысячь.... УПС.... а память то не резиновая... до 300-500 000 акторов система ЖУТКО тормозила, но стоически пыталась работать, но после 500 000 акторов - просто падала

Отсюда мораль: Акторы нужно не только создавать, но и стопить.

А как КОРРЕКТНО остановить актор в AKKA ?

Упс... Упс.... Оно же асинхронно и доступа к очереди нет... Упс... Пытаемся остановить актор, а он, в этот момент, из очереди уже какое-то сообщение прочитал/читает/обрабатывает. Если мы ему скажем AKKA'вскую STOP, то это будет просто KILL, с ПОТЕРЕЙ ВСЕХ НЕОБРАБОТАННЫХ СООБЩЕНИЙ в его очереди + описанный Выше resource leak.

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

Очень хотелось бы узнать от ГУРУ, как без велосипедо-строения и без русской матери, два описанных выше кейса можно реализовать на AKKA ? Кейсы не теоретические, а практические, по результату работы с реальной "финансовой системой"

Ищущий Знания
Серьезно отвечать на эти высеры, тем кто реально пишет на акке проекты, не интересно

Повторю свой вопрос:
КАК КОРРЕКТНО ОСТАНОВИТЬ АКТОР В AKKA с гарантией отстутствия потерль данных/сообщений.

Мне кажется, что ответ на такой элементарный вопрос должен легко находится.... но я я искал и ответа не нашел (((. В результате пришлось писать и тестировал под тысячу строк велосипедо-кода в реальном проекте. С огромной кучей synchronize, коллекций и прочий мути. От которых AKKA обещает "избавить программиста"

При этом ни один байт данных не пострадает и месседжи
которые будут необработаны остаются в очередях до тех пор пока поднятый актор снова их не отработает.

упс... упас...

насколько я помню, в AKKA, каждому актору соответствует своя "очередь" (в кавычках! там все хитро). Если мы актор останавливаем, то его очередь убивается тоже. Подозревая, что если актор упал и мы создаем новый, то тоже, у нового актора будет новая очередь

Т.ч., как раз таки, мы ТЕРЯЕМ ВСЕ необработанные сообщения, т.к. с актором теряем все содержимое его очереди

Плохо не то, что теряем, плохо то, что теряем ТИХО. Т.к. сообщить об ошибке, нам никто не может. Актор-верхнего уровня, сообщение корректно послал. Актор-нижнего уровня, просто упал. Данные потерялись в между-акторном-пространстве В результате, в каком-то звене системы получаем или resource leak или performance проблему (в случае retry по timeout'у)

IMHO & AFAIK

Declaimer:
НЕ ИМЕЮ НИЧЕГО ПРОТИВ акторов как идеи. Т.к. оригинального Erlang'а не видел/не знаю. Идея, сама по себе, вроде хорошая.
Сужу о Корузо (акторы, erlang) по перепевам Рабиновича (AKKA).
11 окт 18, 14:18    [21701632]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить