web聊天室的设计方案
这两天使用python/tornado 实现一个comet的在线聊天室,现在的大致框架是,中间层用redis,tornado将用户新消息存到redis, 客户端更新消息则由redis中取得。
因为没啥经验,想问一下,我要保存聊天记录,该如何做才好。在用户来新消息时,就写入数据库吗?这样会不会给数据库很大的压力,因为聊天消息有时候会来得很快很频繁。
好像QQ的客户端是把聊天消息记录在本地的txt文件,再做同步的。
如果大家做在线聊天室的话,会如何考虑这个呢?求提供思路。
[解决办法]
建议:中间的Server层负责这个工作就可以了。例如可以把数据先存在文件或者别的地方,然后定时/定量/压缩(根据实际情况自己确定策略)提交到数据库中就可以解决所谓数据库的压力了。
[解决办法]
server端:log4j日志插件可以按天生成日志文件,聊天记录按照日志生成规则写入日志文件,通过读取这些日志的内容获取聊天记录,这种方式比较方便些