一、創建服務提供者service-hi
1、創建子項目的方法類似eureka,略

2、修改pom文件,主要是添加jar包
<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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.landcode</groupId> <artifactId>land</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>land-service-hi</artifactId> <dependencies> <dependency> <groupId>com.landcode</groupId> <artifactId>land-common</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
<!-- 引入eureka jar包--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> <build> <finalName>land-service-hi</finalName> // jar包名 <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <!-- 打包成可執行jar包 --> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <encoding>utf-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
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 @EnableEurekaClient public class HiApplication { public static void main(String[] args) { SpringApplication.run(HiApplication.class, args); } }
5、新建一個測試controller,方便服務調用方測試。測試功能中會返回服務方的端口號,方便做負載均衡測試
@RestController public class HiController { @Value("${server.port}") private String port; @RequestMapping(value = "/hi") public String hi() { return "hi " + port; // 返回端口號,方便負載均衡功能測試 } }
二、創建服務消費方service-consumer
1、新建子項目service-consumer 作為服務調用方,方法類似eureka(略),修改pom文件,添加eureka、openfeign的jar包
<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"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.landcode</groupId> <artifactId>land</artifactId> <version>1.0.0-SNAPSHOT</version> </parent> <artifactId>land-service-consumer</artifactId> <dependencies> <dependency> <groupId>com.landcode</groupId> <artifactId>land-common</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> <build> <finalName>land-service-consumer</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <!-- 打包成可執行jar包 --> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <encoding>utf-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
2、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/
3、添加項目啟動類,@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 class ConsumerApplication { public static void main(String[] args) { // TODO Auto-generated method stub SpringApplication.run(ConsumerApplication.class, args); } @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } }
4、RibbonConfig配置類,指定使用某種負載均衡策略
@Configuration public class RibbonConfig { @Resource IClientConfig clientConfig; @Bean public IRule ribbonRule(IClientConfig clientConfig) { // return new RandomRule(); //隨機選擇策略 return new WeightedResponseTimeRule(); } }
5、新建service,調用服務service-hi,會自動采用ribbon的負載均衡策略
@FeignClient(value = "service-hi") public interface ITestHi { @RequestMapping("/hi") public String testHi(); }
6、新建測試 controller,測試服務調用和負載均衡。這里注意:如果ITestHi還有實現類bean的話,注入時注意通過name區分
@RestController public class TestHiController { @Autowired private ITestHi testHi; @RequestMapping("/consumer/hi") public String testHi() { return testHi.testHi(); } }
三、測試
12、啟動eureka,啟動幾個service-hi服務(只需修改為不同端口號),啟動service-consumer服務,打開瀏覽器輸入http://192.168.0.3:8866/consumer/hi 調用服務消費測試接口,可以看見每次調用打印了服務提供方不同的端口號。
頁面分別打印:hi 8855、hi 8856、hi 8856、hi 8857、hi 8856、hi 8855、hi 8857
