zoukankan      html  css  js  c++  java
  • SpringCloud:Eureka注册中心,服务的注册与发现

    Eureka发音:衣瑞卡

    Eureka是什么

    是Netfix的重要组件之一,是一个基于Rest的服务(http协议),用于定位服务,实现云端中间层服务的发现和故障转移,通俗的说就是负责服务的注册与发现的中间件,功能与zookeeper相似。

    拓展:目前比较火的redis也可以做注册中心

    Eureka工作原理

    1.采用了c-s的架构设计,EuerkaServer作为服务的注册功能的服务器,它是注册中心

    2.系统中的各微服务通过Euerka客户端连接EurekaServer并保持心跳连接(心跳链接相当于dubbo-admin),心跳机制属于EureServer,维护人员可以通过EurekaServer来监控各微服务是否运行正常

      Spring Cloud Netfix 的其他模块,如zuul就可以通过EurekaServer发现系统中的其他模块,并执行操作,

      心跳连接:通俗的说就像人一样,有心跳证明这个微服务还活着,没心跳就证明这个微服务有故障;类似定时任务,间隔多久检测一次心跳,

      客户端向EurekaServer发送心跳周期(默认为30秒),如果在多个周期内没有收到心跳就从注册表中移除(默认周期90秒)

    3.EurekaServer需要开发人员自己写,不想zookeeper(直接下载,拿来即用)

    自我保护机制

    通俗的说就是在某时刻某个微服务不可用了(未知原因),Eureka不会立刻清理,依旧会对该服务进行保存

    详解;

      通常情况下,如果Eureka在一定时间内没有收到某个服务实例的心跳,EurekaSever会注销该服务,但是当因为网络分区故障发生,如停电等造成服务实例没有了心跳,服务是没有问题的,此时如果EurekaServer直接按心跳机制去注销这些服务的话是不可取的,所以EurekaSever的自我保护机制就会起作用,他是通过判断:当EurekaServer节点在短时间内丢失大量的客户端时,Eureka就会去保护注册表中的信息,当网络故障恢复时,该EurekaServer节点就会自动退出自我保护机制

      它的设计哲学是:宁可保留错误的服务注册信息,也不盲目的删除任何可能健康的服务实例

      自我保护机制可以使用eureka.server.enable-self-preseration=false,禁用,不建议禁用

    EurekaSever环境配置及注册测试

    1.新建一个maven模块,当作EurekaSever

    导入相关依赖

            <!--EurekaServer-->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
                <version>1.4.6.RELEASE</version>
            </dependency>
    View Code

    yaml配置EurekaSever

    server:
      port: 7001
    
    #Eureka配置
    eureka:
      instance:
        hostname: localhost #Eureka服务端的实力名称
      client:
        register-with-eureka: false #表示是否向服务端注册自己,本身就是服务端
        fetch-registry: false #fetch-registry: false表示自己为服务端,注册中心
        service-url: #监控页面地址
          defaultZone: http://${eureka.instance.hostname}:${server.port}/erueka/
    View Code

    新建springboot主启动类,开启EurekaSever功能

    ////url:http://http://localhost:7001/
    @EnableEurekaServer //开启Eurka服务端功能,可以接收别人注册进来
    @SpringBootApplication
    public class EurekaServer_7001 {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServer_7001.class,args);
        }
    }
    View Code

    2。Eureka客户端

    相关依赖

            <!--Eureka-->
            <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
                <version>1.4.6.RELEASE</version>
            </dependency>
            <!--完善eureka监控信息-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    View Code

    yaml配置Eureka客户端

    #Eureka的配置
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka/
      instance:
        instance-id: springcloud-provider-dept8001 #修改eureka的默认描述信息
    
    #info配置,作用:说明信息
    info:
      app.name: king-springboot
      company.name: blog.king.com
    View Code

    主启动类开启相关功能:

    @EnableDiscoveryClient //服务发现,企业级协同开发
    @EnableEurekaClient //开启eureka客户端,在服务启动后自动注册到指定的EurekaServer中

    最后打开相应的EureSever 的port

    微服务中间件开发步骤

    导入依赖
    编写配置文件
    开启指定功能(@Enablexxx)
    配置类(@Configuration @Bean)部分需要

      

      

  • 相关阅读:
    普元EOS中nui(对jquery MiniUi的封装)合并表头
    css--让箭头动起来
    在开发中说一说你最讨厌什么函数????
    前端开发学习路线
    默哀日,网页置灰,开发人员你应该掌握的
    window--环境下升级node的版本(因为低版本node运行Vue项目有问题)
    小程序--模板<template>的定义和使用
    小程序--app.js之App方法
    小程序---页面配置文件,只对自己的页面有效果
    javascript 内存模型
  • 原文地址:https://www.cnblogs.com/CL-King/p/14312599.html
Copyright © 2011-2022 走看看