• springCloud(一)Erueka工作原理


    Erueka 概念

                  

     一、Erueka 组件

          Eureka 由两个组件组成:Eureka 服务端 Eureka 客户端

    1.1、Eureka Server( 服务端)

             Eureka Server( 服务端)就是注册中心

        Eureka 服务端担任注册中心的角色,提供了服务的发现和注册功能。 

        

    1.2、Eureka Client ( 客户端) 

             Eureka Client ( 客户端) 是一个 java 客户端、 用来简化与服务端的交互、作为轮询负载均衡器,并提供服务的故障切换支持。

             Eureka 客户端分为 Service Provider (服务提供者) 和 Service Consumer (服务调用者)

        Service Provider 服务提供者, 将自身的服务注册到Eureka Server, 同时通过心跳检查服务的运行状态

           Service Consumer 服务调用者, 从Eureka Server 得到注册的服务列表,找到对应的服务地址在调用并使用

    二、Erueka 工作原理

    2.1 、Eureka Server:注册中心服务端

          注册中心提供三个功能:服务注册、提供注册表、同步服务

      2.1.1、服务注册

        服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表

      2.1.2、提供注册表

        服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表

      2.1.3、同步服务

                 Eureka Client 通过注册、心跳机制和 Eureka Server 同步当前客户端的状态。

    2.2、Eureka Client:注册中心客户端

        服务的提供者,将自身注册到注册中心,服务提供者也是一个 Eureka Client。当 Eureka Client 向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等。   

      2.2.1、Register: 服务注册

        服务的提供者,将自身注册到注册中心,服务提供者也是一个 Eureka Client。当 Eureka Client 向 Eureka Server 注册时,它提供自身的元数据,比如 IP 地址、端口,运行状况指示符 URL,主页等。

      2.2.2、Renew: 服务续约

          Eureka Client 会每隔 30 秒发送一次心跳来续约。 通过续约来告知 Eureka Server 该 Eureka Client 运行正常,没有出现问题。 默认情况下,如果 Eureka Server 在 90 秒内没有收到 Eureka Client 的续约,Server 端会将实例从其注册表中删除,此时间可配置,一般情况不建议更改。

    (微服务网络地址发生变更(例如实例增减或者IP端口发生变化等),会重新注册到服务发现组件上,使用这种方式,可以避免因网络变化导致服务之间的通讯停止,服务消费者也无须人工的修改网络地址。)

      2.2.3 、Eviction 服务剔除
          当 Eureka Client 和 Eureka Server 不再有心跳时,Eureka Server 会将该服务实例从服务注册列表中删除,即服务剔除。

      2.3.4、Cancel: 服务下线
           Eureka Client 在程序关闭时向 Eureka Server 发送取消请求。 发送请求后,该客户端实例信息将从 Eureka Server 的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:

      2.2.5 GetRegisty: 获取注册列表信息

         Eureka Client 从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与 Eureka Client 的缓存信息不同,Eureka Client 自动处理。

           如果由于某种原因导致注册列表信息不能及时匹配,Eureka Client 则会重新获取整个注册表信息。 Eureka Server 缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。Eureka Client 和 Eureka Server 可以使用 JSON/XML 格式进行通讯。在默认情况下 Eureka Client 使用压缩 JSON 格式来获取注册列表的信息。

             2.2.6、Remote Call: 远程调用
        当 Eureka Client 从注册中心获取到服务提供者信息后,就可以通过 Http 请求调用对应的服务;服务提供者有多个时,Eureka Client 客户端会通过 Ribbon 自动进行负载均衡。

    2.3、自我保护机制

        默认情况下,如果 Eureka Server 在一定的 90s 内没有接收到某个微服务实例的心跳,会注销该实例。但是在微服务架构下服务之间通常都是跨进程调用,网络通信往往会面临着各种问题,比如微服务状态正常,网络分区故障,导致此实例被注销。

        固定时间内大量实例被注销,可能会严重威胁整个微服务架构的可用性。为了解决这个问题,Eureka 开发了自我保护机制,那么什么是自我保护机制呢?

        Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,Eureka Server 即会进入自我保护机制。

           Eureka Server 进入自我保护机制,会出现以下几种情况:

           (1 Eureka 不再从注册列表中移除因为长时间没收到心跳而应该过期的服务

          (2 Eureka 仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)

             (3 当网络稳定时,当前实例新的注册信息会被同步到其它节点中

          Eureka 自我保护机制是为了防止误杀服务而提供的一个机制。当个别客户端出现心跳失联时,则认为是客户端的问题,剔除掉客户端;当 Eureka 捕获到大量的心跳失败时,则认为可能是网络问题,进入自我保护机制;当客户端心跳恢复时,Eureka 会自动退出自我保护机制。

        如果在保护期内刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,即会调用失败。对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

    三、Erueka集群原理

        https://blog.csdn.net/qwe86314/article/details/94552801

    四、erueka 工作流程

           https://blog.csdn.net/qwe86314/article/details/94552801

         

    五、搭建 Erueka 工程

           https://www.cnblogs.com/Jomini/p/13407292.html

           

     

    ----------------------------------------------------------------------------------------------------------

    参考:https://blog.csdn.net/qwe86314/article/details/94292053

               https://blog.csdn.net/qwe86314/article/details/94552801

     

  • 相关阅读:
    VUE中tinymce设置字体大小、字体选择(就没有一篇文章能说的清楚的,那么我就说清楚这个问题)
    解决每次git push时需要输入用户名密码的问题
    vue路由,解决同一路由页面多次触发不刷新页面【vue开发】
    函数防抖和节流
    h5页面如何判断是系统Android,ios还是微信等
    react 结合 Promise 和 async await 解决多个异步请求 后统一设置状态问题
    对数组对象递归遍历给子对象添加父对象属性的方法
    React Hooks 使用指南
    webpack配置介绍
    React 实现键盘监听事件
  • 原文地址:https://www.cnblogs.com/Jomini/p/13637529.html
Copyright © 2020-2023  润新知