spring cloud 服务自治理 Eureka(一)

       Eureka是Netflix开源的一个RESTful服务,主要用于服务的注册发现。Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

(详细可参考http://blog.csdn.net/jek123456/article/details/74171055)

注:以下内容使用 spring boot 中已经搭建好的项目

    一、   依赖声明

         1.服务端

     <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-eureka-serverartifactId>
     dependency>
       2.客户端 
    <dependency>
      <groupId>org.springframework.cloudgroupId>
      <artifactId>spring-cloud-starter-eurekaartifactId>
    dependency>

 二 、整合服务端(改造时去除原有整合)

      0.改造时去除原有整合

       注释掉fremark配置

  ## Freemarker 配置
  #spring.freemarker.allow-request-override=false
  #spring.freemarker.allow-session-override=false
  #spring.freemarker.cache=true
  #spring.freemarker.check-template-location=true
  #spring.freemarker.content-type=text/html
  #spring.freemarker.enabled=true
  #spring.freemarker.expose-request-attributes=false
  #spring.freemarker.expose-session-attributes=false
  #spring.freemarker.expose-spring-macro-helpers=true
  #spring.freemarker.prefer-file-system-access=true
  #spring.freemarker.suffix=.ftl
  #spring.freemarker.template-loader-path=classpath:/templates/
  #spring.freemarker.settings.template_update_delay=0
  #spring.freemarker.settings.default_encoding=UTF-8
  #spring.freemarker.settings.classic_compatible=true
  #spring.freemarker.order=1

  #视图层控制(spring mvc 文件路径 后缀名)
  #spring.mvc.view.prefix=classpath:/templates/
  #spring.mvc.view.suffix=.ftl
  #spring.mvc.static-path-pattern=/static/**
     去除 hmq-demo-server\src\main\resources\templates\ceshi.ftl 文件

     1.添加服务端依赖

     <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-eureka-serverartifactId>
     dependency>

   <dependencyManagement>
     <dependencies>
      <dependency>
         <groupId>org.springframework.cloudgroupId>
         <artifactId>spring-cloud-dependenciesartifactId>
         <version>Edgware.RELEASEversion>
         <type>pomtype>
         <scope>importscope>
      dependency>
   dependencies>
  dependencyManagement>
  2.在启动方法上添加注解
   /**
    * Created by wxl on 2017/12/8.
   */
  @EnableEurekaServer  //启动一个服务注册中心提供给其他应用进行对话 专属的Eureka
  //@EnableDiscoveryClient 可以发现多种服务组建
  @SpringBootApplication
  public class StartUpEurekaConfig {
     public static void main(String[] args) {
        SpringApplication.run(StartUpEurekaConfig.class, args);
    }
  }
 3.添加配置
  ##Eureka 配置
  ##配置本地ip
 eureka.instance.hostname=localhost
 ##不像注册中心注册自己
 eureka.client.register-with-eureka=false
 ##由于注册中心的职责就是维护服务事例,不需要取检索服务
 eureka.client.fetch-registry=false
#注册中心默认端口就是8761,也可通过下面的方式定义其他端口
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

 4.启动项

@EnableEurekaServer  //启动一个服务注册中心提供给其他应用进行对话 专属的Eureka
@SpringBootApplication  //开启自动化注解

public class HmqDemoServerApplication   {
    
   public static void main(String[] args) {
    SpringApplication.run(HmqDemoServerApplication.class, args);
  }


5.访问接口

  http://localhost:8761/

、客户端整合

 1.重新复制出,spring boot 整合后的项目

 2.添加依赖

  <dependency>
   <groupId>org.springframework.cloudgroupId>
   <artifactId>spring-cloud-starter-eurekaartifactId>
  dependency>
  
 <dependencyManagement>
   <dependencies>
      <dependency>
         <groupId>org.springframework.cloudgroupId>
         <artifactId>spring-cloud-dependenciesartifactId>
         <version>Edgware.RELEASEversion>
         <type>pomtype>
         <scope>importscope>
      dependency>
   dependencies>
 dependencyManagement>
3.启动类中添加注解

激活Enureka中的DisconveryClient实现(自动话配置,创建DisconveryClient接口针对Eureka客户端
的EurekaDiscoveryClient实例才能实现上述Controller中对服务的输出 

@Configuration
@SpringBootApplication  //开启自动化注解
@ComponentScan(basePackages = "com.heimeiqiu")
@MapperScan("com.heimeiqiu.dao.mapper")
@EnableDiscoveryClient//激活Enureka中的DisconveryClient实现(自动话配置,创建DisconveryClient接口针对Eureka客户端的EurekaDiscoveryClient实例才能实现上述Controller中对服务的输出 )
public class HmqDemoServerApplication   {
    //启动应用入口
   public static void main(String[] args) {
      SpringApplication.run(HmqDemoServerApplication.class, args);
   }
}

4.配置信息

##Eureka配置
#配置服务名称
spring.application.name=hmq-demo-server
eureka.instance.hostname=127.0.0.1
#配置访问路径
#注册中心默认端口就是8761,也可通过下面的方式定义其他端口
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:8761/eureka/

启动后在 8761 上的 

Instances currently registered with Eureka 则能看到服务信息

这时候你也许会看到这个警告:

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES 

这是进入了自我保护 可以查看这篇文章 :http://blog.csdn.net/lc0817/article/details/54375802


   

你可能感兴趣的:(spring,cloud)