SpringBoot 整合 Spring Cloud Alibaba Nacos 连通性+负载均衡

文章目录

          • 一、整合版本说明
            • 1. 毕业版本依赖关系(推荐使用)
            • 2. 组件版本关系
            • 3. 演示版本
          • 二、整合实战
            • 2.1. 聚合模块设计
            • 2.2. 创建聚合parent
            • 2.3. 依次创建子项目
          • 三、子模块配置
            • 3.1. 订单模块
            • 3.2. 产品模块
            • 3.3. 用户模块
            • 3.4. 扣库存模块
            • 3.5. 购物车模块
          • 四、测试案例
            • 4.1. 订单模块
            • 4.2. 产品模块
            • 4.3. 用户模块
            • 4.4. 扣库存模块
            • 4.5. 购物车模块
          • 五、连通性测试
            • 5.1. 请求地址
            • 5.2. nacos服务端
            • 5.3. 效果图
          • 六、负载均衡测试
            • 6.1. 请求地址
            • 6.2. 测试设计
            • 6.3. 登陆nacos
            • 6.4. 连续请求10次,观察命中概率
            • 6.5. nacos 将服务下线
            • 6.6. 重新上线
            • 6.7. 码云开源地址

一、整合版本说明
1. 毕业版本依赖关系(推荐使用)
Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot Version
Spring Cloud 2020.0.02021.12.4.2
Spring Cloud Hoxton.SR92.2.6.RELEASE2.3.2.RELEASE
Spring Cloud Greenwich.SR62.1.4.RELEASE2.1.13.RELEASE
Spring Cloud Hoxton.SR32.2.1.RELEASE2.2.5.RELEASE
Spring Cloud Hoxton.RELEASE2.2.0.RELEASE2.2.X.RELEASE
Spring Cloud Greenwich2.1.2.RELEASE2.1.X.RELEASE
2. 组件版本关系
Spring Cloud Alibaba VersionSentinel VersionNacos VersionRocketMQ VersionDubbo VersionSeata Version
2.2.6.RELEASE1.8.11.4.24.4.02.7.81.3.0
2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE1.8.01.4.14.4.02.7.81.3.0
2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE1.8.01.3.34.4.02.7.81.3.0
2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE1.7.11.2.14.4.02.7.61.2.0
2.2.0.RELEASE1.7.11.1.44.4.02.7.4.11.0.0
3. 演示版本
Spring Cloud VersionSpring Cloud Alibaba VersionSpring Boot VersionNacos Versionjdk
Spring Cloud Hoxton.SR92.2.6.RELEASE2.3.2.RELEASE1.4.21.8.202

官网地址:
https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

二、整合实战
2.1. 聚合模块设计
模块划分微服务划分端口
订单模块order-serv8000
产品模块product-serv9000
用户模块user-serv15000
扣库存模块stock-serv11000
购物车模块shopcart-serv12000
2.2. 创建聚合parent

创建maven父工程名称为EShopParent

父工程依赖添加
```bash<!--服务注册发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependencyManagement><dependencies><!--spring-cloud-alibaba 版本控制--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
2.3. 依次创建子项目

依次创建5个子模块

三、子模块配置
3.1. 订单模块
server:port: 8000
spring:cloud:nacos:discovery:service: order-servserver-addr: localhost:8848

启动类

package com.gblfy;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {@Bean@LoadBalanced//负载均衡+动态路路由public RestTemplate restTemplate() {return new RestTemplate();}public static void main(String[] args) {SpringApplication.run(OrderApplication.class);}
}
3.2. 产品模块
server:port: 9000
spring:cloud:nacos:discovery:service: product-servserver-addr: localhost:8848
3.3. 用户模块
server:port: 15000
spring:cloud:nacos:discovery:service: user-servserver-addr: localhost:8848
3.4. 扣库存模块
server:port: 11000
spring:cloud:nacos:discovery:service: stock-servserver-addr: localhost:8848
3.5. 购物车模块
server:port: 12000
spring:cloud:nacos:discovery:service: shop-cart-servserver-addr: localhost:8848
四、测试案例
4.1. 订单模块
package com.gblfy.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class OrderController {@Autowiredprivate RestTemplate restTemplate;//http://localhost:8000/order/create?productId=11&userId=11222@GetMapping("/order/create")public String createOrder(Integer productId, Integer userId) {// 调用商品服务,通过商品ID获取商品名称String productNmae = restTemplate.getForObject("http://product-serv/product/" + productId, String.class);// 调用用户服务,通过用户ID获取用户名称String userNmae = restTemplate.getForObject("http://user-serv/user/" + userId, String.class);// 调用扣库存服务,通过商品ID将已购买的商品从库存中删除String result = restTemplate.getForObject("http://stock-serv/stock/reduce/" + productId, String.class);// 调用个购物车服务,通过商品ID和用户ID将已购买的商品从购物车中移除String shopCartResult = restTemplate.getForObject("http://shop-cart-serv/shopcart/remove?productId=" + productId + "&userId=" + userId, String.class);return "[用户]: " + userNmae + " 购买商品 " + productNmae + " " + result + " " + shopCartResult;}
}
4.2. 产品模块
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ProductController {//http://localhost:9000/product/" + productId@GetMapping("/product/{productId}")public String getProductName(@PathVariable Integer productId) {return "IPhone 12";}
}
4.3. 用户模块
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@GetMapping("/user/{userId}")public String getUserName(@PathVariable Integer userId) {return "gblfy专家";}
}
4.4. 扣库存模块
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
public class StockController {@GetMapping("/stock/reduce/{productId}")public String reduce(@PathVariable Integer productId) {System.out.println("减库存一个成功");return "减库存一个成功!";}
}
4.5. 购物车模块
package com.gblfy.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ShopCartController {@GetMapping("/shopcart/remove")public String remove(Integer productId, Integer userId) {return "移除购物车成功!";}
}
五、连通性测试
5.1. 请求地址
http://localhost:9000/order/create?productId=11&userId=11222
5.2. nacos服务端

Nacos 官网:
https://nacos.io/zh-cn/docs/quick-start.html
在这里插入图片描述

5.3. 效果图

在这里插入图片描述
以上5个微服务集成nacos完毕!并测试连通性测试通过!

六、负载均衡测试
6.1. 请求地址
http://localhost:9000/order/create?productId=11&userId=11222
6.2. 测试设计

分别启动3个订单模块端口为9000、9001、9002
分别启动3个扣库存模块端口为8000、8001、8002
在这里插入图片描述

6.3. 登陆nacos

在这里插入图片描述

6.4. 连续请求10次,观察命中概率

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

6.5. nacos 将服务下线

在这里插入图片描述
应用不停止
在这里插入图片描述
nacos观察服务状态已下线
在这里插入图片描述

再次测试
请求地址:

http://localhost:9000/order/create?productId=11&userId=11222

在这里插入图片描述

6.6. 重新上线

将下线的项目服务重新上线
负载均衡测试,应该和正常请求一样这里就不演示了。

6.7. 码云开源地址

https://gitee.com/gb_90/eshop-parent

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

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

相关文章

蚂蚁金服OceanBase挑战TPCC|TPC-C基准测试之数据库事务引擎挑战

蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注&#xff0c;为了更清楚的展示其中的技术细节&#xff0c;我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读&#xff0c;共包括五篇&#xff1a; 1&#xff09;TPC-C基准测试介绍 2&#xff09;OceanBase…

零钱通OOP编程

零钱通OOP编程 package com.hspedu.smallchange.oop;import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;/****该是完成零钱通的各个功能类* 使用OOP&#xff08;面向对象编程&#xff09;* 将各个功能对应一个方法*/public class SmallCha…

使用dubbo后尽量不用要@Service可能引起冲突

如下有几个包都含有Service dubbo最新版本2.7.8&#xff0c;已经把Service换成DubboService 示例实现类 package com.dubboprovider.service;import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Component;//zookeeper 服务注…

面试中遇到这 3 个SQL问题,最容易掉坑里!

作者 | Nathan R译者 | 天道酬勤&#xff0c;责编 | Carol封图 | CSDN下载自视觉中国在本文中&#xff0c;作者将介绍来自3个在技术面试中的真实的SQL问题&#xff0c;这些问题都是在实际公司进行技术筛选时提出的。最常见的读者问题&#xff1a;我应该如何准备SQL面试&#xf…

云原生数据库POLARDB专场“硬核”解析

POLARDB是阿里巴巴自主研发的云原生关系型数据库&#xff0c;目前兼容三种数据库引擎&#xff1a;MySQL、PostgreSQL、Oracle。POLARDB的计算能力最高可扩展至1000核以上&#xff0c;存储容量可达100TB。 POLARDB融合了商业数据库稳定、可靠、高性能的特征&#xff0c;同时具有…

K8s 从懵圈到熟练 – 集群网络详解

导读&#xff1a;阿里云 K8S 集群网络目前有两种方案&#xff1a;一种是 flannel 方案&#xff1b;另外一种是基于 calico 和弹性网卡 eni 的 terway 方案。Terway 和 flannel 类似&#xff0c;不同的地方在于 terway 支持 Pod 弹性网卡&#xff0c;以及 NetworkPolicy 功能。本…

java12/6作业1

作业1 package com.hspjava.Day01;public class Homework01 {//定义Person类{name,age,job},初始化Person对象数组&#xff0c;有3个person对象&#xff0c;并按照age从大到小进行排序public static void main(String[] args) {//初始化Person 对象数组&#xff0c;有3个perso…

使用dubbo后尽量不用要@Reference可能引起冲突

使用dubbo后尽量不用要Reference可能引起冲突 dubbo最新版本2.7.8&#xff0c;已经把Reference换成DubboReference

年薪高达30万,人才缺口40万,这个神仙职业今年太火了!

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…

不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式

出身豪门、大厂背书的 Kubernetes 项目自 2014 年 6 月开源以来&#xff0c;在众多厂商和开源爱好者的共同努力下迅速崛起&#xff0c;时至今日已成长为容器管理领域的事实标准。凭借超前的设计理念、开放的参与门槛、国内外大厂和开发者的大力支持&#xff0c;它的成功不言而喻…

当我们在聊 Serverless 时你应该知道这些

作者 | 杨泽强&#xff08;竹涧&#xff09;阿里云技术专家 说起当前最火的技术&#xff0c;除了最新的区块链、AI&#xff0c;还有一个不得不提的概念是 Serverless。Serverless 作为一种新型的互联网架构&#xff0c;直接或间接推动了云计算的发展&#xff0c;从 AWS Lambda…

nacos集成dubbo实现远程服务调用

文章目录1. 模块划分设计2. 创建父工程3. 创建公共接口4. 服务端5. 客户端6. nacos7. 测试8. 码云开源地址1. 模块划分设计 模块名工程名端口父工程nacos-dubbo无服务端nacos-dubbo-provider9000消费端nacos-dubbo-consumer8000公共接口nacos-dubbo-interface无 2. 创建父工程…

如何在容器内高效编程?

作者 | Daniel Lemire译者 | 苏本如&#xff0c;责编 | 郭芮头图 | CSDN 下载自东方IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;以下为译文&#xff1a;我个人的编程环境中包括了一些服务器、笔记本电脑和台式电脑。我的服务器是在不同的时间购买和配置的&am…

蚂蚁金服OceanBase挑战TPCC | TPC-C基准测试之存储优化

蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注&#xff0c;为了更清楚的展示其中的技术细节&#xff0c;我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读&#xff0c;共包括五篇&#xff1a; 1&#xff09;TPC-C基准测试介绍 2&#xff09;OceanBase…

(企业案例)Nacos Config 进阶使用

文章目录一、SpringBoot 使用 Nacos Config 实现多环境切换1. 现象2. 引入依赖3. 添加bootstrap.yaml配置文件4. 配置对应关系图5. 文件格式简述6. 启动nacos7. 添加生产配置8. 添加测试controller9. 启动Springboot工程并观察到如下日志则为成功10. 浏览器验证11. 调整激活环境…

OceanBase如何获得TPC-C测试第1名?

阿里妹导读&#xff1a;TPC-C是TPC组织&#xff08;国际事务性能委员会&#xff09;制定的关于商品销售的订单创建和订单支付等的基准测试标准&#xff0c;是数据库联机交易处理系统的权威基准测试标准。 蚂蚁金服自研的分布式关系数据库OceanBase获得TPC-C测试第一名后&#…

简单查询(DQL)

简单查询&#xff08;DQL&#xff09; 1. 查询一个字段&#xff1f; ​ select 字段名 form 表名; ​ 其中要注意&#xff1a; ​ select 和 form 都是关键字 ​ 字段名和表名都是标识符 强调&#xff1a; 所有SQL语句都是“&#xff1b;”结尾 2.查询两个字段&#xf…

由一次磁盘告警引发的“血案”——你知道 du 和 ls 区别吗?

来源 | 程序猿石头责编 | Carol封图 | CSDN下载自视觉中国图来源于 SkyPixel知道为什么会有上面的结果吗&#xff1f;什么又是稀疏文件&#xff1f;这篇文章将为你揭秘。问题背景确切地说&#xff0c;不是收到的自动告警短信或者邮件告诉我某机器上的磁盘满了&#xff0c;而是某…

如何优化大规模推荐?下一代算法技术JTM来了

阿里妹导读&#xff1a;搜索&#xff0c;推荐和广告是互联网内容提供商进行价值创造的核心业务&#xff0c;在阿里巴巴的电子商务交易平台上&#xff0c;搜索&#xff0c;推荐和广告业务同样具有举足轻重的意义和价值。现在&#xff0c;阿里推荐技术又双叒优化了&#xff0c;新…

Sentinel 基于Nacos规则持久化-推模式

文章目录一、推模式架构图二、原理简述2.1. 组件版本关系2.2. 控制台推送规则三、Sentinel控制台改造3.1. 下载源码3.2. 修改pom3.3. 重要文件复制3.4. 注册地址修改3.5. 请求实例需改3.6. 菜单新增四、编译 & 启动4.1. 先启动nacos4.2. 编译打包4.3. 创建微服务 &&…