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

start [/forum/topic.php?fid=59&msg=38491241&tid=2128046]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 272ms |
| total: | 390ms |

| 0 / 0 |
