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

这篇具有很好参考价值的文章主要介绍了SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

引出

使用Nacos、Open Feign、Gateway、Sentinel技术栈实现XX公司订单、库存、积分的案例开发,以下是服务调用关系文章来源地址https://www.toymoban.com/news/detail-716137.html

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

小项目要求

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

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

(二)数据库设计:

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

(三)项目需求

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

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

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

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

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

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

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

(9)实现网关限流功能

  • 使用Sentinel限流,流量整形

创建极简数据库表

订单表,订单明细表

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

/*
 Navicat Premium Data Transfer

 Source Server         : 127.0.0.1
 Source Server Type    : MySQL
 Source Server Version : 80022
 Source Host           : 127.0.0.1:3306
 Source Schema         : consumer_goods_order

 Target Server Type    : MySQL
 Target Server Version : 80022
 File Encoding         : 65001

 Date: 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;

商品表

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

/*
 Navicat Premium Data Transfer

 Source Server         : 127.0.0.1
 Source Server Type    : MySQL
 Source Server Version : 80022
 Source Host           : 127.0.0.1:3306
 Source Schema         : consumer_goods_product

 Target Server Type    : MySQL
 Target Server Version : 80022
 File Encoding         : 65001

 Date: 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;

积分表

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

/*
 Navicat Premium Data Transfer

 Source Server         : 127.0.0.1
 Source Server Type    : MySQL
 Source Server Version : 80022
 Source Host           : 127.0.0.1:3306
 Source Schema         : consumer_goods_points

 Target Server Type    : MySQL
 Target Server Version : 80022
 File Encoding         : 65001

 Date: 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;

相关微服务

积分微服务

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

产品微服务

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

订单微服务

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

调用积分和订单微服务

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

网关微服务

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

登陆认证通过网关

下面是我用的token

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiJ9.Gdsp9Fz9DTbekM7maxJVceuWZeEZlF0Ir0NuzHbE7kc

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

权限从redis中获取

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

sentinel相关

使用Sentinel限流,流量整形

进行配置

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

JMeter测试工具

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

http请求

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

线程数设置

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

sentinel中查看监控波形图

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

JMeter后台结果树

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

消峰填谷

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

采用均匀排除的策略

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel

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

SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈,# open source,spring cloud,gateway,sentinel


总结

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

到了这里,关于SpringCloud小项目——订单积分商城 & 使用Nacos、Open Feign、Gateway、Sentinel技术栈的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud(一)Eureka、Nacos、Feign、Gateway

    微服务,又叫微服务架构,是一种软件架构方式。它将应用构建成一系列按业务领域划分模块的、小的自治服务。 在微服务架构中,每个服务都是自我包含的,并且实现了单一的业务功能。简单来说,就是将一个系统按业务划分成多个子系统,每个子系统都是完整的,可独立

    2024年02月08日
    浏览(39)
  • 【SpringCloud Alibaba】Nacos服务管理与Feign负载均衡

    目录 一、微服务搭建 1.1 服务提供者与服务消费者 1.2 依赖关系   二、服务注册与负载均衡使用 2.1 Nacos 实现服务的注册与发现 2.2 Loadbalancer负载均衡、Feign声明式服务调用 2.3 示例综合实现 2.3.1 服务注册与发现测试 2.3.2 负载均衡测试  服务提供者 服务的被调用方(即:为其他微

    2024年02月03日
    浏览(44)
  • 39.SpringCloud—配置管理nacos、远程调用Feign、服务网关Gateway

    目录 一、SpringCloud。 (1)Nacos配置管理。 (1.1)nacos中添加配置文件、微服务引入依赖,并配置bootstrap.yml文件。 (1.2)获取配置文件信息,实现热更新。 (1.3)多环境配置共享。 (1.4)多服务共享配置。 (2)http客户端Feign。 (2.1)RestTemplate方式调用存在的问题。 (2.2)

    2024年02月10日
    浏览(70)
  • SpringCloud实用篇2——Nacos配置管理 Feign远程调用 Gateway服务网关

    Nacos除了可以做注册中心,同样可以做配置管理来使用。 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中管理所有实例的配置。 Nacos一方面可以将配置集中管理,另一方可以

    2024年02月13日
    浏览(49)
  • spring cloud整合spring boot,整合nacos、gateway、open-feign等组件

    想看具体详情的可以看我的github链接:codeking01/platform-parent: spring cloud整合spring boot、nacos、gateway、open feign等组件 (github.com) 由于我升级了jdk17,所以用上了spring boot 3.0.2了。 踩坑无数,一堆无用文章,写来写去,本文主要是提供给有基础的开发者再次快速搭建使用(确定版本

    2024年02月11日
    浏览(54)
  • Nacos使用(下):SpringBoot和SpringCloud项目中使用Nacos

    Nacos使用(上):Nacos安装 Nacos使用(中):Java项目和Spring项目使用Nacos Nacos使用(下):SpringBoot和SpringCloud项目中使用Nacos 父工程指定springboot版本: 导入jar包 配置文件application.properties 启动类 Nacos上创建一个配置文件 属性可以直接通过@NacosValue读取,也可以映射到一个配置类中 配置

    2024年02月10日
    浏览(38)
  • SpringBoot项目--电脑商城【确认订单】

    用户在购物车列表页中通过随机勾选相关的商品,在点击\\\"结算\\\"按钮后跳转到\\\"确认订单页\\\",在这个页面中需要展示用户在上个页面所勾选的\\\"购物车列表页\\\"中对应的数据.说白了也就是列表展示,且展示的内容还是来自于购物车表.但是用户勾选了哪些商品呢,所 以\\\"购物车列表页\\\"需

    2024年02月09日
    浏览(35)
  • 微服务入门 | 项目分割 | 远程调度Feign | 用户中心erueka 和 nacos

    单体架构:所有功能集中在一个项目中开发,打成一个包部署 分布式架构:就是各功能模块的代码不在同一个项目中写了,到时候修改其中一个过能的代码,对另一个功能完全没有任何影响(如果在一个项目中,修改这个功能的代码,就得将所有功能代码给重新编译) 问题

    2024年01月18日
    浏览(40)
  • SpringCloud:Feign的使用及配置

    目录 Feign的使用及配置 1、Feign替代RestTemplate 2、使用Fegin步骤 3、自定义配置 4、Feign使用优化 5、Feign的最佳实践方式 1、Feign替代RestTemplate RestTemplate方式远程调用的问题  问题: 1、代码可读性差,编程体验不同统一 2、参数复杂,URL难以维护 Feign介绍 Feign是一个声明式的htt

    2024年02月08日
    浏览(28)
  • 基于SpringCloud + Oauth2.0 + ShiroRedis + JWT + Gateway + Nacos + Nginx + Vue实现的SaaS数字商城系统

    SaaS的英文全称是Software as a Service,意思是软件即服务 ,是云计算的其中一种服务模式 SaaS是一种通过Internet提供集中托管应用程序的方式,企业用户一般通过客户端或网页来使用,无需购买、安装或维护任何软件及硬件,因此 SaaS应用程序又被称为\\\"基于Web的软件\\\" 或 \\\"托管软件

    2024年01月20日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包