模块八作业
1. 发布-订阅模型
本作业基于发布-订阅模型设计。在此模型中,存放消息的容器称为 Topic(即主题)。订阅者在接收消息之前需要先根据需求,订阅对应的主题。最终,每个订阅者都可以收到同一个主题的全量消息。
2. 表设计
2.1 发布消息表
2.1.1 表名:Message_Topic_Time
考虑到单表存储的限制,同时也尽量减少不同类型的干扰,故根据 Topic 来建表。后期随着数据量的增大,可根据 Time 部分做扩展。
2.1.2 字段名
message_id:类型 INT,主键自增,not null
message_content:类型 BLOB,消息内容,not null
message_publisher_id: 类型 VARCHAR(64),发布者 id,not null
message_time:类型 DATETIME,发布时间,not null
2.1.3 索引
根据 message_time 建立索引,因为订阅者接收消息时,需要根据此字段频繁查询和排序
2.2 订阅消息表
2.2.1 表名:Message_Topic_Sub_Time
记录不同的订阅者接收信息的最后时间,防止消息被重复接收。
2.2.2 字段名
message_sub_id:类型 INT,主键自增,not null
message_subscriber_id:类型 VARCHAR(64),订阅者 id,not null
message_sub_time:类型 DATETIME,订阅时间,not null
2.2.3 索引
根据 message_subscriber_id 和 message_sub_time 建立索引,需要根据订阅者 id 查询用户订阅的记录,并根据订阅时间排序。从而防止接收重复消息。
版权声明: 本文为 InfoQ 作者【Mr.He】的原创文章。
原文链接:【http://xie.infoq.cn/article/9e0c4fa1e7358e2e35bbd6617】。文章转载请联系作者。
评论