powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Akka - что можно на ней написать?
17 сообщений из 42, страница 2 из 2
Akka - что можно на ней написать?
    #39716161
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ох какой длинный пост.

Начнем с того, что When a message is sent to an Actor that is terminated before receiving the message, it will be sent as a DeadLetter to the ActorSystem's EventStream
Далее почитаем про персистентные акторы, которые фиксируют свой стейт, и после перезапуска нету никаких проблем перечитать все недоставленное
Ну и 300-500 тысяч это на одной ноде? Ну как бы неудивительно, акторы еще и скалить можно. Вообще есть подозрение что вы их просто так и научились готовить
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716163
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя конечно нельзя не согласится что дебажить трудно, и рефакторить. Не согласен с выводом что это невозможно, тесты + типизированные акторы + правильно приготовить.

Но опятьже, на мой взгляд сырая Akka это на любителя, akka streams или lagom гораздо более приятные, и даже полезные
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716168
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716179
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никВообще есть подозрение что вы их просто так и научились готовить
честно говоря, я и не пытался. Я там вообще месяца 3-4 проработал, из них больше месяца разбирался с peformance проблемой с NIO на продакшин сервере. Т.ч. больше занимался или системным (NIO) или performance (NIO, PostgreSQL и прочее)

Меня больше удивляло, что люди которе на проекте > 3 лет + контора до этого работала с ErLang'ом как-то не сильно умели их готовить. Акторы работы с базой, у меня вообще вызывали жуткое ощущение (((

забыл никНу и 300-500 тысяч это на одной ноде? Ну как бы неудивительно, акторы еще и скалить можно.

Честно говоря, у меня вообще полное непонимание желания заменить СУБД на что-то в памяти. (будь это или акторы или экземпляры классов).

Да занафига скалить, если они все одновременно не нужны. Просто впилил LRU Cache (из Apache Commons) и гасил неиспользуемые акторы. Но вот про "When a message is sent to an Actor that is terminated before receiving the message, it will be sent as a DeadLetter to the ActorSystem's EventStream" не знал (((

Чувство, что делаем велосипеды возникало. Но опять таки, сам до этого с AKKA не сталкивался, а народ который до этого вроде работал аж с ErLang'ом тоже ничего предложить/сказать не мог.

забыл никХотя конечно нельзя не согласится что дебажить трудно,

причина по которой контора ушла от ErLang'а.

Но там вообще был полный зоопарк. Когда я там был, у них был новый любимец - Go
Erlgang - сложно дебажить
Java - тормозная
Go это наше будущее )))
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716185
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ваша позиция ясна, хотя точно такую же историю можно было бы услышать про Jav+Spring от людей перешедших с php. Технологию надо знать, и соглашусь akka не самая прозрачная вещь на свете)
Leonid KudryavtsevЧестно говоря, у меня вообще полное непонимание желания заменить СУБД на что-то в памяти. (будь это или акторы или экземпляры классов).

Ну тут интересно на самом деле.. а что и как они пытались заменить?
Если правильно приготовить EventSourcing то это может иметь бенефиты, если это просто эмуляция реляционной БД но на акторах то хммм... мда..
В классических приложениях, когда мы юзаем БД, у нас есть лишь snapshot данных, состояние системы на ДАННЫЙ момент(не говоря о сложности понятие ДАНЫЫЙ момент в распределенных системах в принципе), без истории изменений(можно конечно вести аудит, но.. ) И если вдруг в софте обнаружена ошибка или юзер намеренно или случайно испортил данные - то тут свистопляска с бэкапами, откатами и т.п сложные вещи.
При event sourcing вы имеете неизменяемый, упорядоченный по времени поток событий, благодаря которому все ивенты для данного энтити можно проиграть заново, что очень удобно. Конечно в этом случае все равно надо хранить где-то данные на ТЕКУЩИЙ момент для перфоманса, но вот тут и можно юзать ДБ. Та что одно второму не мешает в принципе.

Но опять же, такой подход не для каждой задачи, на то мы и инженеры чтобы выбрать нужный инструмент для задачи
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716257
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никНу тут интересно на самом деле.. а что и как они пытались заменить?

Блокировки в БД (select for update) это плохо (для производительности)
А мы распилили БД по символам, символы в акторы - блокировок нет (явные блокировки в БД не нужны)

)))
забыл никevent sourcing

Там сама система целиком (я работал в команде над только одним микросервисом, "всю" задачу целиком не видел), скорее была как event sourcing.

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

===

Еще одна проблема, которую пытались решить "велосипедом". Performance и необходимость сооружения "бутылочного горлышка"

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

Если в AKKA какое нибудь средство ограничить длину очереди для актора?
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716276
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
Если в AKKA какое нибудь средство ограничить длину очереди для актора?

Да, даже из коробки - https://doc.akka.io/docs/akka/2.5.4/scala/mailboxes.html#builtin-mailbox-implementations

Хотя можно достаточно легко написать свой мейлбокс.

BoundedMailbox
Backed by a java.util.concurrent.LinkedBlockingQueue
Blocking: Yes if used with non-zero mailbox-push-timeout-time, otherwise No
Bounded: Yes
Configuration name: “bounded” or “akka.dispatch.BoundedMailbox”
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716363
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чот мне кажется, что когда акку пытаются заюзать как кафку то получается жпоа. не?
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716372
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTчот мне кажется, что когда акку пытаются заюзать как кафку то получается жпоа. не?

What are the similarities and differences between Akka and Kafka?
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716404
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevПоток данных в отдельные моменты может быть настолько велик, что их нельзя принимать в обработку и нужно тупо отрубать клиента. В том числе, например, чисто из-за партнеров (сервер биржи не выдерживает). Т.ч. нужно знать кол-во необработанных месседжей очереди актора(ов) и если их большей некоего числа, не ставить новые в очередь, а просто возврашать ошибку клиенту

Если в AKKA какое нибудь средство ограничить длину очереди для актора?
Там кажется было решения для маршрутизации сообщений на множество акторов.
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39716955
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНо там вообще был полный зоопарк. Когда я там был, у них был новый любимец - Go
Erlgang - сложно дебажить
Java - тормозная
Go это наше будущее )))
Вот один забавный синтетический тест показывает что в рендеринге трехмерной графики
GO в пару раз тормознее чем Java. Есть замеры на разном железе. Есть сорцы. Это я не ради
флейма сказал а просто так. К сведению. Чтоб окружающие не были введены в заблуждение
эмоциональной фразой.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
Lang                   ,Time s    ,Time %  ,MSE
D (gdc 4.9.2)          ,  0:11.630,   96.3%,4.4
C++ RWolf (g++ 4.9.2)  ,  0:11.715,   97.0%,0
rust 1.2.0             ,  0:11.808,   97.8%,4.4
C++ (g++ 4.9.2)        ,  0:12.075,  100.0%,
Java 1.8.0             ,  0:14.622,  121.1%,4.4
Free Pascal (fpc 2.6.4),  0:28.807,  238.6%,4.8
C# (mono 3.2.8)        ,  0:39.010,  323.1%,5.7
GO (go 1.3.3) , 0:26.628, 220.5%,4.4
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39717108
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сабжу.

В продолжение шахматных 20858804 чтений. Собственно ферзевая задача меня не особо интересовала.
Я участвовал в ней постольку-поскольку.

На тот момент (2017 год) я изучал фреймворк Apache Camel (JMS) и (сегодня) Akka. Но мне нужна была
какая-то вычислительная задача которой можно было-бы загрузить 1 физический хост полностью.
Потом разбить flow на 2 актора и сделать из задачи распределенную чтобы просто посмотреть
как эти фреймворки ведут себя под нагрузкой. Понаблюдать. Я очень не люблю придумывать синтетические
постановки а тут под руку подвернулась задача (достаточно долгоиграющая) чтобы заполнить ей
долгие часы дни и даже недели.

Сейчас думаю о том что существует некий актор генератор пермутаций (QueenPermutationGenerator)
и актор-классификатор который принимает решение о том что расстановка удовлетворяет условию.
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39718463
Leonid Kudryavtsev,

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

1. Корректная обработка актора это обычное сообщение. Т.е. оно ничему не делает KILL. Актор продолжает обрабатывать очередь сообщений и когда доходит очередь сообщения остановки, завершает свой жизненный цикл обработав все сообщения которые были в очереди.
А если вы пытаетесь "корректно" остановить актор который активно обрабатывает сообщения, то по степени глупости это примерно как разбирать работающий двигатель в машине, проблемы гарантированы)).
Решение тут лежит не области двигателестроения, а в подходах к работе. В обычном спринг приложении вы тоже будете убивать активно используемый бин и кричать что спринг говно потому что не корректно бин гасится? )
В общем стройте корректно логику работы приложения и такой проблемы не будет.

2. Все эти странные кейсы с "потрей сообщений".
Общий подход такой, что акторы выполняющие потенциально проблемный код не должны получать данные через сообщения. Данные для обработки актором должны приходить в констукторе этого актора. А сообщением актор только запускается в работу.
Тогда начинает правильно работать супервизор и в случае падения актор перезапускается без потери своего состояния с полным контролем происходящего.
Это правильный подход в построении систем на акторах в целом.
Если почитаете теорию про акторы и примеры для акки, то всё это наёдете.
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39718466
Leonid KudryavtsevНо были отдельные случае бирж (специфику я уже не помню), где коль-во символов было за сотни тысячь.... УПС.... а память то не резиновая... до 300-500 000 акторов система ЖУТКО тормозила, но стоически пыталась работать, но после 500 000 акторов - просто падала


Это случайно не из тех бирж которые "Молодой, динамично развивающийся стартап возьмет в аренду степлер" ? ))
Раз на нормальный сервер денег нет.

Потому, что один актор занимает 300байт памяти, следовательно 500к займет очень грубо меньше 200мб памяти. Т.е. дело точно не в количестве акторов. А в том, что эти неучи напихали в память всякого говна помимо акторов. С таким подходом на любой платформе будут проблемы.
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39718766
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияВ общем стройте корректно логику работы приложения и такой проблемы не будет.
Прекрасный совет! Но он никак не относится к сабжу. Никак.

Вы бы лучше отошли от подхода "прекрасно лишь то, на чём работаю Я".

Ищущий ЗнанияПотому, что один актор занимает 300байт памяти, следовательно 500к займет очень грубо меньше 200мб памяти.
А куда же девается состояние приложения? Видимо ваша тулза обеспечивает бесконечную виртуальную память?

Выше уже были вменяемые мнения про распараллеливание и "один из множества подходов", но вот "Нашедший знания" уверен, что это всё фигня, главное - стройте корректно логику работы! И в этом он прав. Только корректная логика работы подразумевает выделение сабжу очень узенькой ниши, а возможно и вообще отправку сабжа на свалку истории.
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39719049
alex55555, Вы явный наркоман, при чём с тяжйлой формой дислексии.

alex55555Прекрасный совет! Но он никак не относится к сабжу. Никак.

Он абсолютно точно относится к проблеме. Потому что проблему тут не в акторах, а в неверной логике приложения.

alex55555Вы бы лучше отошли от подхода "прекрасно лишь то, на чём работаю Я". Вы под веществами? При чём тут вообще то на чём я работаю? Я где-то агатировал писать на том на чём сам работаю??? Кстати, я сейчас работаю с жутким легаси на очень старом спринге))

alex55555А куда же девается состояние приложения? Видимо ваша тулза обеспечивает бесконечную виртуальную память?
Да у вас еще и тяжелая форма дислексии к тому же.
Я явно и прямо написал, что это память только на акторы. А проблема связана не с количеством акторов, а с тем что содержится помиомо них. И это проблема не акторов.

alex55555Выше уже были вменяемые мнения про распараллеливание и "один из множества подходов", но вот "Нашедший знания" уверен, что это всё фигня, главное - стройте корректно логику работы! И в этом он прав. Только корректная логика работы подразумевает выделение сабжу очень узенькой ниши, а возможно и вообще отправку сабжа на свалку истории.

Ну тут уже явное детсадовское позёрство.
Потому что я отвечал на конкретные проблемы автора сообщений. Конкретно в них проблема не в акторах вовсе. Ну и да, я нигде не говорил, что акторы решают все проблемы человечества. Только то, что они подходят для большинства типичных задача, которые мы делаем.
Т.к. судя по всему вы еще не учились в институте, поясню. Есть такая наука, называется ЛОГИКА. Она подчиняется определенным законам. Погуглите, это очень интересная наука.
Так вот, согласно ей, фраза "Технология Х хорошо подходит для решения задач" не означает автоматически, что все остальные технологии не подходят для решения этих же задач.
Всего хорошего.
...
Рейтинг: 0 / 0
Akka - что можно на ней написать?
    #39719101
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий ЗнанияНу тут уже явное детсадовское позёрство.
И я, почему-то, не удивлён таким содержательным ответам...
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Akka - что можно на ней написать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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