zoukankan      html  css  js  c++  java
  • Spring cloud实现服务注册及发现

      服务注册与发现对于微服务系统来说非常重要。有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务。

      本文属于《7天学会spring cloud系列》之四,关注服务注册与发现,本文涉及到的项目:

      服务注册管理器原理如下图所示:

            

      所有的服务端及访问服务的客户端都需要连接到注册管理器(eureka服务器)。服务在启动时会自动注册自己到eureka服务器,每一个服务都有一个名字,这个名字会被注册到eureka服务器。使用服务的一方只需要使用该名字加上方法名就可以调用到服务。

      Spring cloud的服务注册及发现,不仅仅只有eureka,还支持Zookeeper和Consul。默认情况下是eureka,spring 封装了eureka,使其非常简单易用,只需要比传统应用增加一行代码就可以使用了,这一行代码就是一个注解。我们按以下步骤实现服务注册和发现功能。

      1)首选需要建立eureka服务器

      创建spring cloud eureka服务器和创建之前那个配置文件服务器类似,你只需要创建一个空的maven工程,并引入spring boot的相关starter即可,然后创建一个近乎空的执行类,工程如下图:

     

      在EurekaServer类中我们加入如下代码:

      @SpringBootApplication

      @EnableEurekaServer

      public class EurekaServer {

        public static void main(String[] args) {

        SpringApplication.run(EurekaServer.class, args);

          }

      }

      可以看到只需要使用@EnableEurekaServer注解就可以让应用变为Eureka服务器,这是因为spring boot封装了Eureka Server,让你可以嵌入到应用中直接使用。至于真正的EurekaServer是Netflix公司的开源项目,也是可以单独下载使用的。

      在application.properties配置文件中使用如下配置:

      server.port=8761

      eureka.instance.hostname=localhost

      eureka.client.registerWithEureka=false

      eureka.client.fetchRegistry=false

      eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

      其中server.port配置eureka服务器端口号。Eureka的配置属性都在开源项目spring-cloud-netflix-master中定义(spring boot连文档都没有,只能看源码了),在这个项目中有两个类EurekaInstanceConfigBeanEurekaClientConfigBean,分别含有eureka.instance和eureka.client相关属性的解释和定义。从中可以看到,registerWithEureka表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false。fetchRegistry表示是否从eureka服务器获取注册信息,同上,这里不需要。defaultZone就比较重要了,是设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。

      做完这些后当然,还要改一下pom文件,增加eureka-server的starter即可:

      <dependency>

                                <groupId>org.springframework.cloud</groupId>

                                <artifactId>spring-cloud-starter-eureka-server</artifactId>

      </dependency>

      如此eureka服务器就完成了,在命令行启动就可以了。

      2)让服务使用eureka服务器

      让服务使用eureka服务器,只需添加@EnableDiscoveryClient注解就可以了。回到我们在上篇文章中实现的cloud-simple-service微服务应用。在main方法所在的Application类中,添加@EnableDiscoveryClient注解。然后在配置文件中添加:

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

      spring.application.name=cloud-simple-service

      其中defaultZone是指定eureka服务器的地址,无论是注册还是发现服务都需要这个地址。application.name是指定进行服务注册时该服务的名称。这个名称就是后面调用服务时的服务标识符(这是服务发现的功能,我们在后面章节具体介绍)。当然,pom文件也需要增加:

      <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-eureka</artifactId>

      </dependency>

      如此以来该服务启动后会自动注册到eureka服务器。如果在该服务中还需要调用别的服务,那么直接使用那个服务的服务名称加方法名构成的url即可,具体我们将在下章结合ui端的应用具体介绍。

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/skyblog/p/5133752.html
Copyright © 2011-2022 走看看