• 0401-服务注册与发现、Eureka简介


    一、硬编码问题

    解决方案:nginx、或、服务注册与发现

    二、服务发现

      注册、心跳机制

    三、服务发现组件的功能

      1、服务注册表:是一个记录当前可用服务实例的网络信息的数据库,是服务发现机制的核心。服务注册表提供查询API和管理API,使用查询API获得可用的服务实例,使用管理API实现注册和注销;

      2、服务注册:就是服务启动时,将服务的网络地址注册到服务注册表中;

      3、健康检查:服务发现组件会通过一些机制定时检测已注册的服务,如果发现某服务无法访问了(可能是某几个心跳周期后),就将该服务从服务注册表中移除。

      4、服务注销

    四、服务发现的方式

      服务发现方式参看地址:http://www.cnblogs.com/bjlhx/p/8796241.html

    4.1、客户端发现

        Eureka、zk

    4.2、服务器端发现

        Consul + nginx

    五、Eureka简介

    git地址:https://github.com/Netflix/Eureka

    5.1、为什么选择Eureka

      Eureka来自生产环境

      Spring Cloud对Eureka支持很好

    5.2、Eureka简介

      Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。Spring Cloud将它集成在其子项目spring-cloud-netflix中,以实现Spring Cloud的服务发现功能。

      Eureka 项目2.0将会带来更好的扩展性,并且使用细粒度的订阅模型取代了基于拉取的模型

    5.3、Eureka 原理

      官方文档:https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance

    5.3.1、Region和Zone的关系 

      region和zone(或者Availability Zone)均是AWS的概念。在非AWS环境下,我们可以简单地将region理解为Eureka集群,zone理解成机房。这样可理解下图——一个Eureka集群被部署在了zone1机房和zone2机房中。

      参看:https://blog.csdn.net/awschina/article/details/17639191

      

    5.3.2、原理图

      

       上图是来自Eureka官方的架构图,大致描述了Eureka集群的工作过程。

    详述:  

      - Application Service 就相当于本书中的服务提供者(用户微服务),Application Client就相当于本书中的服务消费者(电影微服务);
      - Make Remote Call,可以简单理解为调用RESTful的接口;
      - us-east-1c、us-east-1d等是zone,它们都属于us-east-1这个region;

      由图可知,Eureka包含两个组件:Eureka Server 和 Eureka Client。
        Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
        Eureka Client是一个Java客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
        在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
        Eureka Server之间将会通过复制的方式完成数据的同步。(详见Eureka高可用章节)
        Eureka还提供了客户端缓存的机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。
      综上,Eureka通过心跳检测、健康检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。

  • 相关阅读:
    Java IO流面试题
    Oracle和MySql的区别
    Mybatis与Hibernate不同处
    java 多线程面试题
    Java 异常面试题
    Http中Get和Post请求方式的区别
    Mybatis常见面试题(转)
    解决:Adb connection Error:远程主机强迫关闭了一个现有的连接
    option的value、text与label 古老的bug
    测试
  • 原文地址:https://www.cnblogs.com/bjlhx/p/8784556.html
Copyright © 2020-2023  润新知