springCloud(二)服务发现组件Eureka

1.简介

Eureka是 Netflix开发的服务发现框架, Springcloud将它集成在自己的子项目spring- cloudlnetflix中,实现 Springcloudp的服务发现功能。 Eureka包含两个组件:Eureka ServerEureka Client

Eureka Server:

提供服务注册服务,各个节点启动后,会在 Eureka Server中进行注册,这样 Eurekaserver中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。

Eureka Client:

是一个java客户端,用于简化与 Eureka Server的交互,客户端同时也就别一个内置的、使用轮询( round- robin)负载算法的负载均衡器。在应用启动后,将会向 Eureka Server发送心跳,默认周期为30秒,如果 Eureka Server在多个心跳周期内没有接收到某个节点的心跳, Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

2.Eureka服务端开发 eureka服务搭建官网介绍地址

(1)父工程添加版本控制

注意springCloud版本必须和springboot版本相对应。

SpringCloud和SpringBoot版本对照

 <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <fastjson.version>1.2.51</fastjson.version>
        <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
        <springboot.version>2.2.2.RELEASE</springboot.version>
    </properties>
    <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

(2)创建eureka微服务工程导入eureka微服务依赖

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

(3)yml文件配置

server:
  port: 9999
eureka:
  register-with-eureka: false #不将自己注册到eureka服务中
  fetch-rgister: false #是否从Eureka中获取注册信息
  service-url: http://127.0.0.1:${server.port}/eureka/         #Eureka客户端与Eureka服务端进行交互的地址

(4)eurekaServer启动类编写

@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})
@EnableEurekaServer
public class EurekaServer {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer.class);
    }
}

3.Eureka客户端开发

(1)添加eureka客户端依赖

 <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>

(2)yml配置

eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:9999/eureka/
  instance:
    prefer-ip-address: true #可以跨域访问

(3)服务启动类添加注解@EnableEurekaClient

@MapperScan("com.diploma.person.mapper")
@EnableCaching
@EnableEurekaClient
public class PersonApplication {
    public static void main(String[] args) {
        SpringApplication.run(PersonApplication.class,args);
    }

4.eureka如何保证系统可用性、和灵活性等

Eureka Server之间通过复制的方式完成数据的同步, Eureka还提供了客户端缓存机制,即使所有的 Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的APl。综上, Eureka通过心跳检査、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

5.Eureka的保护模式

Eureka Server在运行期间,会统计心跳失败的比例,在15分钟之内是否低于85%,如果出现低于的情况(在单机调试的时候很容易满足,实际在生产环境上通常是由于网络不稳定导致), Eureka- Server会将当前的实例注册信息保护起来,同时提示这个警告。保扩模式主要用于一组客户端和 Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式, Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。

发布了75 篇原创文章 · 获赞 80 · 访问量 5685

猜你喜欢

转载自blog.csdn.net/qq_37356556/article/details/104826112
今日推荐