谷粒商城实战(一)——背景及环境准备

本文介绍了谷粒商城实战的第一步,包括商城的基础架构图,详细阐述了如何准备必要组件,如使用Docker安装MySQL和Redis,设置镜像,以及使用VsCode和相关插件。此外,还涉及微服务目录创建、数据库搭建、后台管理框架的二次开发,并讨论了代码生成工具和关键组件的选型,如Nacos、Sentinel和Gateway。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

商城基础架构图:

在这里插入图片描述

必要组件准备

docker安装sql,redis

docker的每个镜像,都可看做是在一个完整独立的Linux系统上加载了一个应用程序。

指令

更详细的指令学习,可参考:docker指令学习

docker images:查看安装的镜像

1、安装mysql镜像:
docker仓库,里搜索mysql各版本镜像

sudo docker pull mysql:5.7

# --name指定容器名字 -v目录挂载 -p指定端口映射  -e设置mysql参数 -d后台运行
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \ # Linux下的/mydata/mysql/log与容器内部的/var/log/mysql沐浴露进行挂载
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \ # -e 修改mysql的参数
-d mysql:5.7

docker ps 查看 docker 中正在运行的镜像

docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                               NAMES
c496d2553202   mysql:5.7   "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

从左到右依次是:

  • CONTAINER ID:ID
  • IMAGE:镜像
  • COMMAND: 启动命令
  • CREATED: 启动时间
  • STATUS: 状态
  • PORTS: 端口号及与主机的映射关系
  • NAMES:容器名

此时我们就可以验证,一个镜像就是一个完整的Linux操作系统了:

# 执行 mysql 容器的 /bin/bash
[root@VM-16-11-centos /]# docker exec -it mysql /bin/bash
# 可以看到已经进入了 mysql 镜像(看ID)
root@c496d2553202:/# ls		# 从目录可看出,就是一个完整的Linux系统目录
bin  boot  dev	docker-entrypoint-initdb.d  entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  • 修改mysql配置:
vi /mydata/mysql/conf/my.conf 

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

docker restart mysql: 重启 mysql 镜像

2、安装redis

  • 拉取镜像:docker pull redis (不加版本号时,默认最新镜像)

  • 目录挂载
    由于暂不存在 redis.conf 文件,如果直接挂载的话docker会以为挂载的redis.conf是一个目录,所以我们先创建一个文件然后再挂载。

# 在虚拟机中
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

# 直接进去redis客户端。
docker exec -it redis redis-cli
  • 修改 redis 配置:配置AOF持久化模式
vi /mydata/redis/conf/redis.conf

appendonly true

使镜像随着电脑重启自启动:

sudo docker update mysql --restart=always
sudo docker update redis --restart=always

VsCode 及相应插件

在这里插入图片描述

创建所有的微服务目录

  • 商品服务:product
  • 仓储服务:ware
  • 订单服务:order
  • 优惠券服务:coupon
  • 用户服务:member

共同点:都使用SpringWeb+OpenFeign

创建数据库:

  • pms: 商品系统
  • sms:营销系统
  • oms:订单系统
  • ums:用户系统
  • wms:库存系统
    然后导入数据

利用现有后台管理框架二次开发

人人开源的后台管理框架(进行二次开发)
1、renren-fast,后台管理框架的后台项目
2、renren-fast-vue(前端),前端项目

将 renren-fast 项目导入到现有工程中。

  • 下载node.js
    官网下载,安装完成后,因为就在 /usr/bin/ 目录下,所以不用配置环境变量,开箱即用。
    设置镜像源:
npm config set registry https://registry.npm.taobao.org

renren-fast-vue 前端项目中,使用 npm install 来安装所需组件。

代码生成

使用 renren-generator 项目,来生成基础服务的 controller/dao/entity/service 代码。

只需要修改:

  1. application.yml 中 spring.datasource.url 连接为自己的数据库,username, password 为自己的
  2. generator.properties 中的 mainPath(路径), package(包名), moduleName(模块名), tablePrefix(表前缀)
  • 因为每个生成的文件都会依赖共同的 util, entity,因此我们抽象出一个 common 包来解决共同依赖问题。

给每个服务进行配置——在 resouces 下新建 application.yml,内容如下:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://49.233.35.25:3306/topmall_pms	# 改成对应的数据库

mybatis-plus:
  mapper-locations: classpath:/mapper/**/*.xml	# mapper 目录
  global-config:
    db-config:
      id-type: auto   # 自增主键

server:
  port: 10000	# 端口号

其他组件选型

  • 注册中心(服务发现/注册): SpringCloud Alibaba - Nacos
  • 配置中心(动态配置管理): SpringCloud Alibaba - Nacos
  • 负载均衡: SpringCloud - Ribbon
  • 声明式HTTP客户端(调用远程服务RPC?): SpringCloud - Feign
  • 服务容错(限流、降级、熔断): SpringCloud Alibaba - Sentinel
  • API网关(webflux编程模式): SpringCloud - Gateway
  • 调用链监控: SpringCloud - sleuth
  • 分布式事务解决方案: SpringCloud Alibaba - Seata
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值