1.搭建註冊中心--Eurakajava
1-1 pom文件web
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
1-2 application.yml
spring
server: port: 8761 eureka: instance: hostname: eureka-server #實例主機名 client: register-with-eureka: false #不把本身註冊到eureka上 fetch-registry: false #不從eureka上獲取服務的註冊信息 service-url: defaultZone: http://localhost:8761/eureka/
1-3 啓動類
app
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * 註冊中心 */ @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
1-4 啓動main方法 訪問http://localhost:8761/ 負載均衡
2 服務提供者maven
2-1 pom文件ide
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
2-2 yml文件spring-boot
server: port: 8002 spring: application: name: provider-ticket eureka: instance: prefer-ip-address: true # 註冊服務的時候使用服務的ip地址 client: service-url: defaultZone: http://localhost:8761/eureka/ #註冊到這個地址
提供者結構圖測試
2-3 控制層fetch
import com.atguigu.providerticket.service.TicketService; import com.netflix.discovery.converters.Auto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TicketController { @Autowired TicketService ticketService; @GetMapping("/getTicket") public String getTicket(){ System.out.println("8002"); String ticket = ticketService.getTicket(); return ticket; } }
2-4 實現類
import org.springframework.stereotype.Service; @Service public class TicketService { public String getTicket(){ return "<厲害了,個人國>"; } }
2-5 啓動類
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ProviderTicketApplication { public static void main(String[] args) { SpringApplication.run(ProviderTicketApplication.class, args); } }
2-6 啓動後查看到服務
3.消費者
3-1 pom文件
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</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> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
3-2 yml文件
spring: application: name: consumer-user server: port: 8200 eureka: instance: prefer-ip-address: true # 註冊服務的時候使用服務的ip地址 client: service-url: defaultZone: http://localhost:8761/eureka/ #註冊地址
結構圖
3-3 控制層
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 UserController { @Autowired RestTemplate restTemplate; @GetMapping("/buy") public String buy(String name){ String s = restTemplate.getForObject("http://PROVIDER-TICKET/getTicket", String.class); return name+"購買了"+s; }
3-4 啓動類
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; @EnableDiscoveryClient //開啓發現服務功能 @SpringBootApplication public class ConsumerUserApplication { public static void main(String[] args) { SpringApplication.run(ConsumerUserApplication.class, args); } @LoadBalanced //使用負載均衡機制 @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
3-5 啓動訪問控制層---獲得結果
5.實現負載均衡-測試
經過java -jar 發佈兩個服務 打包jar的時候(區別端口和打印在控制檯的內容)
就能夠看到輪詢的狀況。
6.修改註冊的ip別名
yml文件
server: port: 8002 spring: application: name: provider-ticket eureka: instance: prefer-ip-address: true # 註冊服務的時候顯示服務的ip地址,見下圖3 instance-id: abcdefg #別名 client: service-url: defaultZone: http://localhost:8761/eureka/ #註冊到這個地址
圖三