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

一、什么是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
    在这里插入图片描述
原创文章 4 获赞 1 访问量 132

猜你喜欢

转载自blog.csdn.net/qq_41864303/article/details/106176392