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,一经查实,立即删除!

相关文章

使用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 功能。本…

使用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…

(企业案例)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测试第一名后&#…

由一次磁盘告警引发的“血案”——你知道 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. 创建微服务 &&…

都听我的,会养猪种菜的工程师最帅了!

来了&#xff01;今天&#xff0c;阿里数字农业事业部在黑龙江首次亮相&#xff0c;并且定了一个小目标&#xff1a;到2022年&#xff0c;阿里涉农产品全年网络销售额破4000亿元。 黑龙江省牡丹江市的阿里巴巴响水大米种植基地&#xff0c;又到了收割季 数字农业事业部将建立产…

清华硕士一针见血:这些才是机器学习必备的数学基础

现如今&#xff0c;计算机科学、人工智能、数据科学已成为技术发展的主要推动力。无论是要翻阅这些领域的文章&#xff0c;还是要参与相关任务&#xff0c;你马上就会遇到一些拦路虎&#xff1a;想过滤垃圾邮件&#xff0c;不具备概率论中的贝叶斯思维恐怕不行&#xff1b;想试…

如何查看使用 Cloud Toolkit 部署应用的实时日志

之前&#xff0c;我们介绍了《在 IntelliJ IDEA 中部署应用到服务器》。最新版本 Cloud Toolkit 新增了对远程服务器应用部署时&#xff0c;实时日志的查看功能。功能预览如下&#xff1a; 打开应用部署的配置界面&#xff0c;如上图所示&#xff0c;点击「Advanced」标签页&am…

这 10 个云计算错误,会让你的业务一蹶不振!

作者 | John Edwards译者 | 火火酱&#xff0c;责编 | Carol出品 | CSDN 云计算&#xff08;CSDNcloud&#xff09;封图 | CSDN 付费下载自视觉中国乐观主义者们总爱说&#xff1a;“乌云总是镶着金边的”&#xff0c;但他们没有说的是&#xff0c;在乌云下常有狂风、暴雨、闪电…

MySQL 8.0.26 简易配置安装教程 (windows 64位)

文章目录一、软件下载解压1. 官网下载2.下载完成后解压二、mysql配置2.1. my.ini2.2. 初始化MySQL2.3. 安装MySQL服务2.4. mysql已经安装过了2.5. 启动MySQL的服务三、密码修改3.1. 登录mysql3.2. 修改密码3.3. 退出mysql四、客户端连接mysql4.1. Navicat4.2. 登录mysql4.3. 操…