SpringCloud服務治理

服務治理Eureka

Spring Cloud Eureka是Spring Cloud Netflix項目下的服務治理模塊。而Spring Cloud Netflix項目是Spring Cloud的子項目之一,主要內容是對Netflix公司一系列開源產品的包裝,它爲Spring Boot應用提供了自配置的Netflix OSS整合。經過一些簡單的註解,開發者就能夠快速的在應用中配置一下經常使用模塊並構建龐大的分佈式系統。它主要提供的模塊包括:服務發現(Eureka),斷路器(Hystrix),智能路由(Zuul),客戶端負載均衡(Ribbon)等。web

按照教程搭建

教程spring

小坑

注意pom導入包的版本,版本不對沒法啓動app

在默認設置下,該服務註冊中心也會將本身做爲客戶端來嘗試註冊它本身,因此咱們須要禁用它的客戶端註冊行爲負載均衡

1.讓eureka跑起來

2.建立服務提供方

服務提供方與enreka的鏈接分佈式

@EnableDiscoveryClient
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        new SpringApplicationBuilder(
            Application.class)
            .web(true).run(args);
    }
}
spring.application.name=eureka-client
server.port=2001
eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

3.建立消費調用方(調用提供方的接口)

消費方在pom中多了一個依賴spring-boot

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

啓動的時候獲取RestTemplateui

@EnableDiscoveryClient
@SpringBootApplication
public class EurekaConsumerApplication {
    [@Bean](https://my.oschina.net/bean)
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    public static void main(String[] args) {
        new SpringApplicationBuilder(EurekaConsumerApplication.class).web(true).run();
    }
}

使用RestTemplate獲取提供服務方的IP:端口,並訪問返回結果url

@GetMapping("/consumer")
public String dc() {
    ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
    String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "/dc";
    System.out.println(url);
    return restTemplate.getForObject(url, String.class);
}

建立好後,能夠打開服務治理項目,服務提供項目,消費項目,跑一下。能夠看出消費者項目是經過服務治理項目獲取到服務提供方的地址的。.net

分佈式項目與獨立部署的幾個項目有何區別?rest

4.eureka和consul

相關文章
相關標籤/搜索