美文网首页我爱编程
Spring Cloud Eureka

Spring Cloud Eureka

作者: 万万558 | 来源:发表于2017-12-14 10:37 被阅读0次

    首先,我们来尝试使用Spring Cloud Eureka来实现服务治理。

    Spring Cloud Eureka是Spring Cloud Netflix项目下的服务治理模块。而Spring Cloud Netflix项目是Spring Cloud的子项目之一,主要内容是对Netflix公司一系列开源产品的包装,它为Spring Boot应用提供了自配置的Netflix OSS整合。通过一些简单的注解,开发者就可以快速的在应用中配置一下常用模块并构建庞大的分布式系统。它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix),智能路由(Zuul),客户端负载均衡(Ribbon)等。

    下面,就来具体看看如何使用Spring Cloud Eureka实现服务治理。

    创建“服务注册中心”

    创建一个基础的Spring Boot工程,命名为eureka-server,并在pom.xml中引入需要的依赖内容:

    org.springframework.boot

    spring-boot-starter-parent

    1.5.4.RELEASE

    org.springframework.cloud

    spring-cloud-starter-eureka-server

    org.springframework.cloud

    spring-cloud-dependencies

    Dalston.SR1

    pom

    import

    通过@EnableEurekaServer注解启动一个服务注册中心提供给其他应用进行对话。这一步非常的简单,只需要在一个普通的Spring Boot应用中添加这个注解就能开启此功能,比如下面的例子:

    @EnableEurekaServer

    @SpringBootApplication

    publicclassApplication{

    publicstaticvoidmain(String[] args){

    newSpringApplicationBuilder(Application.class)

    .web(true).run(args);

    }

    }

    在默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为,只需要在application.properties配置文件中增加如下信息:

    spring.application.name=eureka-server

    server.port=1001

    eureka.instance.hostname=localhost

    eureka.client.register-with-eureka=false

    eureka.client.fetch-registry=false

    为了与后续要进行注册的服务区分,这里将服务注册中心的端口通过server.port属性设置为1001。

    创建“服务提供方”

    下面我们创建提供服务的客户端,并向服务注册中心注册自己。本文我们主要介绍服务的注册与发现,所以我们不妨在服务提供方中尝试着提供一个接口来获取当前所有的服务信息。

    首先,创建一个基本的Spring Boot应用。命名为eureka-client,在pom.xml中,加入如下配置:

    org.springframework.boot

    spring-boot-starter-parent

    1.5.4.RELEASE

    org.springframework.cloud

    spring-cloud-starter-eureka

    org.springframework.boot

    spring-boot-starter-web

    org.springframework.cloud

    spring-cloud-dependencies

    Dalston.SR1

    pom

    import

    其次,实现/dc请求处理接口,通过DiscoveryClient对象,在日志中打印出服务实例的相关内容。

    @RestController

    publicclassDcController{

    @Autowired

    DiscoveryClient discoveryClient;

    @GetMapping("/dc")

    publicStringdc(){

    String services ="Services: "+ discoveryClient.getServices();

    System.out.println(services);

    returnservices;

    }

    }

    最后在应用主类中通过加上@EnableDiscoveryClient注解,该注解能激活Eureka中的DiscoveryClient实现,这样才能实现Controller中对服务信息的输出。

    @EnableDiscoveryClient

    @SpringBootApplication

    publicclassApplication{

    publicstaticvoidmain(String[] args){

    newSpringApplicationBuilder(

    ComputeServiceApplication.class)

    .web(true).run(args);

    }

    }

    我们在完成了服务内容的实现之后,再继续对application.properties做一些配置工作,具体如下:

    spring.application.name=eureka-client

    server.port=2001

    eureka.client.serviceUrl.defaultZone=http://localhost:1001/eureka/

    通过spring.application.name属性,我们可以指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问。eureka.client.serviceUrl.defaultZone属性对应服务注册中心的配置内容,指定服务注册中心的位置。为了在本机上测试区分服务提供方和服务注册中心,使用server.port属性设置不同的端口。

    当然,我们也可以通过直接访问eureka-client服务提供的/dc接口来获取当前的服务清单

    1Services: [eureka-client]

    其中,方括号中的eureka-client就是通过Spring Cloud定义的DiscoveryClient接口在eureka的实现中获取到的所有服务清单。由于Spring Cloud在服务发现这一层做了非常好的抽象,所以,对于上面的程序,我们可以无缝的从eureka的服务治理体系切换到consul的服务治理体系中区。

    从现在开始,我这边会将近期研发的springcloud微服务云架构的搭建过程和精髓记录下来,帮助更多有兴趣研发spring cloud框架的朋友,希望可以帮助更多的好学者。大家来一起探讨spring cloud架构的搭建过程及如何运用于企业项目。源码来源

    相关文章

      网友评论

        本文标题:Spring Cloud Eureka

        本文链接:https://www.haomeiwen.com/subject/zabhwxtx.html