Spring Cloud:视频讲解编程题

2020-11-19 16:42:04 浏览数 (1)

视频讲解

1_基础环境介绍

2_商品微服务

3_订单微服务

4_配置中心

5_Nginx限流

代码

建立数据库相关表的代码:

代码语言:javascript复制
# 创建数据库
CREATE DATABASE IF NOT EXISTS renda01 DEFAULT CHARACTER SET utf8;
# 选择使用数据库
USE renda01;

# 创建商品表
DROP TABLE IF EXISTS products;
CREATE TABLE products
(
    `id`          INT PRIMARY KEY AUTO_INCREMENT,
    `name`        VARCHAR(50),  # 商品名称
    `price`       DOUBLE,
    `flag`        VARCHAR(2),   # 上架状态
    `goods_desc`  VARCHAR(100), # 商品描述
    `images`      VARCHAR(400), # 商品图片
    `goods_stock` INT,          # 商品库存
    `goods_type`  VARCHAR(20)   # 商品类型
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
INSERT INTO products
VALUES (1, 'HUAWEI P40', 5999, '1', '华为P40 5G手机 分期 麒麟990 晨曦金 8 256GB', 'https://img14.360buyimg.com/n0/jfs/t1/133822/33/8832/135985/5f4da578E7c6efde1/2cd53a53083ab2ed.jpg', 99, '1');
INSERT INTO products
VALUES (2, 'XIAOMI', 6999, '1', '小米 P40 5G手机 分期 麒麟990 晨曦金 8 256GB', 'https://img14.360buyimg.com/n0/jfs/t1/133822/33/8832/135985/5f4da578E7c6efde1/2cd53a53083ab2ed.jpg', 99, '1');
INSERT INTO products
VALUES (3, 'APPLE', 7999, '1', '苹果 P40 5G手机 分期 麒麟990 晨曦金 8 256GB', 'https://img14.360buyimg.com/n0/jfs/t1/133822/33/8832/135985/5f4da578E7c6efde1/2cd53a53083ab2ed.jpg', 99, '2');

# 创建订单表
DROP TABLE IF EXISTS orders;
CREATE TABLE orders
(
    `id`          INT PRIMARY KEY AUTO_INCREMENT,
    `flag`        VARCHAR(2),   # 订单状态(未支付、已支付、已失效、已删除)
    `create_time` DATETIME      # 创建时间
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
INSERT INTO orders VALUES (1, '1', '2020-10-11 15:41:46');
INSERT INTO orders VALUES (2, '1', '2020-10-12 15:41:46');
INSERT INTO orders VALUES (3, '3', '2020-10-13 15:41:46');
INSERT INTO orders VALUES (4, '4', '2020-10-14 15:41:46');

# 创建订单商品中间表
DROP TABLE IF EXISTS orders_products_relation;
CREATE TABLE orders_products_relation
(
    `id`          INT PRIMARY KEY AUTO_INCREMENT,
    `order_id`    INT,   # 订单 id
    `product_id`  INT    # 商品 id
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;
INSERT INTO orders_products_relation VALUES (1, 1, 1);
INSERT INTO orders_products_relation VALUES (2, 1, 2);
INSERT INTO orders_products_relation VALUES (3, 2, 1);
INSERT INTO orders_products_relation VALUES (4, 2, 2);
INSERT INTO orders_products_relation VALUES (5, 2, 3);
INSERT INTO orders_products_relation VALUES (6, 3, 1);
INSERT INTO orders_products_relation VALUES (7, 4, 1);
INSERT INTO orders_products_relation VALUES (8, 4, 2);

说明

访问域名:www.springcloudgateway.com

需求

系统架构图

微服务搭建

lagou-parent:父微服务,所有微服务继承

lagou-cloud-gateway:网关微服务,集群环境,端口号分别为:9000、9001

lagou-service-order:订单微服务,集群环境,端口号分别为:9100、9101

lagou-service-goods:商品微服务,商品微服务,集群环境,端口号为别为:9200、9201

laoug-service-common:公共组件微服务,放置所有业务微服务的 POJO 和 Feign 接口

lagou-cloud-eureka:服务注册与发现微服务,集群环境,端口号分别为 9300、9301

lagou-cloud-config:配置管理微服务,非集群环境,端口号 9400

技术规范

Boot 版本:2.1.6.RELEASE

数据访问:Mybatis-plus

编译插件:Lombok

访问风格:Restful

测试工具:Postman

商品微服务功能列表

通过 id 查询商品。

通过 id 删除商品。

通过 id 编辑商品。

分页查询:

  • pageSize = 10
  • 查询条件:商品名称、分类、价格范围、库存范围、上架状态(0 下架,1 上架)
  • 返回类型:Map,keys: List 商品集合、total 总条目数

商品表自行设计,保证核心字段存在。

订单微服务功能列表

根据 id 查询订单。

分页查询:

  • pageSize = 10
  • 查询条件:订单创建时间范围、订单状态(1 未支付、2 已支付、3 已失效、4 已删除)
  • 返回类型:Map,keys: List 订单集合、total 总条目数

根据订单 id 查询商品列表:

  • 调用商品微服务
  • Feign 接口调用,负载均衡
  • 超时时间 5 秒触发熔断
  • 熔断后服务降级,返回空商品列表
  • 线程池隔离,并发线程数 16,最大队列 1000,队列拒绝阈值 6000

订单表自行设计,注意表的拆分,遵循三大范式。

Nginx

设置 Gateway 访问 Gateway 负载均衡。

Nginx 限流(选做):

  • 令牌桶策略
  • 每秒新增 100 个令牌
  • 令牌桶一共有 500 个令牌
  • 每个 IP 最多并发 10 个连接
  • 限制并发连接数 200

Gateway

所有请求经过 Gateway 转发。

配置动态路由策略。

支付负载均衡。

CONFIG Bus

从配置获取公司宣传标语 slogan - 中国梦!

支持动态刷新。

0 人点赞