SpringCloud小项目——订单积分商城 使用Nacos、Open Feign、Gateway、Sentinel技术栈

在这里插入图片描述

目录

  • 引出
  • 小项目要求
  • 创建极简数据库表
    • 订单表,订单明细表
    • 商品表
    • 积分表
  • 相关微服务
    • 积分微服务
    • 产品微服务
    • 订单微服务
      • 调用积分和订单微服务
    • 网关微服务
      • 登陆认证通过网关
      • 实现对外提供接口API走网关功能
  • sentinel相关
    • 使用Sentinel限流,流量整形
    • Sentinel降级服务(制造异常情况实现降级)
  • 总结

引出

使用Nacos、Open Feign、Gateway、Sentinel技术栈实现XX公司订单、库存、积分的案例开发,以下是服务调用关系

git代码:https://gitee.com/pet365/spring-cloud-goods

在这里插入图片描述

https://github.com/RainbowForest/e-commerce-microservices

在这里插入图片描述

https://awesomeopensource.com/project/RainbowForest/e-commerce-microservices

在这里插入图片描述

小项目要求

使用Nacos、Open Feign、Gateway、Sentinel技术栈实现XX公司订单、库存、积分的案例开发,以下是服务调用关系

技术栈:Nacos、Open Feign、Gateway、Sentinel技术栈

在这里插入图片描述

(二)数据库设计:

(1)订单表、订单明细表
(2)商品表
(3)积分表

(三)项目需求

(1)现订单增删改查除功能
(2)实现商品增删改查除功能
(3)实现积分增删改查除功能
(4)实现nacos配置中心
(5)实现网关用户认证功能

  • 在网关,使用token,实现认证功能

(6)实现对外提供接口API走网关功能

  • ①积分查询列表
  • ②商品查询列表
  • ③订单查询列表
  • ④下单功能

(7)实现内部服务调用功能

  • ①内部服务使用Open Feign
  • ②下单调用商品服务减库存
  • ③下单调用积分服务加积分

(8)Sentinel降级服务(制造异常情况实现降级)

(9)实现网关限流功能

  • 使用Sentinel限流,流量整形

创建极简数据库表

订单表,订单明细表

在这里插入图片描述

/*Navicat Premium Data TransferSource Server         : 127.0.0.1Source Server Type    : MySQLSource Server Version : 80022Source Host           : 127.0.0.1:3306Source Schema         : consumer_goods_orderTarget Server Type    : MySQLTarget Server Version : 80022File Encoding         : 65001Date: 10/10/2023 21:51:03
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for goods_order
-- ----------------------------
DROP TABLE IF EXISTS `goods_order`;
CREATE TABLE `goods_order`  (`id` int NOT NULL AUTO_INCREMENT COMMENT '主键,暂不考虑高并发问题',`user_id` int NULL DEFAULT NULL COMMENT '用户id',`price` decimal(10, 2) NULL DEFAULT NULL COMMENT '总价格',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Table structure for goods_order_detail
-- ----------------------------
DROP TABLE IF EXISTS `goods_order_detail`;
CREATE TABLE `goods_order_detail`  (`id` int NOT NULL AUTO_INCREMENT COMMENT '订单明细表主键',`order_id` int NULL DEFAULT NULL COMMENT '订单表的id',`goods_id` int NULL DEFAULT NULL COMMENT '商品的id',`nums` int NULL DEFAULT NULL COMMENT '数量',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

商品表

在这里插入图片描述

/*Navicat Premium Data TransferSource Server         : 127.0.0.1Source Server Type    : MySQLSource Server Version : 80022Source Host           : 127.0.0.1:3306Source Schema         : consumer_goods_productTarget Server Type    : MySQLTarget Server Version : 80022File Encoding         : 65001Date: 10/10/2023 21:52:45
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for goods_sku
-- ----------------------------
DROP TABLE IF EXISTS `goods_sku`;
CREATE TABLE `goods_sku`  (`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '商品名',`price` decimal(10, 2) NULL DEFAULT NULL COMMENT '价格',`stock` int NULL DEFAULT NULL COMMENT '数量',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of goods_sku
-- ----------------------------
INSERT INTO `goods_sku` VALUES (1, 'iPhone 15 Pro Max 超视网膜 XDR 显示屏', 8999.00, 39);SET FOREIGN_KEY_CHECKS = 1;

积分表

在这里插入图片描述

/*Navicat Premium Data TransferSource Server         : 127.0.0.1Source Server Type    : MySQLSource Server Version : 80022Source Host           : 127.0.0.1:3306Source Schema         : consumer_goods_pointsTarget Server Type    : MySQLTarget Server Version : 80022File Encoding         : 65001Date: 10/10/2023 21:53:48
*/SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for goods_point
-- ----------------------------
DROP TABLE IF EXISTS `goods_point`;
CREATE TABLE `goods_point`  (`id` int NOT NULL AUTO_INCREMENT COMMENT '主键',`user_id` int NULL DEFAULT NULL COMMENT '对应用户的主键',`point` decimal(10, 2) NULL DEFAULT NULL COMMENT '积分数量',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of goods_point
-- ----------------------------
INSERT INTO `goods_point` VALUES (1, 1, 10.89);
INSERT INTO `goods_point` VALUES (2, 1, 8999.00);
INSERT INTO `goods_point` VALUES (3, 1, 8999.00);
INSERT INTO `goods_point` VALUES (4, 1, 8999.00);
INSERT INTO `goods_point` VALUES (5, 1, 17998.00);
INSERT INTO `goods_point` VALUES (6, 1, 17998.00);
INSERT INTO `goods_point` VALUES (7, 1, 8999.00);
INSERT INTO `goods_point` VALUES (8, 1, 8999.00);SET FOREIGN_KEY_CHECKS = 1;

相关微服务

积分微服务

在这里插入图片描述

产品微服务

在这里插入图片描述

订单微服务

在这里插入图片描述

调用积分和订单微服务

内部服务使用Open Feign
下单调用商品服务减库存
下单调用积分服务加积分

在这里插入图片描述

网关微服务

在这里插入图片描述

登陆认证通过网关

下面是我用的token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9.Gdsp9Fz9DTbekM7maxJVceuWZeEZlF0Ir0NuzHbE7kc

在这里插入图片描述

权限从redis中获取

在这里插入图片描述

实现对外提供接口API走网关功能

①积分查询列表
②商品查询列表
③订单查询列表
④下单功能

在这里插入图片描述

sentinel相关

使用Sentinel限流,流量整形

进行配置

在这里插入图片描述

JMeter测试工具

在这里插入图片描述

http请求

在这里插入图片描述

线程数设置

在这里插入图片描述

sentinel中查看监控波形图

在这里插入图片描述

JMeter后台结果树

在这里插入图片描述

消峰填谷

在这里插入图片描述

采用均匀排除的策略

在这里插入图片描述

Sentinel降级服务(制造异常情况实现降级)

在积分微服务中,通过传的参数进行是否抛出异常

在这里插入图片描述

在调用积分微服务的订单order微服务中,设置feign的fallback

在这里插入图片描述

对于order调用的积分的请求资源进行熔断规则的设置

在这里插入图片描述

总体概览,多次调用触发了熔断降级,发送正常请求,次数处于熔断期间,因此也被降级。

在这里插入图片描述


总结

使用Nacos、Open Feign、Gateway、Sentinel技术栈实现XX公司订单、库存、积分的案例开发,以下是服务调用关系

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/158238.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全概述——常见网络攻击与网络病毒、密码体制、安全协议等

目录 1、信息安全五大要素 2、常见的网络攻击类型 2-1)网络攻击的分类: 2-2)常见网络攻击: DOS 攻击的分类: 2-3)常见网络攻击的防范措施 3、计算机病毒 3-1)常见病毒的前缀及其简要描述…

Chrome Extensions v3 迁移清单

一、前置问题 1.1为什么需要迁移 v3? Chrome 计划完全停止 v2 版本维护,后续 v2 版本将无法上架谷歌插件商店,除此之外,未来新版本 Chrome 对于 v2 版本插件的限制会越来越大,比如安全性限制 iframe 嵌套只能通过沙盒…

ABB机器人RWS连接方法

目录 方法一:curl 方法二:网页地址 方法三:Postman 与ABB机器人通讯,较新机器人,可以使用Robot Web Services,直接方便地使用网页进行查看当前数据,但是网页需要用户名密码验证,测…

Excel 中使用数据透视图进行数据可视化

使用数据透视表(PivotTable)是在Excel中进行数据可视化的强大工具。下面将提供详细的步骤来使用数据透视表进行数据可视化。 **步骤一:准备数据** 首先,确保你有一个包含所需数据的Excel表格。数据应该按照一定的结构和格式组织…

MongoDB 简介和安装

一、MongoDB 相关概念 1.1 业务应用场景 1.1.1 三高需求 传统的关系型数据库(如 MySQL) ,在数据操作的 “三高” 需求以及应对 Web2.0 的网站需求面前,显得力不从心。”三高“ 需求如下所示,而 MongoDB 可应对 “三高…

QUIC协议

1、QUIC 简介 QUIC 全称:Quick UDP Internet Connections,是一种基于 UDP 的传输层协议。由 Google 自研,2012 年部署上线,2013 年提交 IETF,2021 年 5 月,IETF 推出标准版 RFC9000。 从协议栈可以看出&am…

PDM篇 | SOLIDWORKS 2024新功能

改进的视觉内容 优点 重要数据和系统信息一目了然。 • 通过装配体可视化功能,在 SOLIDWORKS 中以图形方式查看零部件数据,如工作流程状态。 • 使用特定图标迅速识别焊件切割清单零部件。 增强的数据保护和跟踪功能 优点 通过附加的审计跟踪信息&am…

C++智能指针(二)——weak_ptr初探

文章目录 1. shared_ptr 存在的问题2. 使用weak_ptr2.1 初始化 weak_ptr2.2 访问数据 3. 附录4. 参考文献 1. shared_ptr 存在的问题 与 shared_ptr 的引入要解决普通指针存在的一些问题一样,weak_ptr 的引入,也是因为 shared_ptr 本身在某些情况下&…

焦炭反应性及反应后强度试验方法

声明 本文是学习GB-T 4000-2017 焦炭反应性及反应后强度试验方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 7— 进气口; 8— 测温热电偶。 图 A.1 单点测温加热炉体结构示意图 A.3 温度控制装置 控制精度:(11003)℃。…

JS数组方法map 和 forEach 的区别

一、定义: forEach(): 针对每一个元素执行提供的函数。 map(): 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来。 二、区别 1、map 方法返回一个新的数组,而 forEach 方法不会返回任何值,仅仅是遍…

ChatGPT,AIGC 数据库应用 Mysql 常见优化30例

使用ChatGPT,AIGC总结出Mysql的常见优化30例。 1. 建立合适的索引:在Mysql中,索引是重要的优化手段,可以提高查询效率。确保表的索引充分利用,可以减少查询所需的时间。如:create index idx_name on table_name(column_name); 2. 避免使用select * :尽可能指定要返回的…

恒温区检测热电偶

声明 本文是学习GB-T 4000-2017 焦炭反应性及反应后强度试验方法. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 7— 进气口; 8— 测温热电偶。 图 A.1 单点测温加热炉体结构示意图 A.3 温度控制装置 控制精度:(11003)℃。…

文件上传 [MRCTF2020]你传你呢1

题目来源:buuctf [MRCTF2020]你传你🐎呢1 打开题目 我们随便上传个木马文件上去 我们bp抓包看看

Linux 系统中提供CPU性能分析工具整理

Linux 系统中提供CPU性能分析工具整理 汇总 查看CPU信息 在linux操作系统中,CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过 cat /proc/cpuinfo 查看一下: cat /proc/cpuinfo显示如下: rootthe…

gitlab docker部署,备份,恢复。附踩坑记录

本次安装在CentOS7下进行 1、安装yum 检查是否已经安装yum yum --version如果未安装 sudo yum install -y yum-utils添加镜像源: 国外镜像源:yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo阿里镜像源&am…

Xshell7和Xftp7超详细下载教程(包括安装及连接服务器附安装包)

1.下载 1.官网地址: XSHELL - NetSarang Website 选择学校免费版下载 2.将XSHELL和XFTP全都下载下来 2.安装 安装过程就是选择默认选项,然后无脑下一步 3.连接服务器 1.打开Xshell7,然后新建会话 2.填写相关信息 出现Connection establi…

香港服务器选纯国际线路上网稳定吗?

​  关于香港服务器的线路,我们平时接触较多的分三大类,即纯国际线路、回国专线和香港本地线路。三者价格上存有差距,原因体现在线路和网络质量上,当然这些会关系到服务器的速度和稳定性。譬如,有些用户在选择了纯国…

说明书MS2721A频谱分析仪7.1GHz

安立Anritsu MS2721A 频谱分析仪 MS2721A 是 Anritsu 的 7.1 GHz 频谱分析仪。频谱分析仪测量已知和未知信号的频谱功率。频谱分析仪收集信息,例如输入信号与其频率相比的幅度。作为频率分析仪,频谱分析仪的主要用途是记录和分析电输入信号以及其他信号的…

[23] IPDreamer: Appearance-Controllable 3D Object Generation with Image Prompts

pdf Text-to-3D任务中,对3D模型外观的控制不强,本文提出IPDreamer来解决该问题。在NeRF Training阶段,IPDreamer根据文本用ControlNet生成参考图,并将参考图作为Zero 1-to-3的控制条件,用基于Zero 1-to-3的SDS损失生成…

【想法】取代NI的 PCIe-8371

PCIe-8371 涨价非常厉害。 PCA3 https://www.terasic.com.tw/cgi-bin/page/archive.pl?LanguageEnglish&CategoryNo65&No1143 PCA3 (PCIe Cable Adapter, Gen 3) is a conversion card to connect boards with your host PC. It can support up to PCIe Gen 3 x4. …