SpringCloud-Eureka(1)认识Eureka和初步配置

什么是Eureka?

Eureka是 Netflix的一个子模块,也是核心模块之一,遵循AP原则(在分布式系统领域有个著名的CAP定理,C-数据一致性;A-服务可用性;P-服务对网络分区故障的容错性,这三个特性在任何分布式系统中不能同时满足,最多同时满足两个)。它是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务来说非常重要的,有了服务注册与发现只需使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件,功能类似于Dubbo的注册中心,比如Zookeeper。

Eureka的架构

Eureka采用了C-S的架构,EurekaServer作为服务注册功能的服务器,是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Server并维持心跳连接。这样系统的维护人员就能通过EurekaServer来监控系统中各个微服务是否正常运行,SpringCloud的一些其他模块(比如Zuul)就可以通过EureServer来发现系统中的其他服务,并执行相关的逻辑。

Eureka包括两个组件:Eureka ServerEureka Client

  • server提供服务注册服务,各个结点启动后,会再EurekaService中进行注册,这样Server中的服务注册表中将会存储所有可用服务结点的信息,服务结点的信息可以在界面中直观的看到。
  • Client是一个java客户端,用户简化EurekaServer的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在启动后,将会向Server发送心跳(默认周期为30秒)。如果Server在多个心跳周期没有接受到某个节点的心跳,Server将会从服务注册表中把这个服务节点移除掉(默认周期为90秒)。(这里的又称Eureka的自我保护机制,下面会具体详解)

Eureka的初步配置认识

我们在之前的项目基础上(SpringCloud-REST实现生产者与消费者的通信服务),再创建一个模块(其实关系不大,只是前面有SpringCloud项目的初始化)。并导入依赖,Eureka的话,我们只需要导入Eureka的的依赖就行,这里我们一步一步来,我们先导入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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>springcloud</artifactId>
        <groupId>com.lin</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>eureka</artifactId>

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

</project>

导入依赖之后就是配置文件了,我们创建application.yml,然后进行配置

server:
  port: 7001

#Eureka配置
eureka:
  instance:
    hostname: localhost #服务端的实例名称
  client:
    register-with-eureka: false #表示是否向服务中心注册自己
    fetch-registry: true #为false的话,表示自己为注册中心
    service-url: #与服务中心进行交互的一个地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

这里的与服务中心交互地址我们是有默认的,如果没有的话就是源码默认的地址

然后就是创建我们的主启动类

package com.lin.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer  //服务端的启动类
public class eureka_7001 {

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

}

访问7001端口就能看到我们Eureka的页面。


接下来呢就是注册服务进来,可以看我的下一篇博客。

posted @ 2020-07-14 15:47  CryFace  阅读(169)  评论(0编辑  收藏  举报