合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
该文是系统的用户手册,主要体现系统功能和所支持的高级特性,关于系统的核心设计正在整理中,请稍安勿躁
随着社交媒体的普及,用户生成的内容数量急剧增加。为了帮助用户更好地发现和分享内容,许多社交媒体平台都提供了赞/踩服务。
赞/踩服务是一种用户反馈机制。随着社交媒体的普及和发展,人们越来越喜欢在一种平台上分享自己的观点和生活,这时就需要一种形式化的反馈机制来快速评价这些信息的好坏。赞/踩服务的目标是为了提高用户互动性,增加内容的社会影响力,从而增加活跃用户数量。
系统所涉及的功能包括:
功能 | 描述 |
赞/踩 | 用户可以点击对应的赞或踩按钮,以表达自己的喜好或不喜好 |
取消赞/踩 | 用户可以取消之前的赞/踩,以更正自己的想法 |
计数器 | 赞和踩的数量都需要计数器,用于显示文章或评论的受欢迎程度和社交影响力等 |
赞/踩历史 | 用户可以查看自己赞/踩的历史记录,以查看自己对文章或评论的态度 |
基于 Spring Boot 框架进行开发,以 DDD 作为业务逻辑承载模型。
框架 | 版本 | 依赖说明 |
JDK | 1.8+ | 运行环境 |
Spring Boot | 2.3.12.RELEASE | |
Spring Data | 2.3.9.RELEASE | 基于 JPA 实现持久化;基于 Redis 完成缓存加速(可选) |
Lego | 0.1.22 | DDD 模型落地 |
springfox | 3.0.0 | 文档管理 |
RocketMQ | 2.2.1 | 领域事件,异步处理(可选) |
Sharding Sphere | 4.4.1 | 分库分表(可选) |
该项目使用标准的 “六边形架构”,对业务和技术进行分离,所以模块较多,但层次更为清晰。
模块 | 作用 |
domain | 核心逻辑层,DDD 中核心组件,包括实体、值对象、聚合根、领域服务等 |
app | 应用服务层,DDD 中的应用服务,主要负责流程编排 |
infrastructure | 基础设施层,主要负责与 DB 或其他服务进行通讯 |
api | RPC 服务中的接口定义,被 FeignClient 和 FeignService 依赖 |
FeignService | api 中接口的实际实现者,完成接口的适配 |
FeignClient | api 中Proxy实现者,方便使用方直接调用 |
bootstrap | 应用启动入口,包括 Spring Boot 入口和所有配置 |
建表语句在infrastructure/src/main/resources/sql 目标下,包括单库和分库分表配置。单库建表语句如下:
create table dislike_action
(
id bigint auto_increment primary key,
create_time datetime not null,
delete_time datetime null,
update_time datetime null,
vsn int not null,
status char(16) not null,
target_id bigint not null,
target_type varchar(16) not null,
user_id bigint not null,
constraint unq_user_target
unique (user_id, target_type, target_id)
);
create table dislike_target_count
(
id bigint auto_increment primary key,
create_time datetime not null,
delete_time datetime null,
update_time datetime null,
vsn int not null,
count bigint not null,
target_id bigint not null,
target_type varchar(16) not null,
constraint unq_target
unique (target_id, target_type)
);
create table like_action
(
id bigint auto_increment primary key,
create_time datetime not null,
delete_time datetime null,
update_time datetime null,
vsn int not null,
status char(16) not null,
target_id bigint not null,
target_type varchar(16) not null,
user_id bigint not null,
constraint unq_user_target
unique (user_id, target_type, target_id)
);
create table like_target_count
(
id bigint auto_increment primary key,
create_time datetime not null,
delete_time datetime null,
update_time datetime null,
vsn int not null,
count bigint not null,
target_id bigint not null,
target_type varchar(16) not null,
constraint unq_target
unique (target_id, target_type)
);
TOP