一: Eureka 简介
Eureka 是 Spring Cloud Netflix 的一个子模块, 也是核心模块之一用于云端服务发现, 一个基于 REST 的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移
服务注册与发现对于微服务系统来说非常重要有了服务发现与注册, 你就不需要整天改服务调用的配置文件了, 你只需要使用服务的标识符, 就可以访问到服务他的功能类似于 dubbo 的注册中心 (register)
服务发现: 服务发现是微服务基础架构的关键原则之一试图着手配置每个客户端或某种格式的约定可以说是非常困难的和非常脆弱的 Eureka 是 Netflix 服务发现的一种服务和客户端这种服务是可以被高可用性配置的和部署, 并且在注册的服务当中, 每个服务的状态可以互相复制给彼此
服务注册: 当一个客户端注册到 Eureka, 它提供关于自己的元数据 (诸如主机和端口, 健康指标 URL, 首页等)Eureka 通过一个服务从各个实例接收心跳信息如果心跳接收失败超过配置的时间, 实例将会正常从注册里面移除
下图是基本的服务注册和发现
二: Eureka 服务发现和注册 (创建注册中心)
1: 创建一个基础的 Spring Boot 工程, 并在 pom.xml 中引入需要的依赖内容
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.demo.springcloud</groupId>
- <artifactId>eureka_register_service</artifactId>
- <version>1.0.0</version>
- <packaging>jar</packaging>
- <name>eureka_register_service</name>
- <description>Spring Cloud project</description>
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>1.4.3.RELEASE</version>
- <relativePath />
- </parent>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <java.version>1.8</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-eureka-server</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-security</artifactId>
- </dependency>
- </dependencies>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>Brixton.RELEASE</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </project>
2: 创建一个启动类 Application
- package com.demo.springcloud;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
- @EnableEurekaServer
- @SpringBootApplication
- public class Application {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
- }
通过 @EnableEurekaServer 注解启动一个服务注册中心提供给其他应用进行对话
3: 创建一个配置文件 application.properties, 注意不要出现空格, 否启动报错
- server.port=8000
- eureka.client.register-with-eureka=false
- eureka.client.fetch-registry=false
- eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
4: 执行 bluid.sh 进行构建, 然后执行 main 方法本人由于在 eclipse 下没有进行手动编译, 启动的时候一直读取不到 application.properties
架构代码如下:
来源: http://www.bubuko.com/infodetail-2491820.html