日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2024/9/27 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的SpringBoot 整合 Spring Cloud Alibaba Nacos 连通性+负载均衡的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。