QQ聊天记录存储如何实现?

请问banq老师,如果想实现一个腾讯QQ聊天记录存储的功能,应该怎么实现呢?

Q1:如果用户产生了一条消息,我是直接存入到数据库中呢?还是等待达到一定的数量了,我再存入数据库中呢?如果是第二种的话,我将数据存在内存中,是不是还需要开一个线程监听内存中的消息数量啊?还有就是此时如果用户想要查看历史记录,实现起来会不会很麻烦啊?

Q2:最近学习了下disruptor,了解了disruptor的原理,现在有一点不太明白,怎么才能让消费者是多线程的呢?好像例子里面都是单个消费者,那么如果任务量太多的话,应该会很慢吧?难道在消费者里面开辟多个线程吗?望板桥老师指点:)


在内存存储一定数量消息即可,其余旧历史消息保存在数据库中,查询历史记录当然查数据库即可。

多个消费者和多个线程没有必然关系,就像守护socket是一个线程,而响应socket传过来的事件是多线程一样。

2012-07-24 09:51 "@banq"的内容
在内存存储一定数量消息即可,其余旧历史消息保存在数据库中,查询历史记录当然查数据库即可。

多个消费者和多个线程没有必然关系,就像守护socket是一个线程,而响应socket传过来的事件是多线程一样。 ...

感谢banq老师的回答,我现在打算把message放在disruptor的ringbuffer里面,然后然一个消费者来消费,然后在消费者里面开一个线程池 让这里面的线程来实现数据的存储。您看这样好么?

其实我最初的打算是使用多个消费者,然后一个消费者一个线程,然后实现功能。我就把一个消费者看成一个线程了。现在disruptor里面不就是一个消费者一个线程嘛。