微服务实战记录(五),多级评论

功能概要

  • 实现多层级评论
  • 与第三方用户消息提示关联
  • 同级回复
  • 使用消息同步用户消息(如技术栈未支持消息可以用心跳对消息进行同步)
  • 保留后续升级使用非关系型数据来保存,解决数据量问题
  • 数据变化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

微服务实战记录(五),多级评论_第1张图片
image.png

其他实现都是苦力活,这里只对核心逻辑进行描述

参考

https://blog.csdn.net/jiongxian1/article/details/77281202

你可能感兴趣的:(微服务实战记录(五),多级评论)