Eureka学习

Eureka学习

介绍

Eureka 是一款开源的服务注册与发现组件,通过配合其他组件可提供负载均衡能力

名称 类型 AP/CP 语言 依赖 集成 一致性算法
Eureka General AP java jvm Java Client  
Zookeeper General CP java   Client Bingding paxos
cnosul General CP go jvm HTTP/DNS library Raft

CAP理论:

C(Consistency):数据一致性,当存在多个副本的情况下, 由于网络,机器故障,程序内部错误等原因出现数据写入副本成功部分,这种情况下会出现数据的不一致,一致性的要求是在对数据的更新完成后,多个副本的数据是一一致的

A(Availability):客户端在对集群进行读写的时候,能够正常请求,但是数据的更新最终结果会有延迟,即在一定的时间内完成,也就是最终一致性

P(Partition Tolerrance):分区容忍性,即发生通信故障时,一个集群本分为多个无法互相通信的分区时,集群仍然可用

创建Eureka Server

  1. 在POM.xml增加依赖:spring-cloud-starter-netflix-eureka-server

    <?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.3.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot2</name>
    <description>Demo project for Spring Boot</description>

    <properties>
    <java.version>8</java.version>
    <spring-cloud.version>Finchley.RELEASE</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>
               <version>2.2.3.RELEASE</version>
          </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>

    <!--devtools热部署-->
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-devtools</artifactId>
               <optional>true</optional>
               <scope>true</scope>
          </dependency>
    </dependencies>

    <build>
    <defaultGoal>compile</defaultGoal>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
                       <includeSystemScope>true</includeSystemScope>
                  </configuration>
    </plugin>
    </plugins>
    </build>
    </project>

     

  2. 启动类的增加SpringBoot2Application2

    package com.example.demo;

    /**
    * @author felix_cai
    *
    */
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

    @SpringBootApplication
    @EnableEurekaServer
    public class SpringBoot2Application2 {
    public static void main(String[] args) {
    SpringApplication.run(SpringBoot2Application2.class, args);
    }
    }

     

  3. 修改application.properties文件

    # 要注册的服务名
    spring.application.name=EurekaServer
    # 端口
    server.port=8761
    #不向注册中心注册实例,因为该实例本身就是注册中心
    eureka.client.register-with-eureka=false
    #不从Eureka Server 中获取实例信息
    eureka.client.fetch-registry=false
  4. 启动服务

    http://127.0.0.1:8761/

创建Eureka Provider

  1. 修改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 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.3.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot2</name>
    <description>Demo project for Spring Boot</description>

    <properties>
    <java.version>8</java.version>
    <spring-cloud.version>Finchley.RELEASE</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-client</artifactId>
               <version>2.2.3.RELEASE</version>
          </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>

    <!--devtools热部署-->
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-devtools</artifactId>
               <optional>true</optional>
               <scope>true</scope>
          </dependency>
    </dependencies>
    <build>
    <defaultGoal>compile</defaultGoal>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
                       <includeSystemScope>true</includeSystemScope>
                  </configuration>
    </plugin>
    </plugins>
    </build>
    </project>

     

  2. 修改application.properties文件

    # 要注册的服务名
    spring.application.name=Eureka-provider
    # 端口
    server.port=8762
    #Eureka Server地址信息
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka

 

上一篇:二、SpringCloud


下一篇:(五)、Eureka服务注册中心