1. 程式人生 > >Spring Cloud Eureka —— 服務發現與消費

Spring Cloud Eureka —— 服務發現與消費

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的控制檯,實現負載均衡效果。