一、创建服务提供者service-hi
1、创建子项目方法类似eureka,略
2、修改pom文件,主要是添加jar包
4.0.0
com.landcode
land
1.0.0-SNAPSHOT
land-service-hi
com.landcode
land-common
1.0.0-SNAPSHOT
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
land-service-hi // jar包名
org.springframework.boot
spring-boot-maven-plugin
repackage
org.apache.maven.plugins
maven-compiler-plugin
utf-8
1.8
1.8
3、resource目录下添加配置文件application.yml
server:
port: 8855
spring:
application:
name: service-hi
eureka:
instance:
prefer-ip-address: true #开启显示IP地址
instance-id: ${spring.cloud.client.ip-address}:${server.port} #eureka页面显示IP地址:端口号
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
4、新建启动类,注意加上@EnableEurekaClient 注解,到eureka 注册服务
@SpringBootApplication
@EnableEurekaClientpublic classHiApplication {public static voidmain(String[] args) {
SpringApplication.run(HiApplication.class, args);
}
}
5、新建一个测试controller,方便服务调用方测试。测试功能中会返回服务方的端口号,方便做负载均衡测试
@RestControllerpublic classHiController {
@Value("${server.port}")privateString port;
@RequestMapping(value= "/hi")publicString hi() {return "hi " + port; //返回端口号,方便负载均衡功能测试
}
}
6、新建子项目service-consumer 作为服务调用方,方法类似eureka(略),修改pom文件,添加eureka、openfeign的jar包
4.0.0
com.landcode
land
1.0.0-SNAPSHOT
land-service-consumer
com.landcode
land-common
1.0.0-SNAPSHOT
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.cloud
spring-cloud-starter-openfeign
land-service-consumer
org.springframework.boot
spring-boot-maven-plugin
repackage
org.apache.maven.plugins
maven-compiler-plugin
utf-8
1.8
1.8
7、resource目录添加项目配置文件application.yml
server:
port: 8866
spring:
application:
name: service-consumer
eureka:
instance:
prefer-ip-address: true #开启显示IP地址
instance-id: ${spring.cloud.client.ip-address}:${server.port} #eureka页面显示IP地址:端口号
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
8、添加项目启动类,@EnableFeignClients 表示使用feign调用服务接口,Ribbonclient 注解表示采用ribbon做负载均衡,configuration = RibbonConfig.class, RibbonConfig 是Ribbon 负载均衡机制配置类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages= { "com.landcode.service.consumer.service"})
@RibbonClient(name= "service-hi", configuration = RibbonConfig.class)public classConsumerApplication {public static voidmain(String[] args) {//TODO Auto-generated method stub
SpringApplication.run(ConsumerApplication.class, args);
}
@Bean
@LoadBalancedpublicRestTemplate restTemplate() {return newRestTemplate();
}
}
9、RibbonConfig配置类,指定使用某种负载均衡策略
@Configurationpublic classRibbonConfig {
@Resource
IClientConfig clientConfig;
@BeanpublicIRule ribbonRule(IClientConfig clientConfig) {//return new RandomRule();//随机选择策略
return newWeightedResponseTimeRule();
}
}
10、新建service,调用服务service-hi,会自动采用ribbon的负载均衡策略
@FeignClient(value = "service-hi")public interfaceITestHi {
@RequestMapping("/hi")publicString testHi();
}
11、新建测试 controller,测试服务调用和负载均衡。这里注意:如果ITestHi还有实现类bean的话,注入时注意通过name区分
@RestControllerpublic classTestHiController {
@AutowiredprivateITestHi testHi;
@RequestMapping("/consumer/hi")publicString testHi() {returntestHi.testHi();
}
}
12、启动eureka,启动几个service-hi服务(只需修改为不同端口号),启动service-consumer服务,打开浏览器输入http://192.168.0.3:8866/consumer/hi 调用服务消费测试接口,可以看见每次调用打印了服务提供方不同的端口号。