【Java项目】Re:从零开始的<忙鱼>搭建[项目已搁置]

发布于:2022-12-20 ⋅ 阅读:(351) ⋅ 点赞:(0)

文章介绍

是时候写一个自己的项目了, 本篇文章记录项目忙鱼-一条不如闲鱼的鱼的练手开发过程
知识点以

这种形式给出

对于美工和效果, 考虑的比较少, 有时间会做进一步的美化, 以后端开发为主
引出思考与学习的我会粘贴相应链接

正文

系统背景

开发机操作系统:

Linux 3andman 5.18.18-200.fc36.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 17 16:02:04 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

服务器:
腾讯云轻量应用服务器, 2核2GB, 部署mySQL

Linux VM-8-7-centos 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

华为云 云耀云服务器, 4核8GB, 部署其他组件

Linux VM-8-7-centos 4.18.0-348.7.1.el8_5.x86_64 #1 SMP Wed Dec 22 13:25:12 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

准备仓库

仓库与文件维护

首先, 为项目建立一个Gitee仓库
BusyFish忙鱼

建立gitee仓库
检查.gitignore

设计

设计原型

设计原型参考【智慧社区系列产品】智慧社区二手交易平台高保真原型模板

Axure的下载与安装
Chrome的Axure插件安装
Axure导出Html

产品信息

  • Title与Slogan
    忙鱼 - 一条不如闲鱼的鱼
  • icon
    logo

自己画了一个
icon大小规范与设计: 百度文章
Linux下的画图工具

用户角色梳理

  • 客户端
角色 描述 操作
customer用户(仅客户端) 客户端使用者 发布商品, 评论商品, 购买商品, 浏览商品
联系卖家, 举报商品, 举报用户, 评价卖家, 关注用户
passenger游客(仅客户端) 通过注册变成用户 浏览商品
  • 管理后台
角色 描述 操作
admin管理员 系统管理员, 可以执行所有操作 所有其他操作, 设置分区信息,
boss老板 系统老板, 管理所有员工 发布活动, 管理员工
manager雇员管理员 比雇员高级, 管理雇员, 可以分派任务 管理雇员, 设置审核指标
employee公司雇员/审核员 公司的普通员工 审核条目, 处理举报消息

功能模块梳理

注: <表示为待定功能>

客户端
  • 主页面
功能 说明 角色差异 完成情况
商品广场 显示当前城市的二手商品 所有人
动态 显示关注的人的动态 如果是游客, 引导登陆
关注商品 关注商品动态 如果是游客, 引导登陆
  • 搜索界面
功能 说明 角色差异 完成情况
热搜榜 近期热搜内容, 根据人气值排序 所有人
历史搜索 历史搜索内容 仅限用户
搜索词联想 搜索栏自动联想 所有人
  • 用户相关
功能 说明 角色差异 完成情况
地理位置模块 用户的简单定位, 方便筛选同城商品, 也用到用户的收货地址选择上 所有人
关注用户 一个用户关注另一个用户 如果是游客, 引导登陆
浏览历史 记录用户的浏览记录, 需要带有商品状态 所有人
时间显示 聊天中, 评论中, 商品发布时, 需要显示时间 所有人
用户评价 买卖双方互相评分, 分别计算分数 仅限交易后双方
<消息聊天> 买家卖家能聊天暂时不考虑
<附近的人> 通过物理定位搜索附近的用户列表 仅限用户
累计收入 用户通过出售二手物品得到的收入 仅限用户
  • 商品路线
功能 说明 角色差异 完成情况
商品发布 发布一个商品 仅限用户
商品收藏 收藏一个商品 仅限用户
下单 用户下单操作 仅限用户
商品搜索 搜索商品 所有人
商品评论 评价一个商品 仅限用户
历史售出 商品成交后保留一部分商品信息做展示用 所有人
<商品分享> 分享外链到其他平台 仅限用户
<求购模块> 求购商品, 暂时先不考虑
支付模块 完成支付 仅限用户
<售后> 订单售后设置
  • 公共服务
功能 说明 角色差异 完成情况
敏感词识别与过滤 过滤敏感词为****, 当文章含有敏感词时不允许发布 所有
管理后台
功能 说明 角色差异 完成情况
热搜榜 近期热搜内容, 根据人气值排序 所有人
历史搜索 历史搜索内容 仅限用户
搜索词联想 搜索栏自动联想 所有人

技术选型

下划线表示选用

功能 选型 说明 相关文档
项目管理工具 Maven:3.8.1 管理项目依赖 Maven官网
数据库访问与处理 MyBatisPlus 简化单表CRUD操作
用内置分页插件完成分页查询
<开发:>开启性能分析插件, 优化SQL
MyBatisPlus官网
开发框架 SpringBoot SpringBoot在SpringIoC与AOP的基础之上引入了约定大于配置的思想, 通过起步依赖与自动配置简化了Spring的使用
日志记录 Log4j Log4j在线文档
Logback 生成程序日志
Logback与Log4j同源, 而且功能性能更强, 选用Logback
Logback/Gitee文档
第三方登录 JustAuth JustAuth是一个开箱即用的第三方登录开源组件包, 可以很方便地实现多平台的账号接入 JustAuth官网
OAuth2.0 OAuth是目前被广泛使用的开放网络协议, 可以用来从第三方获取用户信息, 进行登录
登录验证 JWT 使用带过期时间的JWT完成
异地登录提醒
退出登录
用户身份确认
静态资源部署 Nginx Nginx是俄罗斯开发的优秀的轻量级HTTP与反向代理Web服务器
主要使用了静态资源部署的功能
服务注册与发现/分布式配置 Nacos Nacos是阿里开源的微服务引擎, 集成在SpringCloudAlibaba中, 可以很方便地管理数据中心的所有服务以及元数据 nacos官网
Eureka Eureka是网飞的SpringCloud项目, 同样完成的是服务发现功能, 但是没有配置中心
数据库 MySQL5.7 免费稳定的开源数据库
计数器
数据缓存
用户消息时间线
热点排行榜
消息队列
Redis Redis是高性能键值对内存数据库, 有很好的分布式事物支持, 可以保证数据安全
搜索功能 ElasticSearch 使用更易用的搜索引擎ElasticSearch完成搜索操作
部分页面静态化 FreeMarker FreeMarker是一个模版引擎, 可以加快页面的响应速度, 适用于大规模但变化不频繁的数据.
如搜索界面的展示
分布式事务处理 Seata Seata是SpringCloudAlibaba项目中的一部分, 主要用于解决分布式服务中的事务一致性问题
熔断与降级 Sentinel 服务熔断与降级
文件托管 minIO 使用minIO完成用户商品的图片托管
服务器组件部署 docker:20.10

数据库

数据库表设计

@我自己-【SQL】初步学习如何建立高效数据库表

运维

docker的安装

使用docker-compose+docker完成服务器上各种组件的部署

#安装部分依赖
dnf install -y dnf-utils device-mapper-persistent-data lvm2

#添加源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#docker安装
sudo yum install -y docker-ce

#开机自启动docker
systemctl enable docker

#设置docker国内镜像源
/下:
mkdir /etc/docker

#新增文件
vim /etc/docker/daemon.jsom
#插入内容
{
	"registry-mirrors": ["https://7oc12mqc.mirror.aliyuncs.com"]
}

#重启服务
systemctl restart docker

docker-compose的安装

@菜鸟教程-docker-compose入门
这里使用docker-compose只是文件化了docker的配置语句

#国内源
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

#赋予权限
chmod +x /usr/local/bin/docker-compose 

#验证结果
docker-compose -version

mysql的安装

这部分的docker-compose.yml

version: '3'
services:
  mysql:
    container_name: mysql
    environment:
      TZ: Asia/Shanghai
      MYSQL_ROOT_PASSWORD: "我的密码"
    image: "mysql:5.7"
    restart: always
    volumes:
      - "./conf/my.cnf:/etc/my.cnf"
      - "./data:/var/lib/mysql"
    ports:
      - "3306:3306"

redis的安装

这部分的docker-compose.yml

version: '3'
services:
 redis:
  container_name: redis
  image: redis:5.0.7
  restart: always
  ports:
    - 6379:6379
  volumes:
    - ./conf/redis.conf:/etc/redis/redis.conf:rw
    - ./data:/data:rw
  command:
    redis-server /etc/redis/redis.conf --appendonly yes
  environment:
    - TZ=Asia/Shanghai

minio的安装

这部分的docker-compose.yml

version: '3'
services:
  minio:
    image: minio/minio:RELEASE.2021-04-18T19-26-29Z
    container_name: myminio
    ports:
      - 9000:9000
    volumes:
      - /var/minio/data:/data
      - /var/minio/config:/root/.minio
    environment:
      MINIO_ACCESS_KEY: "minio"
      MINIO_SECRET_KEY: "minio123"
    command: server /data
    restart: always

ElasticSearch+ik分词的安装

docker有打包好的ik分词+es包, 但是这里还是分开安装

这部分的docker-compose.yml

version: '3'
services:
  elasticsearch:
    image: elasticsearch:7.4.0
    container_name: elasticsearch
    restart: always
    environment:
      - bootstrap.memory_lock=true
      - http.cors.enabled=true
      - http.cors.allow-origin=*
      - "discovery.type=single-node"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - /busyFish/es/plugins:/usr/share/elasticsearch/plugins
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: kibana:7.4.0
    container_name: kibana
    environment:
      - SERVER_NAME=kibana
      - ELASTICSEARCH_URL=http://192.168.200.130:9200
      - XPACK_MONITORING_ENABLED=true
    ports:
      - 5601:5601
    depends_on:
      - elasticsearch
    external_links:
      - elasticsearch

安装文件上传工具lrzsz

dnf install lrzsz -y
#在es/plugins/上传ik分词器/解压
rz
mkdir analysis-ik
tar -xvf ik-7.4.0 ./analysis-ik/
#重启es
docker restart es

nacos的安装

cd /busyFish/nacos/init.d/
touch custom.properties

这部分的docker-compose.yml

version: "2"
services:
  nacos:
    image: nacos/nacos-server:1.4.1
    container_name: nacos
    environment:
    - MODE=standalone
    - JVM_XMS=256m
    - JVM_XMX=256m
    - JVM_XMN=256m
    volumes:
    - /busyFish/nacos/logs:/home/nacos/logs
    - /busyFish/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
    - "8848:8848"
    restart: always
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到