SpringCloud 能够说是一门很是热门的技术,依赖于SpringBoot进行实现。cloud就像一个大管家,而SpringBoot 才是真正干活的人。且SpringBoot能够独自运行,不依赖于SpringCloud。本篇主要介绍SpringCloud中五大神兽里的两大神兽,eureka和rabbin,其中eureka 是重点,而rabbin只是简单使用了它的一个注解。java
①,pom.xmlweb
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> </parent> <properties> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</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>
②,application.properties算法
#eueka 主机名 eureka.instance.hostname=eureka-service #不注册本身 eureka.client.register-with-eureka=false #获取服务 eureka.client.fetch-registry=false #提供者和消费者的注册地址 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/ server.port=8761
③,启用注册中心spring
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; //启用注册中心 @EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } }
①,pom.xmlapp
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> </parent> <properties> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </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>
②,application.properties负载均衡
server.port=8002 #服务名 spring.application.name=ticket-provider #使用ip进行注册 eureka.instance.prefer-ip-address=true #注册地址 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
③,定义服务ide
import org.springframework.stereotype.Service; @Service public class TicketService { public String buyTicket(){ System.out.println("我是8002"); return "《疯狂的石头》"; } }
④,提供服务spring-boot
import com.example.provider.service.TicketService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TicketController { @Autowired private TicketService ticketService; @RequestMapping("/") public String index(){ return ticketService.buyTicket(); } }
①,pom.xml测试
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> </parent> <properties> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</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>
②,application.propertiesfetch
server.port=8200 spring.application.name=ticket-customer eureka.instance.prefer-ip-address=true #注册地址 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
③,消费者配置
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 CustomerApplication { public static void main(String[] args) { SpringApplication.run(CustomerApplication.class, args); } // 启用负载均衡,默认算法是轮询 @LoadBalanced @Bean public RestTemplate restTemplate(){ return new RestTemplate(); } }
④,消费者消费方法
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class CustomerController { @Autowired private RestTemplate restTemplate; @RequestMapping("/") public String index(){ String result = restTemplate.getForObject("http://ticket-provider/", String.class); return result; } }
①,启动eureka工程
②,启动提供者工程
③,启动消费者工程
④,最后会看到消费者和提供者都注册到了eureka中,并能够经过,消费接口访问服务者提供的服务,
而且使用了轮询的负载均衡策略