转载

Spring Cloud (2) —— Eureka

本项目将使用伪集群方式部署 eureka-server 。

创建注册中心

  1. 模块名称 spring-cloud.s1.eureka-server (s1 表示 step1)
  2. 修改 pom 文件

    <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    </dependencies>
  3. 创建启动类 me.xhy.java.springcloud.s1.eureka.EurekaServerApplication

    //1. @SpringBootApplication
    //spring-boot 注解,相当于 @Configuration + @EnableAutoConfiguration + @ComponentScan
    //@EnableAutoConfiguration -> AutoConfigurationImportSelector  会加载 META-INF/spring.factories 中指定的组件
    //这里应用了 SPI 协议
    
    //2. @EnableEurekaServer
    //完成注册中心功能
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {
      public static void main(String[] args) {
        /*
        启动参数一定要加 `args` ,以后命令行传参就是靠这个变量
         */
        SpringApplication.run(EurekaServerApplication.class, args);
      }
    }
  4. 添加配置文件

    eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。eureka server的配置文件application.yml:

    server:
      port: 35001
    
    eureka:
      instance:
        hostname: localhost
    
    spring:
      application:
        name: eurka-server

    通过 eureka.client.registerWithEureka : false 不向服务中心注册 和 eureka.client.fetchRegistry : false 不获取服务列表。作为 Eureka Server , Eureka Server 集群之间可以同步服务列表,没有必要对外暴露 Eureka Server 的服务,也不需要显示的设置下载服务列表。

    关于 yml 文件,他对格式的要求非常严格:

    1. 缩进标准必须一致
    2. 缩进层级必须依次递增
    3. 缩进必须对齐
    4. : 后必须有空格
    5. value 再长也不能回行
    6. value 如果是由 , 分隔的,可使用 - 数组形式替代使其单行内容缩短
  5. 启动工程

运行 EurekaServerApplication 的 main 函数。

此时会报错,先忽略。可以从控制台启动日志看到,tomcat 被启动了,端口是配置文件指定的 35001 。

  1. 访问

访问 http://localhost:35001/

可不是 http://localhost:35001/eureka

此时还没有服务注册到 eureka ,"Instances currently registered with Eureka" 区域显示 "No instances available" 。

原文  https://segmentfault.com/a/1190000022024085
正文到此结束
Loading...