您好,登錄后才能下訂單哦!
本篇文章為大家展示了Spring Cloud中配置高可用注冊中心集群和ribbon-負載均衡,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
創(chuàng)建父項目
步驟一:父項目 could_parent
步驟二:修改pom.xml文件,配置 spring boot 版本,spring cloud版本,鎖定cloud依賴,確定cloud私有倉庫
<!--1 確定spring boot的版本--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> </parent> <!--2 確定版本--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <spring-cloud-release.version>Greenwich.RELEASE</spring-cloud-release.version> </properties> <!-- 3 鎖定sprig cloud版本--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud-release.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <!-- 4 確定spring cloud私有倉庫--> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
創(chuàng)建注冊中心
步驟一:創(chuàng)建項目 eureka_demo
步驟二:修改pom.xml,配置 web 和 eureka server 依賴
<dependencies> <!--web起步依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Eureka服務端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
步驟三:創(chuàng)建yml文件,配置端口號、服務名、注冊地址
#端口號 server: port: 10086 #服務名 spring: application: #服務名不可以使用下劃線 列如:eureka_demo 在后面的調用中下劃線會變成空格從而導致找不到該服務 name: eurekaDemo3 #注冊地址 eureka: client: service-url: defaultZone: http://localhost:10086/eureka register-with-eureka: false #是否注冊自己到注冊中心 fetch-registry: false #是否從注冊中心拉取服務列表
步驟四:創(chuàng)建啟動類,添加開啟eureka server注解 @EnableEurekaServer
package com.czxy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer //開啟eureka service public class EurekaDemoApplication { public static void main(String[] args) { SpringApplication.run(EurekaDemoApplication.class,args); } }
配置高可用的注冊中心:集群
步驟一:修改注冊中心(eureka_demo) 核心yml文件,application.yml,只配置服務名(共享內容)
#服務名 spring: application: name: eurekaDemo
步驟二:創(chuàng)建 application-10086.yml,配置10086端口和注冊路徑(10087)
#端口號 server: port: 10086 #注冊地址 eureka: client: service-url: defaultZone: http://localhost:10087/eureka register-with-eureka: true #是否注冊自己到注冊中心,默認值true(可省略) fetch-registry: true #是否從注冊中心拉取服務列表,默認值true(可省略)
步驟三:創(chuàng)建 application-10087.yml,配置10087端口和注冊路徑(10086)
#端口號 server: port: 10087 #注冊地址 eureka: client: service-url: defaultZone: http://localhost:10086/eureka register-with-eureka: true #是否注冊自己到注冊中心 fetch-registry: true #是否從注冊中心拉取服務列表
步驟四:修改核心yml文件,激活10086配置,并啟動程序, 此時控制臺拋異常,10087還沒有啟動,等10087啟動后異常自動消失。
#服務名 spring: application: name: eurekaDemo profiles: active: 10086
步驟五:修改核心yml文件,激活10087配置,并啟動程序(idea不支持多啟動 需要手動設置,不同版本不同設置)
#服務名 spring: application: name: eurekaDemo profiles: active: 10087
所有注冊中心yml
IDEA中配置多啟動
步驟一:創(chuàng)建 spring boot啟動項
步驟二:配置10087啟動 同配置10086一樣(此處省略)
步驟三:啟動
創(chuàng)建服務提供方 eureka_service4 (集群)
pom文件:
<dependencies> <!--web起步依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Eureka客戶端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--spring boot監(jiān)控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
同一個名稱的服務,只要提供多個實例,注冊到eureka中,就可以自動形成集群。
步驟一:創(chuàng)建 application-8081.yml文件,并配置端口號8081
server: port: 8081
步驟二:創(chuàng)建 application-8082.yml文件,并配置端口號8082
server: port: 8081
步驟三:為兩個yml文件,分別配置啟動項 (同上10086,10087配置一樣)
步驟四:啟動,測試
在服務提供方 eureka_service3 中添加controller方便測試數(shù)據
package com.czxy.controller; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @RestController @RequestMapping("/test") public class TestController { @GetMapping public ResponseEntity<String> test(HttpServletRequest request){ //端口號 return ResponseEntity.ok("測試數(shù)據" + request.getServerPort()); } }
創(chuàng)建服務調用方
步驟一:創(chuàng)建項目 eureka_client3
步驟二:核心3步,pom文件,yml文件,啟動類
pom文件:
<dependencies> <!--web起步依賴--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Eureka客戶端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <!--spring boot監(jiān)控--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
yml文件:
server: port: 9090 spring: application: name: eurekaClient eureka: client: service-url: defaultZone: http://localhost:10086/eureka
啟動類 :
package com.czxy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class,args); } }
步驟三:編寫配置類,配置RestTemplate實例 ,讓RestTemplate支持“服務名”訪問機制 需要添加注解 @LoadBalanced
package com.czxy.config; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class HttpConfig { @Bean @LoadBalanced //讓RestTemplate支持負載均衡,也就是說支持“服務名”訪問 public RestTemplate restTemplate(){ return new RestTemplate(); } }
步驟四:修改dao,使用RestTemplate進行遠程調用時,使用“服務名”進行調用即可。
package com.czxy.dao; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; @Component public class DataDao { @Resource private RestTemplate restTemplate; public ResponseEntity<String> data(){ // String url = "http://localhost:8081/test"; String url = "http://service3/test"; return restTemplate.getForEntity(url,String.class); } }
測試結果:
上述內容就是Spring Cloud中配置高可用注冊中心集群和ribbon-負載均衡,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。