对于大型论坛服务,比如百度贴吧、天涯论坛,日均发帖量过百万,日均PV过亿,日积月累下来的帖子数量可能几十亿。这么大的一个论坛服务,海量数据的存储、访问是一个非常有挑战性的技术难题。
中小规模的论坛通常使用mysql/sql server作为后端存储,当数据量膨胀时,比如一个版面有百万、千万级别主贴,一个主贴下有数百万回复,此时使用SQL语句select … order by … limit … ,性能可想而知。
大型论坛中的数据可以抽象为如下几类数据结构:
对于Key-Value系统,市面上有较多选择,它们的数据容量大小从数百万到上百亿不等,性能、功能也各有差异,由于讨论KV系统的文章很多,再次不赘述。
对于Key-list系统,市面上可选择的余地就非常小,加之线上工业级别的要求,因而就诞生出了memlink系统。
Memlink是一个高性能、持久化、分布式的Key-list/queue数据引擎。正如名称中的memlink所示,所有数据都建构在内存中,保证了系统的高性能(大约是redis几倍),同时使用了redo-log技术保证数据的持久化。Memlink还支持主从复制、读写分离、List过滤操作等功能。
特点:
redis同样也提供key-list 存储功能,memlink与redis区别有:
memlink主要对上述特点进行了改进。
目前Memlink应用于天涯来吧、天涯论坛系统。
Memlink是专注于key => list\Queue对象的存储系统,所以它内存使用更精简、性能更高效。Key => list\Queue系统作为Key => value另一种形式补充,为高性能海量数据的Web应用提供了新的选择。