spring cloud的学习过程(三)

上篇回忆:spring cloud的学习过程(二)

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-cloudnetflix-master中定义(spring boot 连文档都没有,只能看源码了),在这个项目中有两个类 EurekaInstanceConfigBean 和 EurekaClientConfigBean,分别含有 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端的应用具体介绍。















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值