SpringCloud-01-Eureka注册中心

Eureka服务注册中心

1.什么是Eureka?

  • Netflix在涉及Eureka时,遵循的就是API原则.
  • Eureka是Netflix的有个子模块,也是核心模块之一。Eureka是基于REST的服务,用于定位服务,以实现云端中间件层服务发现和故障转移,服务注册与发现对于微服务来说是非常重要的,有了服务注册与发现,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了,功能类似于Dubbo的注册中心,比如Zookeeper.

2.原理理解

  • Springcloud 封装了Netflix公司开发的Eureka模块来实现服务注册与发现 (对比Zookeeper).
  • Eureka采用了C-S的架构设计,EurekaServer作为服务注册功能的服务器,他是服务注册中心.
  • 而系统中的其他微服务,使用Eureka的客户端连接到EurekaServer并维持心跳连接。这样系统的维护人员就可以通过EurekaServer来监控系统中各个微服务是否正常运行,Springcloud
    的一些其他模块 (比如Zuul) 就可以通过EurekaServer来发现系统中的其他微服务,并执行相关的逻辑.
    在这里插入图片描述
    与Dubbo对比
    在这里插入图片描述
  • Eureka 包含两个组件:Eureka Server 和 Eureka Client.
  • Eureka Server 提供服务注册,各个节点启动后,回在EurekaServer中进行注册,这样Eureka
    Server中的服务注册表中将会储存所有课用服务节点的信息,服务节点的信息可以在界面中直观的看到.
  • Eureka Client是一个Java客户端,用于简化EurekaServer的交互,客户端同时也具备一个内置的,使用轮询负载算法的负载均衡器。在应用启动后,将会向EurekaServer发送心跳(默认周期为30秒) 。如果Eureka Server在多个心跳周期内没有接收到某个节点的心EurekaServer将会从服务注册表中把这个服务节点移除掉(默认周期为90s).

3.三大角色

  • Eureka Server:提供服务的注册与发现 Service
  • Provider:服务生产方,将自身服务注册到Eureka中,从而使服务消费方能狗找到 Service
  • Consumer:服务消费方,从Eureka中获取注册服务列表,从而找到消费服务

4.Eureka构建使用的步骤

4.1 EurekaServer的使用

  1. 导入依赖:

     <!--Eureka服务-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka-server</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    
  2. 编写配置:

在application.yaml配置:

#eureka配置
eureka:
  instance:
    hostname: eureka7001.com    #Eureka服务端的实例名称(localhost),通过修改hosts文件可以为localhost起别名,来进行域名映射
  client:
    register-with-eureka: false #是否向Eureka注册自己
    fetch-registry: false  #表示自己为注册中心
    service-url:    #默认的eureka注册中心地址:"http://localhost:8761/eureka/"
      #单机: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/  #自己的http://localhost:7001/eureka/
      #集群(关联):
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
  1. 开启功能:
    主启动类添加注解@EnableEurekaServer开启功能!
    在这里插入图片描述
    完成,一个注册中心的使用完成!

4.2 EurekaClient的使用

注意:无论是消费者(consumer)还是提供者(provider)对于Server都是Client)

  1. 导入依赖:

    <dependency>  
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>
    
  2. 编写配置:

因为是服务提供者,肯定除了eureka的相关配置还需要配置自身服务需要的一些

#Spring的配置
spring:
  application:
    name: SpringCloud-provider-dept  #负载均衡根据这个名称来访问
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db01?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456

#Eureka的配置,将服务注册到注册中心Eureka Server当中
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   #服务提供者描述

#info配置
info:
  app.name: SQX-SpringCloud
  company.name: Alibaba
  1. 开启功能:
    需要在主启动类当中添加煮酒注解@EnableEurekaClient在这里插入图片描述
    完成,一个服务提供者在eureka的配置完成!(消费者类似)

5.Eureka的一些配置

对于Eureka的一些详细的配置这里需要具体的介绍一下!

首先让我们开启一个3个相互关联的注册中心(集群),并注册进去一个服务!去访问 eureka7001.com:7001就是如图

在这里插入图片描述

我们看到了,图上我分成了4个小块分别标注为1,2,3,4我们来说一下分别是什么,和它是如何配置的?

  1. 模块一:这里是当前注册中心关联的注册中心,具体配置是如下:在这里插入图片描述
    这么做的目的是然多个注册中心相互关联,形成一个所谓的集群,避免的就是如果所有服务注册在一个注册中心当中,如果注册中心崩了怎么办?形成集群后,服务会注册在集群中的每个注册中心当中,即使一个崩了,其他的仍然拥有全部的服务!
  2. 模块二:这里是注册在注册中心的服务名字,具体的配置方式:
    在这里插入图片描述
    如果存在多个相同的服务就是指相同的服务名,负载均衡就是通过服务名字调用,通过策略来确定意相同的服务应该调用哪个。
  3. 模块三:此处是对每一个服务的简单描述,如图
    在这里插入图片描述
    用简单的描述去标注当前服务是干什么的!
  4. 模块四:这是对当前服务的一个扩充的地址,如果需要,可以在这个地址当中去配置当前服务的一些信息,比如当前服务的开发者是谁,哪个公司开发的等,具体的使用如图:首先是需要导入一个依赖在这里插入图片描述
    然后去配置文件通过如下配置以<K,V>的形式即可
    在这里插入图片描述配置完成后,访问即可看到具体的信息如下:在这里插入图片描述
    我们可以看到,我们的访问地址是localhost,我们实际开发的时候去看别人的服务信息,肯定不会是localhost呀,所以要改为真实的ip地址,我们如何开启呢?很简单,只需要在配置中使用prefer-ip-address: false 即可

6.Eureka对比zookeeper

同样是注册中心,他们之间有什么差异 !

1.遵循的原则:

  • Eureka: AP原则(可用性和容错性)
  • Zookeeper: CP原则(一致性和容错性)

2.与服务的通信方式

  • Eureka: Restful风格的http通信方式
  • Zookeeper: Dubbo一个RPC通信框架(RPC远程过程调用的通讯方式)

3.注册中心的使用方式

  • Eureka: 通过相关配置去配置自己的注册中心!
  • Zookeeper: 去第三方下载,下载后启动bin目录下的zkclient.cmd命令

4.服务消费者调用服务提供者的方式

  • Eureka: 服务提供者提供服务到注册中心,在消费者中配置注册中心的地址,然后消费者通过RestTemplate去调用服务提供者所提供的服务,如图

在这里插入图片描述

  • Zookeeper: 在服务提供者提供服务到注册中心后,在服务具体方法标注@Service的注解用于表示当前是个服务,(注意:是dubbo包下的注解而非Spring包下的!),然后@Component注解,将其注入到IOC容器当中,然后消费者同样通过@Service标注自己是个服务后,在其本身可以同@Rederence去获取服务提供者,然后调用即可!如图:在这里插入图片描述
    以上就是它们之间的一些区别!

完成,上述就是当前对于Eureka的知识总结!

posted @ 2022-01-23 20:36  爪洼ing  阅读(23)  评论(0编辑  收藏  举报