太粗略了,以後慢慢完善
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;