您当前位置:资讯中心 >服务器 >浏览文章

基于 DDD 的互联网“赞&踩”系统

来源:互联网 日期:2023/10/30 7:53:47 阅读量:(0)

该文是系统的用户手册,主要体现系统功能和所支持的高级特性,关于系统的核心设计正在整理中,请稍安勿躁

1. 背景

随着社交媒体的普及,用户生成的内容数量急剧增加。为了帮助用户更好地发现和分享内容,许多社交媒体平台都提供了赞/踩服务。

2. 目标

赞/踩服务是一种用户反馈机制。随着社交媒体的普及和发展,人们越来越喜欢在一种平台上分享自己的观点和生活,这时就需要一种形式化的反馈机制来快速评价这些信息的好坏。赞/踩服务的目标是为了提高用户互动性,增加内容的社会影响力,从而增加活跃用户数量。

3. 快速入门

系统所涉及的功能包括:

功能

描述

赞/踩

用户可以点击对应的赞或踩按钮,以表达自己的喜好或不喜好

取消赞/踩

用户可以取消之前的赞/踩,以更正自己的想法

计数器

赞和踩的数量都需要计数器,用于显示文章或评论的受欢迎程度和社交影响力等

赞/踩历史

用户可以查看自己赞/踩的历史记录,以查看自己对文章或评论的态度

3.1. 开发环境

基于 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

分库分表(可选)

3.2. 模块介绍

该项目使用标准的 “六边形架构”,对业务和技术进行分离,所以模块较多,但层次更为清晰。

模块

作用

domain

核心逻辑层,DDD 中核心组件,包括实体、值对象、聚合根、领域服务等

app

应用服务层,DDD 中的应用服务,主要负责流程编排

infrastructure

基础设施层,主要负责与 DB 或其他服务进行通讯

api

RPC 服务中的接口定义,被 FeignClient 和 FeignService 依赖

FeignService

api 中接口的实际实现者,完成接口的适配

FeignClient

api 中Proxy实现者,方便使用方直接调用

bootstrap

应用启动入口,包括 Spring Boot 入口和所有配置

3.3. 启动项目

3.3.1. 建库建表

建表语句在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)
);
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。