NetFlix 服务注册与发现 Eureka

Eureka

配置环境:

【服务端】第一步:配制导入依赖

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-eureka-server</artifactId>
     <version>1.4.6.RELEASE</version>
 </dependency>

【服务端】第二步:配置properties或xml

server:
  port: 7001

#Eureka 配置
eureka:
  instance:
    hostname: localhost #Eureka服务端的实例名称
  client:
    register-with-eureka: false #表示是否向Eureka注册中心注册自己
    fetch-registry: false #false:表示自己为注册中心
    service-url:  # 监控页面的配置
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

【服务端】 第三步: 在启动类中开启EurekaServer功能

@SpringBootApplication
@EnableEurekaServer //服务端的启动类,可以
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class,args);
    }
}

Service

【服务注册端】 第一步:导入依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
    <version>1.4.6.RELEASE</version>
</dependency>

【服务注册端】 第二步:进行配置

#Eureka 配置 : 服务注册到哪里
eureka:
  client:
    service-url: #服务注册的地址
      defaultZone: http://localhost:7001/eureka/
  instance: #这个instance并不重要
    instance-id: springcloud-provider-dept:8081 #修改监控页面上的默认描述信息

#info配置 配置后可在监控页查看到注册服务端的信息
info:
  app.name:

【服务注册端】 第三步:启动类开启Eureka服务注册端功能

@SpringBootApplication
@EnableEurekaClient	//在服务启动后,自动注册到Eureka中
@EnableDiscoveryClient //服务发现,并不必须
public class MobilefxrApplication {

	public static void main(String[] args) {
		SpringApplication.run(MobilefxrApplication.class, args);
	}

}

Eureka监控页面

在这里插入图片描述

自我保护机制:

上图红色为进入Eureka自我保护机制中,因为服务注册端端口掉线了。
短时间内,会保存服务信息,不会删除。
宁可保留错误的服务注册信息,也不会盲目的注销任何可能健康的服务实例,好死不如赖活着。
让Eureka集群更加的健壮
在SpringCloud中,可以使用配置启用保护机制,但是并不推荐这么做

集群配置:

需要更改yml里面的配置信息,需要更改的字段为:
eureka.client.service-url.defaultZone= 其他集群的地址,多个关联用,分割

#Eureka 配置
eureka:
  instance:
    hostname: eureka7002.com #Eureka服务端的实例名称
  client:
    register-with-eureka: false #表示是否向Eureka注册中心注册自己
    fetch-registry: false #false:表示自己为注册中心
    service-url:  # 监控页面的配置
      # 单机情况下的配置↓ 配置一个即可
      # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

      # 集群情况下的配置↓(关联) 多个关联使用','连接
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/

此外服务提供者注册服务时,同样需要把服务注册到集群中的所有Eureka上

#Eureka 配置 : 服务注册到哪里
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/

配置成功后,连接一个Eureka监控页面即可查看关联信息
在这里插入图片描述

Eureka 和 Zookeeper 的区别

回顾两大类型数据库原则

关系型数据库:ACID原则

A 原子性 C 一致性 I 隔离性 D 持久性

非关系型数据库: CAP原则

C 强一致性 A 可用性 P 分区容错性

CAP 的三进二 CA、 AP 、 CP

一个分布式项目不能同时满足CAP三个特性、最多只能一次实现两个原则
P在分布式项目是必须的
Zookeeper 保证的 CP
Eureka 保证的是 AP

Zookeeper

强一致性保证了数据一致性的安全,但是如果leader宕机需要重新选举leader,这个过程大概需要30s~120s,导致会出现漫长的注册时间。

Eureka

各个节点都是平等的,不存在leader 只要有一台Eureka,就能保证注册服务的可用性,如果15分钟内85%的节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:

1、Eureka不再从注册列表中移除因为长时间没有收到心跳而过期的服务
2、Eureka仍然能够接收新服务的注册和查询请求,但是不会被同步到其他节点上(只保证当前节点依然可用)
3、当网络稳定时,当前实例新的注册信息会被同步到其他节点中

因此,Eureka可以很好的处理网络故障导致部分节点失去联系的情况,而不会像Zookeeper那样整个注册中心瘫痪

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值