|
|
|
Чат структура
|
|||
|---|---|---|---|
|
#18+
Добрый день. Предположим надо написать "чат". В чате есть "комнаты", в каждой комнате может быть несколько человек. Каждый человек может быть в нескольких комнатах. +Можно писать в приват, смотреть инфу пользователя и подобные обычные мелочи. Какую архитектуру бы выбрали? Первое, что приходит в голову это иметь какой-нибудь Map, где ключ - идентификатор сессии, а значение - инфо по юзеру. Плюс Map для групп, где ключ - id группы, значение - List пользователей в группе. В этом решении не нравится то, что слишком много коллекции и слишком много телодвижений с ними: если юзер зашел - добавить его в основную коллекцию, добавить в группы по умолчанию, если где-то произошел эксепшн надо все почистить будет и т.п. Да и судя по всему не обойдется только этими коллекциями. Плюс их как-то синхронизировать между собой их надо будет, что добавит свои проблемы. Второе, что приходит в голову: поднять какой-нибудь H2, пристроить к нему хибер со вторым уровнем кэша и частично забыть про мапу листов и некоторые проблемы синхронизации(хотя и все). Но это решение уж совсем притянуто за уши, хотя выглядит на первый взгляд проще. Что еще можно сделать? Или как-то может упростить первый вариант. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2013, 20:39 |
|
||
|
Чат структура
|
|||
|---|---|---|---|
|
#18+
Что-то подобное у меня используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 05:40 |
|
||
|
Чат структура
|
|||
|---|---|---|---|
|
#18+
GorloPavel, По сути то так, это ясно. Просто слишком много коллекций будет, и большой шанс ошибиться, работая с ними. Хочет одну "чудо-коллекцию", которой говоришь, дай мне всех юзеров из группы или дай мне идентификатор сессии по юзеру или дай юзера по идентификатору сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 08:42 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=196&tid=2128046]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 360ms |

| 0 / 0 |
