zoukankan      html  css  js  c++  java
  • SpringCloud学习(3)——Eureka服务注册中心及服务发现

    Eureka概述

    Eureka是Netflix的一个子模块, 也是核心模块之一。Eureka是一个基于REST的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务框架来说非常重要, 有了服务注册和发现, 只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似于Dubbo的注册中心, 比如Zookeeper。

    Eureka架构

    Eureka采用C-S设计架构。Eureka Server作为服务注册功能的服务器, 它是服务中策中心。而系统中的其他微服务, 使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中的各个微服务是否正常运行。

    Eureka中包含两个组件, Eureka Server和Eureka Client

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

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

    创建服务注册中心:microservicecloudeureka7001

    在启动类中必须添加@EnableEurekaServer, 启动注册中心, 接受其他服务注册进来

    测试是否启动成功: 在浏览器中输入localhost:7001 出现如下图的图标页面说明启动成功

     

    修改服务提供工程:microservicecloudproviderdept8001

    在启动类中必须添加@EnableEurekaClient, 启动服务客户端,向注册中心注册

    pom.xml中添加Eureka客户端依赖

    在application.yml中添加Eureka配置

    配置微服务名称

    修改入驻Eureka中的别名id:

    修改访问名称有IP信息提示:

    修改前:

     

    修改后:

    修改微服务info内容详细信息:

     

    在客户端pom.xml中添加依赖

    在总工程pom中添加检索插件:

     

    在客户端application.yml中添加info内容详细信息:

     

    结果:

    Eureka自我保护机制

    某一时刻某一服务不可用, Eureka不会立即清理,依旧会对该服务的信息进行保存。

    在自我保护模式中, Eureka Server会保护服务注册表中的信息, 不再注销任何服务实例。当它收到的心跳数重新恢复到阈值以上时, 该Eureka Server节点就会自动退出自我保护模式。它的设计思想是: 宁可保留错误的服务注册信息, 也不盲目的注销任何可能健康的服务实例。使用自我保护模式可以使Eureka集群更加健壮。稳定。

    在SpringCloud中可以使用eureka.server.enable-self-preservation=false禁用自我保护模式。

    因为长时间没有任何操作, Erueka Server自动启动自我保护模式。

    服务发现

    添加服务发现接口:

    在启动类中添加@EnableDiscoveryClient启动服务发现注解。

    测试:http://localhos:8001/dept/discovery

    修改微服务消费客户端服务发现:microservicecloudconsumerdept80

    添加远程调用服务发现接口:

    集群搭建

    创建microservicecloudeureka7002

    创建microservicecloudeureka7003

    修改启动类名称。

    因为只有一台机器, 所以得做一下映射: 修改C:WindowsSystem32driversetc目录下hosts文件

    修改配置文件: 

    microservicecloudeureka7001

    microservicecloudeureka7002

     

    microservicecloudeureka7003

    microservicecloudproviderdept8001

    测试是否搭建成功: 在浏览器重输入http://eureka7001.com:7001/是否显示如下信息

     

    其他节点测试同上。

    Eureka和Zookeeper的区别

    传统的关系型数据库遵循ACID(A:原子性, C:一致性, I:独立性, D:持久性)

    非关系型数据库遵循CAP三选二原则(C:强制一致性, A:可用性, P:分区容错性)

    Eureka遵循AP原则

    Zookeeper遵循CP原则

    Eureka可以很好的应对因网络故障导致部分节点失去联系的情况, 而不会像Zookeeper那样使整个注册服务瘫痪。

    GitHub源码

    https://github.com/wcd19901010/microservicecloud

  • 相关阅读:
    关于HTML Table标签的边框问题总结
    Java编程中-servlet
    编程语言简史
    SQL SERVER 数据库操作脚本
    JQuery实现方法,简单示例
    001-python基础-python安装和升级
    .cs文件与aspx.cs文件之间的区别是什么???他们的作用是什么???ASPX文件的作用是什么?
    判读字符串长度
    <%=id%>是什么意思
    sql中复合组建解析
  • 原文地址:https://www.cnblogs.com/chinda/p/9174093.html
Copyright © 2011-2022 走看看