SpringCloud的组件,服务治理 eureka

dubbo:zk --------------CP。主从的结构。可能你去请求的时候,什么都没有。

springCloud: eurake --------------AP。没有主从,每一个地方都有一份数据的副本,互相之间数据的同步,会出现小问题,会保存副本一段时间。集群如果挂了,会产生数据不一致的问题。

CAP理论 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)

IDEA创建springcloud的eureka项目,在Cloud DIscovery里面的。

eureka设置service-url,设置区域zone

 创建项目遇到的问题:https://www.cnblogs.com/syp172654682/p/9015057.html

心跳:服务端隔一段时间请求一下

续约:服务端维持着一个可以过期的列表,某一个服务设置90s过期时间,隔一段时间续约一下。

服务消费者不是直接请求注册中心。服务提供者随时提供一份可用的服务列表。通过负载均衡算法调用服务注册中心得到列表选一个去访问。如果过期了挂了,30秒请求一下服务器。

服务的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 http://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>1.5.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.eureka</groupId>
    <artifactId>eureka-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Dalston SR4</spring-cloud.version>
    </properties>

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


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </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>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>

</project>

yml配置:

server:
  port: 8888
eureka:
  instance:
    hostname: eureka
    #续约时间
    lease-expiration-duration-in-seconds: 90
    #定时任务 每隔30秒续约一次
    lease-renewal-interval-in-seconds: 30
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    registry-fetch-interval-seconds: 30
  server:
    #自我保护不会开启
    enable-self-preservation: false

然后在Application的主函数这加上@EnableEurekaServer

访问loclhost:8888/的时候如图。

可以一个服务向另一个服务注册,也可以相互注册。

eureka-demo1向eureka-demo注册,这是eureka-demo1的配置文件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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.clouddemo</groupId>
    <artifactId>eureka-demo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-demo1</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>Dalston SR4</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.3.5.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </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>

这里主函数的注解是@EurekaDiscoveryClient

server.port=8081
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://localhost:8888/eureka/

启动成功,会看到日志里面的注册状态204。

eureka的工作原理。

posted @ 2018-12-25 16:25  正能量教官  阅读(307)  评论(0编辑  收藏  举报