|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
Занимаюсь обработкой данных gps-навигации. Сообщения с навигаторов по сути есть асинхронные события, которые надо обрабатывать по мере их поступления (они еще называются отметками и иногда считаются просто данными с навигаторов). Причем реакция и возможное изменение состояния наблюдаемого объекта (связь навигатора с сервером: offline/online; движение: stand, run; ...) зависят от его текущих состояний (и возможно предыдущих). Например если наблюдаемый объект находится в состоянии СТОЯНКА, то для того, чтобы он перешел в состояние ДВИЖЕНИЕ необходимо возникновение не одного, а нескольких последовательных событий (это упрощенный принцип). Вопрос: нормально ли если на сервере будет запущено приложение по обработке данных, будут на протяжении всего его выполнения в памяти находиться объекты (по одному на каждый наблюдаемый объект), которые обеспечивают необходимое поведение (реакцию на события). Периодически состояния всех этих объектов в приложении будут скидываться в БД. И помимо этого все сгенерированные события (в результате обработки событий с навигаторов) тоже периодически пишутся в базу. ps объекты наблюдения это например автобусы, троллейбусы, трамваи, ... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 07:50 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
Херовость такого подхода описана вот здесь: https://github.com/nathanmarz/storm/wiki/Rationale решение там же ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 08:21 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
Наверняка в Storm будут трудности с вот этим: "необходимо возникновение не одного, а нескольких последовательных событий". По крайней мере с ходу неясно, как это обеспечить при распределенной параллельной обработке в Storm. А обработка в памяти с асинхронной записью в БД - нормальный (с некоторыми оговорками) вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2012, 15:03 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
То, что вам нужно, называется event sourcing. Погуглите. Еще полезно почитать http://highscalability.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2012, 14:04 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
neoddd, а без паттерна event sourcing здесь и не обойтись :) уже использую его ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 14:20 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
Tolstokotneoddd, а без паттерна event sourcing здесь и не обойтись :) уже использую его Тогда вопрос в первом посте непонятен. Но раз уж цохдали тему, расскажите, что было трудно, что было легко ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 14:25 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
neoddd, вопрос был в том нормально ли постоянно на сервере в оперативе держать кучу объектов реализующих хранение состояний и реакцию на события. Если увеличится количество событий и время обработки событий, то возникнут проблемы с масштабированием, которые пока не знаю как решать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 15:14 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
Tolstokotвопрос был в том нормально ли постоянно на сервере в оперативе держать кучу объектов реализующих хранение состояний и реакцию на события. Нормально, event sourcing облегчает реализацию БД в памяти. TolstokotЕсли увеличится количество событий и время обработки событий, то возникнут проблемы с масштабированием, которые пока не знаю как решать. sharding применяется для разнесения частей БД по разным серверам с потенциально бесконечной масштабируемостью. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 15:40 |
|
Обработка данных в приложении постоянно находящегося в памяти сервера
|
|||
---|---|---|---|
#18+
TolstokotПериодически состояния всех этих объектов в приложении будут скидываться в БД. И помимо этого все сгенерированные события (в результате обработки событий с навигаторов) тоже периодически пишутся в базу. Вот это ненормально. Паттерн который предложили, правильный. Нужно правильно организовать очередь записи. Можно да, от разных объектов писать в разные десты (таблицы, базы, сервера) для распараллеливания. Идея с объектами может противоречить идее event sourcing. А может и нет. Смотря как подойти к реализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 17:38 |
|
|
start [/forum/topic.php?fid=33&msg=37805076&tid=1547844]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 432ms |
0 / 0 |