Архитектура для высокоасинхронных событий, которые приводят к обновлениям базы данных

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

Совсем недавно я пытался использовать Events API в плагине ядра платформы, но оптимистичные и пессимистичные блокировки, управление сессиями и транзакциями в сочетании с недетерминированными обратными вызовами сделали невозможным обеспечение надежной и стабильной работы. Я все еще гоняюсь за своим хвостом.

Итак, я рассматриваю другой подход, но у меня недостаточно опыта работы с GPars и Актерами, чтобы понять, правильно ли я подхожу к этому. Что я думаю сделать, так это создать одного Актера, который отвечает за ВСЕ обновления базы данных. Единственный способ записать что-либо в базу данных — это отправить сообщение этому единственному Актеру. Все асинхронные обратные вызовы будут выполнять свою логику, но все, что связано с записью в базу данных, будет отправлено в DatabaseActor.

Это сумасшедшее узкое место? Это разумная архитектура?


person greymatter    schedule 19.02.2014    source источник
comment
Если бы я был на вашем месте, я бы создал свой собственный стек с нуля. Я даже не буду рассматривать спящий режим или JPA. что-то очень тонкое и легкое, и очень близкое к голому металлу. У вас будет много бизнес-логики по этому поводу. Как тонны проверок и бизнес-логики, чтобы убедиться, что заказы действительны/имеют смысл. (например, проверка перекрестного порядка и т. д.)   -  person JavaDev    schedule 19.02.2014
comment
Вы делаете хорошее замечание... хотя я его ненавижу. :-) Я не хочу начинать сначала. Даже если я возьму на себя технический долг на данный момент, я хотел бы решить это, по крайней мере временно, менее радикальным способом, чем переписывание. Любые мысли об использовании Актера, как описано?   -  person greymatter    schedule 20.02.2014