聊天消息历史记录存储之Hbase篇

it2022-05-05  202

1. Hbase介绍

        Hbase是一种分布式的,多版本的,面向列的,半结构化的,稀疏的,多维的,排序的组件.

        Hbase表可以理解为一个3维Map,包括row key, column(family+qualifier),timestamp

        分布式:  将数据切分成多个region

        持久化:  底层为HDFS

        多版本:  同一个rowkey可以根据timestamp存储多个版本

        稀疏:  column没有值时, 不占用存储空间,即不单独存储元数据

        排序: 默认按rowkey排序,同一个rowkey内按timestamp排序                      

 

2. 聊天消息历史记录存储

       背景: 我们使用微信时,经常会查看聊天历史记录, 历史记录的特点是量大,每天都可能有新增,一般按时间排序.

       设计: 将聊天消息存储在Hbase中,消息包含发送人id,接收人id,时间戳, 内容,发送状态等,

                如下图所示:

userId1userId2sendTimemessageStatusmessage12345678234567891418812276536发送成功你吃饭没12345678234567891428812276536发送中晚上好

               row key设计规则:   reverse(用户id1)-用户id2-inverse(时间戳)                                            目的: reverse(用户id)用于防止热点问题, inverse(时间戳)=long最大值-当前时间戳, 默认时间倒序

3 读需求

           根据userId,按从大到小(先读最新消息)读取timestamp在(startTs, endTs]的n条消息。


最新回复(0)