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

   日期:2020-05-19     浏览:177    评论:0    
核心提示:文章目录一、什么是Eureka二、创建Eureka模块三、服务提供者服务注册信息配置(扩展)获取服务信息(扩展)自我保护机制(拓展)四、Eureka集群配置CAP原则及与zookeeper的对比一、什么是EurekaEureka是一个基于REST的服务,主要用于AWS云中的定位服务,以实现中间层服务器的负载平衡和故障转移在 Spring Cloud 微服务架构中通常用作注册中心我们称这个服务为 Eureka Server,还有一个与之交互的客户端称之为 Eureka ClientEureka架构大数据

文章目录

  • 一、什么是Eureka
  • 二、创建Eureka模块
  • 三、服务提供者
    • 服务注册
    • 信息配置(扩展)
    • 获取服务信息(扩展)
    • 自我保护机制(拓展)
  • 四、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
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服