为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Cloud服务发现配置

标签:
Spring Cloud

本篇主要介绍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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消