Spring Cloud Eureka —— 服務發現與消費
阿新 • • 發佈:2018-12-19
ribbon簡單介紹
1服務發現的任務由Eureka的客戶端完成,服務消費的任務由Ribbon完成。
2Ribbon是一個基於HTTP和TCP的客戶端負載均衡器,它可以在通過客戶端中配置的ribbonServerList服務端列表去輪詢訪問以達到負載均衡的作用。
構建例項
準備工作
1啟動服務註冊中心Eureka-server和hello-serve服務。
通過java -jar 命令列的方式來啟動兩個不同埠的hello-serve。
java -jar hello-service.jar --server.port=8081 java -jar hello-service.jar --server.port=8082
2成功啟動後,會在Eureka資訊面板看到兩個hello-serve的服務。
建立ribbon-consumer的spring-boot專案實現消費者
1建立pom.xml依賴
<dependencies> <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> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> </dependencies>
2建立應用主類ConusumerAppliction,通過@EnableDiscoueryclient註解讓該應用註冊為Eureka的客戶端應用,獲得服務發現的能力。建立RestTemplate的SpringBean例項,通過@LoadBalanced註解開啟客戶端負載均衡。
@EnableDiscoveryClient @SpringBootApplication public class ConsumerApplication { @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }
3建立ConsumerController累並實現/ribbon-consumer介面。
@RestController
public class ConsumerController {
@Autowired
RestTemplate restTemplate;
@RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
public String helloConsumer() {
return restTemplate.getForEntity("http://HELLO-SERVICE//hello",String.class).getBody();
}
}
4配置application.properties。
spring.application.name=ribbon-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:1110/eureka/
5自動ribbon-consumer。
7嘗試多次請求,觀察兩個hello-serve的控制檯,實現負載均衡效果。