SpringCloud之Eureka(服务注册与发现)

SpringCloud之Eureka(服务注册与发现)

一.为什么需要注册中心Eureka?
讲Eureka之前我们先说说使用SpringCloud构建项目
1.从分布式/微服务的角度而言:就是把我们一大的项目,分解成多个小的模块。这些小的模块组合起来,完成功能
2.那会出现什么问题呢?
  首当其冲的就是子系统之间的通讯问题。子系统与子系统之间不是在同一个环境下,那就需要远程调用。
3.既然是远程调用,就必须知道ip地址,而ip地址经常变动的话,那我们手动维护这些静态资源会非常麻烦,
  所以就有了今天的主角Eureka
4.当服务器启动后,就会将ip交给注册中心Eureka管理,然后注册中心时刻监控着ip的存活情况

在这里插入图片描述

二.Eureka(服务注册与发现)是什么?
Eureka专门用于给其他服务注册的称为Eureka Server(服务注册中心),其余注册到Eureka Server的服务称为Eureka Client
	1.服务注册:服务启动之后,自动将ip跟端口注册到注册中心
	2.服务治理:服务管理,通过心跳方式,保证注册中心每个服务ip可用
	3.Eureka Client分为服务提供者和服务消费者。
//Eureka就是一个统一管理整个微服务系统ip列表管理中心
三.Eureka的治理机制
1.服务提供者(Eureka Client)
	服务注册:启动的时候会通过发送REST请求的方式将自己注册到Eureka Server上,同时带上了自身服务的一些元数据信息。
	服务续约:在注册完服务之后,服务提供者会维护一个心跳用来持续告诉Eureka Server: "我还活着 ” 
	服务下线:当服务实例进行正常的关闭操作时,它会触发一个服务下线的REST请求给Eureka Server,
	 		  告诉服务注册中心:“我要下线了 ”
2.服务消费者(Eureka Client)
	获取服务:当我们启动服务消费者的时候,它会发送一个REST请求给服务注册中心,来获取上面注册的服务清单
	服务调用:服务消费者在获取服务清单后,通过服务名可以获得具体提供服务的实例名和该实例的元数据信息,
			在进行服务调用的时候,优先访问同处一个Zone中的服务提供方。
3.服务注册中心(Eureka Server)
	失效剔除:默认每隔一段时间(默认为60秒) 将当前清单中超时(默认为90秒)没有续约的服务剔除出去。
	自我保护:Eureka Server 在运行期间,会统计心跳失败的比例在15分钟之内是否低于85%(通常是网络不稳定),
			Eureka Server会将当前的实例注册信息保护起来,让这些实例不会过期,尽可能保护这些注册信息。
四.注册中心eureka-server搭建
1.步骤
	1.新建子项目-cloud-eureka-server8761
	2.启动类上贴上@EnableEurekaServer注解
	3.导入依赖,配置yml配置文件
	4.启动启动类
	5.测试:http://localhost:8761
2.pom.xml
  <parent>
        <artifactId>spcloud-demo</artifactId>
        <groupId>cn.wolfcode.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
	
    <artifactId>cloud-eureka-server8761</artifactId>
	1:导入springboot-web环境
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
	2:导入springboot-监控依赖【后续图形化监控】
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
	3:Eureka服务端依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>
3.application.yml
server:
  port: 8761

eureka:
  instance:
    hostname: localhost
  client:
    #是否将自己注册进去eureka,false为不注册,true注册
    registerWithEureka: false
    #是否从eureka抓取注册信息,单点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
   server:
    #默认是true,现在关闭自我保护机制,保证不可用服务被删除
    enable-self-preservation: false  #这个是关闭自我保护机制  
五.商品服务product-server搭建
步骤:
	1.新建子项目-cloud-provider-product8080
	2.启动类上贴上@EnableEurekaClient注解
	3.导入依赖,配置yml配置文件
	4.启动启动类
	5.测试:先启动cloud-eureka-server8761
		  再启动cloud-provider-product8080
		  最后打开浏览器输入 http://localhost:8761 查看服务注册栏
1.测试结果

在这里插入图片描述

2.pom.xml
 <parent>
        <artifactId>spcloud-demo</artifactId>
        <groupId>cn.wolfcode.springcloud</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>cloud-provider-product8080</artifactId>

	1:导入springboot-web环境
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
	2:导入springboot-监控依赖【后续图形化监控】
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
	3:Eureka客户端依赖
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>
3.application.yml
server:
  port: 8080

spring:
  application:
    name: product-server  #服务注册中心的服务名

eureka:
  client:
    #是否将自己注册进去eureka,false为不注册,true注册
    registerWithEureka: true
    #是否从eureka抓取注册信息,单点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    serviceUrl:
      defaultZone:  http://localhost:8761/eureka/
  instance:
    #eureka客户端向服务端发送心跳的时间间隔,单位为秒,默认是30
    lease-renewal-interval-in-seconds: 1      #设置客户端心跳发送请求时间
    #eureka服务端收到最后一次心跳等待的时间上限,单位为秒,默认是90,超时剔除
    lease-expiration-duration-in-seconds: 2   #设置服务端心跳等待时间
六.Eureka 自我保护机制
	1.Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否低于 85%,如果低于 85%,
	  Eureka Server 会将这些实例保护起来,让这些实例不会过期
	2.我们可以通过配置文件关闭自我保护机制,不推荐使用
		eureka.server.enable-self-preservation=false  关闭保护机制
	3.我们可以设置心跳发送时间与心跳等待时间
七.常见注册中心
zookeeper  //配合Dubbo框架使用
Eureka //springcloud
consul
nacos //阿里研发,后起之秀
etcd
八.小结
	1.Eureka注册中心提供服务注册与发现功能,对服务的url地址进行统一管理.
    2.Eureka分为Eureka Server(服务注册中心)和Eureka Client(客户端)
    3.Eureka Client又分为服务提供者和服务消费者
    4.Eureka自我保护机制就是防止网络延迟时,将有用的ip地址误删调,我们也可以收到关闭这个机制(不推荐)
    5.Eureka通过心跳模式来实时监控ip地址是否可用,我们也可以设置心跳时间
    6.导入依赖时,2,一种为服务端的(即注册中心),一种为客户端的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值