写点什么

架构实战营 - 模块八作业

用户头像
以吻封笺
关注
发布于: 1 小时前

作业

设计消息队列存储消息数据的 MySQL 表格


作业设计

从可扩展、高性能、高可用等方面考虑:

  1. 每个主题一个表,采用多个服务器,而每个服务器上又可以部署多个 MySQL 数据库实例,一个数据库实例可以建 100 张不同消息主题队列表。

  2. 其次需要一张表保存每条消息的存储具体位置:消息索引表


主题消息队列表

表名:message_queue_topic (topic 为对应创建的主题:如 message_queue_userclick )

表字段如下:

CREATE TABLE message_queue_topic (  ID BIGINT NOT NULL, -- 消息ID   CREATE_TIME TIMESTAMP NOT NULL, -- 创建时间  MESSAGE_DATA TEXT NOT NULL, -- 消息内容  MESSAGE_NUMBER VARCHAR(60) NOT NULL, -- 消息编号  PRIMARY KEY (ID),  UNIQUE(MESSAGE_NUMBER)  ); 
复制代码


消息索引表

表名:message_index

表字段如下:

CREATE TABLE message_index (  ID BIGINT NOT NULL, -- 索引ID   MESSAGE_TOPIC VARCHAR(200) NOT NULL, -- 消息主题  MESSAGE_QUEUE_NAME VARCHAR(200) NOT NULL, -- 消息表名  MESSAGE_QUEUE_DB VARCHAR(100) NOT NULL, -- 消息表所在库名  MESSAGE_QUEUE_DB_IP VARCHAR(200) NOT NULL, -- 消息表所在库实例IP  MESSAGE_QUEUE_DB_PORT int NOT NULL, -- 消息表所在库实例端口  MESSAGE_ID BIGINT NOT NULL, -- 消息ID,message_queue_topic表的ID  MESSAGE_NUMBER VARCHAR(60) NOT NULL, -- 消息编号,message_queue_topic表的MESSAGE_NUMBER  CREATE_TIME TIMESTAMP NOT NULL, -- 创建时间  PRIMARY KEY (ID),  UNIQUE(MESSAGE_TOPIC),  UNIQUE(MESSAGE_ID),  UNIQUE(MESSAGE_NUMBER)  ); 
复制代码


用户头像

以吻封笺

关注

还未添加个人签名 2018.09.15 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营-模块八作业