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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringCloud Ribbon实战(三)

發(fā)布時間:2025/3/15 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud Ribbon实战(三) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接著上一篇關(guān)于ribbon介紹(服務(wù)提供者只有一個我們似乎沒有感覺到負(fù)載均衡)我們接著講ribbon真正的負(fù)載均衡

我們就多創(chuàng)建兩個微服務(wù)提供者,怎么創(chuàng)建微服務(wù)工程之前我們就講過了這里不在多說,如果不懂請參考https://blog.csdn.net/ywl470812087/article/details/102636250

下面就是創(chuàng)建好的

?

1,pom.xml文件jar包依賴

microservicecloud-provider-dept-8002微服務(wù)工程pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>microservicecloud</artifactId><groupId>com.atguigu.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-provider-dept-8002</artifactId><dependencies><!-- 引入自己定義的api通用包,可以使用Dept部門Entity --><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>microservicecloud-api</artifactId><version>${project.version}</version></dependency><!-- actuator監(jiān)控信息完善 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 將微服務(wù)provider側(cè)注冊進(jìn)eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 修改后立即生效,熱部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--fork : 如果沒有該項(xiàng)配置,可能這個devtools不會起作用,即應(yīng)用不會restart--><fork>true</fork></configuration></plugin></plugins></build></project>

microservicecloud-provider-dept-8003微服務(wù)工程pom.xml

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>microservicecloud</artifactId><groupId>com.atguigu.springcloud</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>microservicecloud-provider-dept-8003</artifactId><dependencies><!-- 引入自己定義的api通用包,可以使用Dept部門Entity --><dependency><groupId>com.atguigu.springcloud</groupId><artifactId>microservicecloud-api</artifactId><version>${project.version}</version></dependency><!-- actuator監(jiān)控信息完善 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 將微服務(wù)provider側(cè)注冊進(jìn)eureka --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- 修改后立即生效,熱部署 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional><scope>true</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--fork : 如果沒有該項(xiàng)配置,可能這個devtools不會起作用,即應(yīng)用不會restart--><fork>true</fork></configuration></plugin></plugins></build></project>

2,yml配置文件

注意:#數(shù)據(jù)庫密碼根據(jù)自己的mysql來配置

server:port: 8002mybatis:config-location: classpath:mybatis/mybatis.cfg.xml #mybatis所在路徑type-aliases-package: com.atguigu.springcloud.entities #entity別名類mapper-locations:- classpath:mybatis/mapper/**/*.xml #mapper映射文件spring:application:name: microservicecloud-dept datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: org.gjt.mm.mysql.Driverurl: jdbc:mysql://localhost:3306/cloudDB02username: rootpassword: xxxx #數(shù)據(jù)庫密碼根據(jù)自己的mysql來配置dbcp2:min-idle: 5initial-size: 5max-total: 5max-wait-millis: 200eureka:client: #客戶端注冊進(jìn)eureka服務(wù)列表內(nèi)service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8002 #自定義服務(wù)名稱信息prefer-ip-address: true #訪問路徑可以顯示IP地址info:app.name: atguigu-microservicecloudcompany.name: www.atguigu.combuild.artifactId: $project.artifactId$build.version: $project.version$ server:port: 8003 #端口mybatis:config-location: classpath:mybatis/mybatis.cfg.xml #mybatis所在路徑type-aliases-package: com.atguigu.springcloud.entities #entity別名類mapper-locations:- classpath:mybatis/mapper/**/*.xml #mapper映射文件spring:application:name: microservicecloud-dept datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: org.gjt.mm.mysql.Driverurl: jdbc:mysql://localhost:3306/cloudDB03 username: rootpassword: xxxx #數(shù)據(jù)庫密碼根據(jù)自己的mysql來配置dbcp2:min-idle: 5initial-size: 5max-total: 5max-wait-millis: 200eureka:client: #客戶端注冊進(jìn)eureka服務(wù)列表內(nèi)service-url: defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/instance:instance-id: microservicecloud-dept8003 #自定義服務(wù)名稱信息prefer-ip-address: true #訪問路徑可以顯示IP地址info:app.name: atguigu-microservicecloudcompany.name: www.atguigu.combuild.artifactId: $project.artifactId$build.version: $project.version$

最關(guān)鍵的一點(diǎn)注意:微服務(wù)實(shí)例不能變統(tǒng)一??microservicecloud-dept

spring:application:name: microservicecloud-dept

之前我們講過每個微服務(wù)可以擁有自己獨(dú)立的數(shù)據(jù)庫,這里我們就創(chuàng)建其他兩個數(shù)據(jù)庫

clouddb02? ?創(chuàng)建腳本(初始化幾條數(shù)據(jù))

DROP DATABASE IF EXISTS clouddb02 ; CREATE DATABASE clouddb02 CHARACTER SET UTF8; USE clouddb02; CREATE TABLE dept (deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT ,dname VARCHAR(60),db_source VARCHAR(60) );INSERT INTO dept(dname,db_source) VALUES('開發(fā)部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('財務(wù)部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('市場部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('運(yùn)維部',DATABASE());SELECT * FROM dept;

clouddb03? ?創(chuàng)建腳本(初始化幾條數(shù)據(jù))

DROP DATABASE IF EXISTS clouddb03 ; CREATE DATABASE clouddb03 CHARACTER SET UTF8; USE clouddb03; CREATE TABLE dept (deptno BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT ,dname VARCHAR(60),db_source VARCHAR(60) );INSERT INTO dept(dname,db_source) VALUES('開發(fā)部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('人事部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('財務(wù)部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('市場部',DATABASE()); INSERT INTO dept(dname,db_source) VALUES('運(yùn)維部',DATABASE());SELECT * FROM dept;

?

3,拷貝microservicecloud-provider-dept-8001到其他兩個微服務(wù)工程

這里我就不講了,相信大家都會??截愅瓿芍笪覀冃枰阎鲉宇惖拿址謩e改成:DeptProvider8002_App? ? ? ? ? ? ? ? ? ?DeptProvider8003_App

package com.atguigu.springcloud;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication @EnableEurekaClient //本服務(wù)啟動后會自動注冊進(jìn)eureka服務(wù)中 @EnableDiscoveryClient //服務(wù)發(fā)現(xiàn) public class DeptProvider8001_App {public static void main(String[] args) {SpringApplication.run(DeptProvider8001_App.class, args);} }

?

拷貝和修改完成我們的3個微服務(wù)提供者就配置完成

??下面我們就來測試一下:

1,首先啟動eureka集群,如果不懂eureka集群請參考學(xué)習(xí)這篇文章,這里就不多說了

2,啟動3個微服務(wù)提供者,如果不懂微服務(wù)提供者實(shí)現(xiàn)請參考https://blog.csdn.net/ywl470812087/article/details/102535582

自測啟動是否成功:

3,啟動客戶端消費(fèi)者

注意:現(xiàn)在consumer可是帶著@LoadBalanced算法的

訪問:http://localhost/consumer/dept/list

再次訪問:http://localhost/consumer/dept/list

再次訪問:http://localhost/consumer/dept/list

看見沒有訪問返回的結(jié)果是不是可以看出已經(jīng)起到了負(fù)載均衡的效果輪詢訪問。

從注冊中心我們也可以看見一個微服務(wù)下掛著三個實(shí)例

以上ribbon的負(fù)載均衡已經(jīng)講解完畢是不是覺得很簡單

總結(jié):Ribbon就是軟負(fù)載均衡的客戶端組件,可以和其他所需請求的客戶端結(jié)合使用,和eureka結(jié)合只是其中一個實(shí)例

?

?

?

總結(jié)

以上是生活随笔為你收集整理的SpringCloud Ribbon实战(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。