简单的新鲜事系统设计

太粗略了,以后慢慢完善

 

 

MQ(P):publish-》feed表生成记录 -》 userTimeLine插入数据-》将feed信息放入MQ

 

MQ(C):启动线程-》在循环中执行消费-》找出所有关注该人的的粉丝-》 轮寻插入home_timeline表中

 

某个用户登录后,查询home_timeline和feed关联表,即可获得自己的所有新鲜事

 

表设计:

用户自己发布的feed timeline表:user_timeline

CREATE table user_timeline(
   user_id int not null default 0,
   feed_id int not null default 0,
   feed_type tinyint NOT NULL DEFAULT 0,
   PRIMARY KEY (`user_id`, `feed_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 

CREATE table home_timeline(
   id int not null AUTO_INCREMENT,
   user_id int not null default 0 COMMENT 'feed流接收者',
   feed_id int not null default 0 COMMENT 'feed 的id',
   feed_type tinyint NOT NULL DEFAULT 0 COMMENT 'feed的类型',
   PRIMARY KEY (`id`),
   INDEX `idx_uid_feed` (`user_id`, `feed_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 

新鲜事:feed
 CREATE TABLE `feed` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `content` varchar(500) NOT NULL default '' COMMENT '如果是模板的形式则为json',
  `feed_time` timestamp not null COMMENT 'feed发布时间',
  `reply_num` int(11) NOT NULL DEFAULT 0 COMMENT '回复数',
  `repost_num` int(11) NOT NULL DEFAULT 0 COMMENT '转发数',
  `source` int(11) NOT NULL DEFAULT 0 COMMENT '转发源',       
  `user_id` int(11) NOT NULL default 0 COMMENT '发布人',
  `feed_type` tinyint NOT NULL DEFAULT 0 COMMENT 'feed类型',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

你可能感兴趣的:(简单的新鲜事系统设计)