注册中心eureka的搭建

简介: 注册中心eureka的搭建


image.png

1.搭建项目

新建普通的springboot项目。

1.修改Application

修改EurekaServerApplication类:关键注解@EnableEurekaServer,声明为注册中心。

package com.cloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
  public static void main(String[] args) {
    SpringApplication.run(EurekaServerApplication.class, args);
  }
}

2.修改pom文件

然后修改pom文件:一定要看好版本,现在版本真的是乱七八糟,而且有的注解被干掉了。

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.baocl</groupId>
    <artifactId>eureka-consumer-feign</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-consumer-feign</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</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>

3.修改application.properties

最后是最重要的配置文件application.properties,楼主总结了常用的配置。

spring.application.name=eureka-server
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
server.port=1001
eureka.instance.hostname=localhost
#是否向服务注册中心注册自己
eureka.client.register-with-eureka=false
#是否检索服务   ---表示是否从注册中心拉取服务列表
eureka.client.fetch-registry=false
#是否开启自我保护模式,默认为true。
#默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。
#但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。
#Eureka通过“自我保护模式”来解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),
#那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。
#当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。
#综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),
#也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。
#eureka.server.enable-self-preservation=false
#设置清理无效节点的时间间隔,默认60000,即是60s
#eureka.server.eviction-interval-timer-in-ms=5000
#自我保护续约百分比阀值因子。如果实际续约数小于续约数阀值,则开启自我保护
#eureka.server.renewalPercentThreshold = 0.85
#节点间连接的超时时间。
#eureka.server.peerNodeConnectTimeoutMs=200
#节点间读取信息的超时时间。
#eureka.server.peerNodeReadTimeoutMs=200
#每隔x秒更新自身缓存 作用于client从server获取缓存(1001页面跳过缓存不会生效)
#eureka.server.response-cache-update-interval-ms= 2000

然后启动服务,访问配置的端口号,出现这个界面,就代表ok啦。

image.png

4.大致原理

image.png

spring cloud通信主要是以http请求形式进行,当服务启动后向Eureka注册,Eureka  Server会将注册信息向其他Eureka  Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。  当服务注册中心Eureka  Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为DOWN状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。  服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka  Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。


相关文章
|
2月前
|
存储 SpringCloudAlibaba Nacos
2、学习 Nacos 注册中心
2、学习 Nacos 注册中心
37 0
|
23天前
|
存储 监控 安全
服务注册中心Eureka
服务注册中心Eureka
29 1
|
2月前
|
负载均衡 Java 微服务
1、学习 Eureka 注册中心
1、学习 Eureka 注册中心
35 0
|
3月前
|
机器学习/深度学习 Java Nacos
Nacos实战之配置中心与注册中心详解
Nacos实战之配置中心与注册中心详解
Nacos实战之配置中心与注册中心详解
|
4月前
|
消息中间件 Nacos 数据格式
Nacos 作为服务注册中心 & 配置中心
Nacos 作为服务注册中心 & 配置中心
41 0
|
7月前
|
运维 Java Nacos
从架构开始,Get注册配置中心Nacos
对我们这样的中小企业来说,性能和稳定性需求需要平衡成本。以往我们对新技术胆战心惊是因为通常不具备大规模IT基础设施和人力资源来处理故障危机,因此阿里云注册配置中心 MSE-Nacos就是一个既能够满足需求又不会造成巨大负担的解决方案
484 1
|
9月前
|
负载均衡 监控 算法
Eureka注册中心
Eureka注册中心
86 0
|
10月前
|
存储 缓存 负载均衡
Nacos—简述、注册中心、配置中心
官方:一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。
|
11月前
|
Java Maven
搭建Eureka注册中心
先创建一个maven项目 导入springboot springcloud和Eureka相关依赖 依赖这里一直有错误,改了半天才可以用 ,用的是阿里云的仓库下载的。
搭建Eureka注册中心集群
第一个Eureka的配置文件