功能概要
- 实现多层级评论
- 与第三方用户消息提示关联
- 同级回复
- 使用消息同步用户消息(如技术栈未支持消息可以用心跳对消息进行同步)
- 保留后续升级使用非关系型数据来保存,解决数据量问题
- 数据变化log
实现要点
- 与其他服务同步数据,例如 查询评论显示个人基本信息,现思路使用elasticsearch 心跳同步在进行聚合,减少技术栈
- 另外的思路就是然前段调用多个接口进行组合。
- 无论那个主机死机,恢复后业务需要继续,满足升级单机重启
实验整合的服务栈
- wechat,elastic-beat(同步需要聚合输出的数据) , message , user,举报,赞
表设计
CREATE TABLE `comment` (
`id` varchar(37) NOT NULL,
`at_user_ids` varchar(255) DEFAULT NULL,
`child_size` int(11) DEFAULT NULL,
`content` text,
`create_time` datetime DEFAULT NULL,
`down` int(11) DEFAULT NULL,
`enable` bit(1) DEFAULT NULL,
`floor` int(11) DEFAULT NULL,
`parent_id` varchar(255) DEFAULT NULL,
`parent_user_id` bigint(20) DEFAULT NULL,
`path` varchar(255) DEFAULT NULL,
`subject` varchar(32) DEFAULT NULL,
`subject_id` varchar(37) DEFAULT NULL,
`subject_name` varchar(255) DEFAULT NULL,
`subject_user_id` bigint(20) DEFAULT NULL,
`up` int(11) DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`user_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;
测试
# sql读取出来大概是这个结构 A B C 代表发出的先后
我是0层的第一个
我是第一个的1层A
我是1层A的2层C
我是1层A的2层D
我是2层D的E
我是第一个的1层B
select CONCAT(space(floor*4), content) as content,path
from comment order by path,create_time
image.png
其他实现都是苦力活,这里只对核心逻辑进行描述
参考
https://blog.csdn.net/jiongxian1/article/details/77281202
网友评论