您的位置:首页 > 编程语言 > Java开发

SpringCloud微服务(三)之Eureka服务注册于发现

2020-06-05 09:02 155 查看

文章目录

  • 四、Eureka集群配置
  • CAP原则及与zookeeper的对比
  • 一、什么是Eureka

    • Eureka是一个基于REST的服务,主要用于AWS云中的定位服务,以实现中间层服务器的负载平衡和故障转移
    • 在 Spring Cloud 微服务架构中通常用作注册中心
    • 我们称这个服务为 Eureka Server,还有一个与之交互的客户端称之为 Eureka Client
    • Eureka架构:

    二、创建Eureka模块

    1. 导入依赖
    2. 编写配置文件
    server:
    port: 7001
    
    #Eureka配置
    eureka:
    instance:
    hostname: hostname #Eureka服务端的实例名称
    client:
    register-with-eureka: false # 表示是否向eureka注册中心注册自己
    fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
    service-url:
    # 单机:
    defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    # 集群(关联):defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    1. 启动类注解开启功能 @EnableXXX
    2. 进去Eureka客户端 http://localhost:7001/

    三、服务提供者

    服务注册

    1. 注入依赖
    2. 配置文件 配置Eureka
    #Eureka的配置,服务注册到哪里
    eureka:
    client:
    service-url:
    defaultZone: http://hostname:7001/eureka/
    instance:
    instance-id: springcloud-provider-dept8001 # 修改eureka上的默认描述信息!
    prefer-ip-address: true  # true,可以显示服务的IP地址 ~
    1. 配置启动类 @EnableEurekaClient//服务启动后自动注册到Enable中
    2. 查看是否注入进去

    信息配置(扩展)

    1. 注入actuator…依赖
    2. 配置文件配置info
    #info配置
    info:
    app.name: kuangshen-springcloud
    company.name: blog.kuangstudy.com
    1. 客户端可以查看用户信息

    获取服务信息(扩展)

    1. controller层:
    //获取一些配置的信息,得到具体的微服务!
    @Autowired
    private DiscoveryClient client;
    //注册进来的微服务~,获取一些消息~
    @GetMapping("/dept/discovery")
    public Object discovery(){
    //获取微服务列表的清单
    List<String> services = client.getServices();
    System.out.println("discovery=>services:"+services);
    
    //得到一个具体的微服务信息,通过具体的微服务id,applicaioinName;
    List<ServiceInstance> instances = client.getInstances("SPRINGCLOUD-PROVIDER-DEPT");
    
    for (ServiceInstance instance : instances) {
    System.out.println(
    instance.getHost()+"\t"+
    instance.getPort()+"\t"+
    instance.getUri()+"\t"+
    instance.getServiceId()
    
    );
    }
    return this.client;
    }
    1. 启动类配置EnableDisCoveryClient

    自我保护机制(拓展)

    某一时刻一个微服务不能用了,erueka不会立刻清理,依旧会对该微服务的信息进行保存。

    四、Eureka集群配置

    1. 多创建几个Eureka模块7001、7002、7003
    2. 修改配置文件、修改包名等
    3. 每个Eureka模块的配置文件:
    server:
    port: 7001
    
    #Eureka配置
    eureka:
    instance:
    hostname: eureka7001.com #Eureka服务端的实例名称
    client:
    register-with-eureka: false # 表示是否向eureka注册中心注册自己
    fetch-registry: false #fetch-registry如果为false,则表示自己为注册中心
    service-url:
    # 单机: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    # 集群(关联):
    defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    1. 服务提供端配置文件
    #Eureka的配置,服务注册到哪里
    eureka:
    client:
    service-url:
    defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
    instance:
    instance-id: springcloud-provider-dept8001 # 修改eureka上的默认描述信息!
    prefer-ip-address: true  # true,可以显示服务的IP地址 ~

    CAP原则及与zookeeper的对比

    • CAP: C:强一致性
    • A:可用性
    • P:分区容错性
  • zookeeper保证的是CP
    因为选取Leader的时候属于不可用状态,所以不能保证可用性
  • Eureka保证的是AP
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: