搭建注册中心Eureka

2019-06-20  本文已影响0人  你值得拥有更好的12138

以下概念性的语言均为本人理解,欢迎大佬指出错误,小白希望深入理解请到官网
Github源码参考:https://github.com/HanJuly/SpringCloudDemo

微服务概念

Eureka是什么?

Eureka是一个分布式微服务的注册中心,保存一些微服务之间的信息。它是一个基于Restful的服务,包括客服端和服务端两个jar包。实现服务注册,负载均衡,故障转移等功能。

为什么要使用Eureka

怎么使用

环境:

idea 2019 Maven -3.5.0 基于SpringBoot
基于SpringCloud Finchley.RELEASE

1.创建一个Maven工程,并在pom.xml中加入依赖
<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.0.9.RELEASE</version>
</parent>

 <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    <version>2.1.0.RELEASE</version>
 </dependency>

  <dependencyManagement>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies -->
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

重要的事情:以上的springboot版本与springcloud的版本是配套的,修改会导致出现异常不能启动。需要查看版本对应请到官网查看。

基本的web包也是需要加入的!

2.在yaml中配置
info:
  artifact: register-center
  name: '@project.name@' #获取pom.xml文件中的属性
  description: '@project.description@'
  version: '@project.version@'
  spring-boot-version: '@spring.boot.version@'
  spring-cloud-version: '@spring.cloud.version@'


server:
  port: ${dev.eureka.server.port}  #端口
spring:
  profiles: dev


eureka:
  server:
    enable-self-preservation: false  # 关闭自我保护 
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${dev.eureka.server.port}/eureka/ #注册中心地址
    registerWithEureka: false  # 单机模式 设置为false
    fetchRegistry: false       # 单机模式 设置为false
  instance:
    hostname: ${dev.eureka.hostname}    # 指定该Eureka实例的主机名
注释解释:
关闭自我保护

Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期,但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

我们在单机测试的时候很容易满足心跳失败比例在 15 分钟之内低于 85%,这个时候就会触发 Eureka 的保护机制,一旦开启了保护机制,则服务注册中心维护的服务实例就不是那么准确了,此时我们可以使用eureka.server.enable-self-preservation=false来关闭保护机制,这样可以确保注册中心中不可用的实例被及时的剔除

单机模式 设置为false

这两个属性的作用是,在出现两个以上的服务注册中心时,需要把注册中心视为一般的服务管理,需要它们互相注册,互相获取彼此的的“路由表”。保证注册中心的高可用性,单机情况就不需要了。

@EnableEurekaServer
@SpringBootApplication
public class RegisterCenterApplication {

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

}

3.启动

把它视为一个web工程启动后,浏览器进入http://127.0.0.1:8500(取决你的配置)

image.png
其他都是一些本机的信息,还可以使用xml的方式查看:http://127.0.0.1:8500/eureka/apps image.png

至此注册中心就搭建完成,那么我们怎么注册我们服务呢?下一篇文章

上一篇下一篇

猜你喜欢

热点阅读