zoukankan      html  css  js  c++  java
  • SpringCloud(二) 服务注册与发现Eureka

          1.eureka是干什么的?

                     上篇说了,微服务之间需要互相之间通信,那么通信就需要各种网络信息,我们可以通过使用硬编码的方式来进行通信,但是这种方式显然不合适,不可能说一个微服务的地址发生变动,那么整个系统的所有微服务都要重新部署,显然是不合适的,那么我们需要一个服务发现机制,服务消费者通过这种机制来获取服务提供者的网络信息,并且服务提供者的网络信息即使变化,服务消费者也不必改变配置。Eureka提供的就是这样一种服务注册与发现的功能,也就是所有的服务在启动的时候都需要把自己的网络信息告诉Eureka以供所有服务使用

                     服务提供者、服务消费者、Eureka三者之间的关系

                       (1)服务提供者在启动的时候,将自己的网络信息注册到Eureka,Eureka存贮这些信息

                       (2)服务提供者与Eureka之间定时的发送心跳告诉Eureka我还在,如果长时间没有发送心跳,那么就表示该服务已经停止,就会注销该服务

                       (3)服务消费者可以通过Eureka查询服务提供者的网络地址,通过该地址查询调用服务提供者的接口

          2.编写Eureka server

                  我们都用maven来管理依赖

                1.创建maven工程并添加依

                         我用的全是最新的版本,对于不同springcloud版本和SpringBoot的兼容不同,详细看5

      1 <!--添加eureka-server依赖-->
      2         <dependency>
      3             <groupId>org.springframework.cloud</groupId>
      4             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
      5         </dependency><!--添加eureka-client依赖,这个依赖在这里可以不用加,如果但是如果是多个Eureka server 需要添加,因为Eureka之间需要互相注册-->
      6         <dependency>
      7             <groupId>org.springframework.cloud</groupId>
      8             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      9        </dependency>
     10     <!--引入SpringCloud的依赖-->
     11     <dependencyManagement>
     12         <dependencies>
     13             <dependency>
     14                 <groupId>org.springframework.cloud</groupId>
     15                 <artifactId>spring-cloud-dependencies</artifactId>
     16                 <version>Finchley.SR1</version>
     17                 <type>pom</type>
     18                 <scope>import</scope>
     19             </dependency>
     20         </dependencies>
     21     </dependencyManagement>
     22 
     23     <!-- 注意: 这里必须要添加,否则各种依赖有问题 推测问题在于目前部分依赖没有上传到中央仓库 -->
     24     <repositories>
     25         <repository>
     26             <id>spring-milestones</id>
     27             <name>Spring Milestones</name>
     28             <url>http://repo.spring.io/milestone</url>
     29             <snapshots>
     30                 <enabled>false</enabled>
     31             </snapshots>
     32         </repository>
     33     </repositories>
    点击查看代码

            2.编写配置

      1 server:
      2   port: 8080
      3   tomcat:
      4     uri-encoding: utf-8
      5 eureka:
      6   client:
      7     #是否将自己注册到Eureka Server,默认为true,由于当前应用就是Eureka,所以设置成false
      8     register-with-eureka: false
      9     #表示是否从Eueka Server获取注册信息,默认为true,由于当前是单节点的Eureka Server,没有其他Eureka Server ,故而设置为false
     10     fetch-registry: false
     11     service-url:
     12       #这里是交互的地址,所有的服务注册与查询服务都需要通过这个地址,这里可以设置多个地址,用逗号隔开
     13       defaultZone: http://localhost:8080/eureka/
     14   server:
     15     enableSelfPreservation: false     #关闭做我保护模式
     16 

           3.编写启动类

    @SpringBootApplication
    @EnableEurekaServer  //启动一个服务注册中心提供给其他应用进行对话
    public class TouristRegisterCenter {
        public static void main(String[] args) {
            SpringApplication.run(TouristRegisterCenter.class, args);
        }
    }

       整个启动类只是加了一个@EnableEurekaServer 注解

        4.启动

         然后我们可以看见这样的页面就说明恭喜你成功了Nyah-Nyah    

         但是注意看instances currently registered with Eureka   这里面是我们注册的服务,这是空的(废话,我还没注册呢Sleepy smile),页面内容英语稍微好一点看看应该就明白了,实在不行就百度翻译吧

    imageimage

    现在Eureka server已经有了,那么我们肯定要网上注册一点东西啊,接着我们直接copy上面这个然后做一个修改就OK了。上代码

      5.将微服务注册到Eureka server

            5.1  上面那个pom里面有这个依赖,如果直接copy的可以直接忽略,但是注册的时候主要用到的就是这个包

      1         <!--添加eureka-server依赖-->
      2         <dependency>
      3             <groupId>org.springframework.cloud</groupId>
      4             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      5         </dependency>
    点击查看代码

            5.2修改配置文件

      1 server:
      2   port: 8081
      3   tomcat:
      4     uri-encoding: utf-8
      5 
      6 
      7 spring:
      8   application:
      9     name: Tourist-user-server   #注册到Eureka server 上的应用名称
     10 
     11 
     12 eureka:
     13   client:
     14     service-url:
     15       defaultZone: http://localhost:8080/eureka/    #Eureka server  注册地址
     16   instance:
     17     prefer-ip-address: true  #表示将自己的IP注册到Eureka server ,该配置默认false,表示将所在计算机系统的hostname注册到Eureka server

                  关于配置或者代码里面细节的东西我都直接写在代码注释里了,毕竟方便看嘛

            5.3 编写启动类

      1 @SpringBootApplication
      2 @EnableEurekaClient
      3 public class TouristuserserviceApplication {
      4 
      5     public static void main(String[] args) {
      6         SpringApplication.run(TouristuserserviceApplication.class,args);
      7     }
      8 }
      9 

                  在这里就是把server中的@EnableEurekaServer 改成了@EnableEurekaClient ,声明这是一个Eureka client

    6.启动查看

          首先启动Eureka server  ,启动成功之后再启动Eureka client

           两个全部启动之后我们再访问Eureka server 看看是否注册进去了

       image

       OK!!!!成功注册上去了,大功告成

    7.关于版本

        关于springcloud版本

    image

      这只是springcloud版本,因为springcloud基于springBoot,所以springcloud与SpringBoot的版本最好对应,详情可以看一下GitHub上springcloud的信息,附上地址https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-Finchley-Release-Notes

    8.结束

    其实关于Eureka server 总结下来就是

         1.添加依赖

         2.配置

         3.在启动类添加注解,声明这是一个Eureka server

    Eureka client 也就是微服务,注册的过程也很简单

         1.添加依赖

         2.增加配置,主要就是注册上去的名称和注册地址

         3.在启动类上声明是一个Eureka client

    然后就成了。。。。。。。。

        这纯属自己学习,如果有什么不对的地方请大神们多多指教,小弟万分感谢Rolling on the floor laughing

  • 相关阅读:
    UVALive 4660 A+B
    UVALive 4660 A+B
    UVA10474 Where is the Marble?
    UVA10474 Where is the Marble?
    UVA1339 UVALive3213 POJ2159 ZOJ2658 Ancient Cipher【密码】
    hdu_1108 最小公倍数
    hdu_1106 排序
    hdu_1205 吃糖果
    hdu_1201 18岁生日
    hdu_1005 Number Sequence
  • 原文地址:https://www.cnblogs.com/SunArmy/p/9556619.html
Copyright © 2011-2022 走看看