Spring Cloud服务发现配置

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

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
@SpringBootApplication
public class ApplicationDemo
{
    public static void main(String[] args)
    {
    SpringApplication.run(ApplicationDemo.class, args);
    }
}

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

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/ ,即可看到两个实例相互注册。

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接口

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

启动类,加入@EnableDiscoveryClient。

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

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

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接口
@Component
public class ConsumerFallback implements Consumer
{
    @Override
    public String index()
    {
        return "eureka feign客户端访问失败";
    }
}

//测试类,注入这个bean,即可调用
@RestController
public class test
{
   @Autowired
   Consumer consumer;

   @RequestMapping(value = "/test", method = RequestMethod.GET)
   public String testeureka()
   {
        return  consumer.index();
   }
}

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

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

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

更多详细的配置,请参考SpringCloud官方文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,198评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,663评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,985评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,673评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,994评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,399评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,717评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,407评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,112评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,371评论 2 241
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,891评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,255评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,881评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,010评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,764评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,412评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,299评论 2 260

推荐阅读更多精彩内容