继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Spring Cloud服务发现配置

慕虎7371278
关注TA
已关注
手记 1298
粉丝 202
获赞 874

本篇主要介绍Spring Cloud Netflix的组件配置,包括Eurek,Fegin等。
我们都知道Spring Cloud的服务发现一个三个角色(详细请见服务发现),如下图

webp

EurekaRole.png


接下来我们按照这三个角色来介绍Netflix的组件配置(本篇介绍的配置基于Spring Boot 1.4.4.RELEASE版本)。

1、Eureka Server配置

新加一个Spring Boot工程,在pom文件中加入以下依赖

<dependencyManagement>
  <dependencies>
    <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-dependencies</artifactId>
       <version>Brixton.SR5</version>
       <type>pom</type>
       <scope>import</scope>
    </dependency>
  </dependencies></dependencyManagement><dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka-server</artifactId></dependency>

application文件配置

//eureka server注册的name,唯一标识

spring.application.name=eureka-server

//eureka server服务的端口号

server.port=1111

启动类,加入@EnableEurekaServer注解。

@EnableEurekaServer@SpringBootApplicationpublic class ApplicationDemo{    public static void main(String[] args)
    {
    SpringApplication.run(ApplicationDemo.class, args);
    }
}

运行,访问http://localhost:1111/ ,出现以下页面,则证明启动成功

webp

EurekaServerC.png


如果想配置Eurek高可用集群,可以通过相互注册的方式来实现。本地启动,可以配置多个application,例如创建application-peer1和application-peer2。

application-peer1配置如下

server.port=1111

eureka.instance.hostname= peer1

spring.application.name=eureka-server

eureka.client.serviceUrl.defaultZone=http://127.0.0.1:1112/eureka/

application-peer2配置如下

server.port=1112

eureka.instance.hostname= peer2

spring.application.name=eureka-server
eureka.client.serviceUrl.defaultZone=http://peer2:1111/eureka/
配本地host
127.0.0.1 peer1 peer1

打包mvn install,分别启动peer1和peer2

java -jar eureka.jar --spring.profiles.active=peer1

java -jar eureka.jar --spring.profiles.active=peer2

访问http://peer1:1111/或者http://peer2:1112/ ,即可看到两个实例相互注册。

webp

EurekaServer.png

由于在线环境的发布脚步是统一的,可以采用只配置一个application,在多台机器上部署的方式,例如10.120.163.01和10.120.163.02两台机器。

application配置如下

server.port=1111

spring.application.name=eureka-server
eureka.client.serviceUrl.defaultZone=http://10.120.163.01:1111/eureka/,http://10.120.163.01:1111/eureka/

然后在01,02两台机器上分别运行这个服务,访问10.120.163.01:1111/ 即可看到Eureka页面。

2、服务者配置

服务者需要想Eureka注册自己的信息,首先要保证上面例子中Eurek Server的peer1和peer2正常运行。

新加一个Spring Boot工程,在pom文件中加入以下依赖

<dependencyManagement>
    <dependencies>
        <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-dependencies</artifactId>
           <version>Brixton.SR5</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies></dependencyManagement><dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId></dependency>

application文件配置

//eureka provider服务的端口号

server.port=2222

//eureka provider注册的name,唯一标识

spring.application.name=eureka-provider

//指定注册的Eureka Server地址
eureka.client.serviceUrl.defaultZone=http://peer:1111/eureka,http://peer:1112/eureka

对外提供index接口

@RestControllerpublic class IndexController{    @RequestMapping("/index")    public String index()
    {       return "这里是Eureka Provider";
    }
}

启动类,加入@EnableDiscoveryClient。

@EnableDiscoveryClient@SpringBootApplicationpublic class ApplicationDemo{    public static void main(String[] args)
    {
        SpringApplication.run(ApplicationDemo.class, args);
    }
}

运行,即可在http://peer1:1111/ 看到注册信息。

webp

Provider.png

3、消费者配置

首先要保证Eurek Server的peer1和peer2正常运行,eureka-provider正常运行,并注册到Eurek Server上。本节主要介绍Spring Cloud Feign客户端配置。

新加一个Spring Boot工程,在pom文件中加入以下依赖

<dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-dependencies</artifactId>
         <version>Brixton.SR5</version>
         <type>pom</type>
         <scope>import</scope>
     </dependency>
  </dependencies></dependencyManagement><dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-eureka</artifactId></dependency><dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-feign</artifactId></dependency>

application文件配置

//eureka provider服务的端口号

server.port=3333

//eureka consumer注册的name,唯一标识

spring.application.name=eureka-consumer

//指定注册的Eureka Server地址
eureka.client.serviceUrl.defaultZone=http://peer:1111/eureka,http://peer:1112/eureka

Feign客户端配置,消费上面提到的Provider服务。新建一个interface,配置三个属性。name为服务方的spring.application.name,RequestMapping为服务方提供的接口,fallback为降级策略。下面的配置:调用Porovider的/index接口;fallback为服务调用失败后会调用该类的方法,ConsumerFallback为本地类;

//Consumer接口@FeignClient(name = "elements", fallback = ConsumerFallback.class)public interface Consumer{    @RequestMapping(value = "/index")    String index();
}//ConsumerFallback类,实现Consumer接口@Componentpublic class ConsumerFallback implements Consumer{    @Override
    public String index()
    {        return "eureka feign客户端访问失败";
    }
}//测试类,注入这个bean,即可调用@RestControllerpublic class test{   @Autowired
   Consumer consumer;   @RequestMapping(value = "/test", method = RequestMethod.GET)   public String testeureka()
   {        return  consumer.index();
   }
}

启动类,加入@EnableDiscoveryClient和@EnableFeignClients。

@EnableFeignClients@EnableDiscoveryClient@SpringBootApplicationpublic class ApplicationDemo{    public static void main(String[] args)
    {
        SpringApplication.run(ApplicationDemo.class, args);
    }
}

启动,访问http://localhost:3333/test.html ,即可看到返回值“这里是Eureka Provider”。停掉Provider服务,再次访问,即可看到返回值"eureka feign客户端访问失败"。



作者:谦小易
链接:https://www.jianshu.com/p/59930f55ffbd


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP