客户端:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
eureka:
instance:
app-group-name: "cms系统"
appname: "cms系统"
prefer-ip-address: true
# ip-address: 172.16.17.200
# hostname: 172.16.17.200
#健康心跳时间
lease-renewal-interval-in-seconds: 10
#最长剔除时间
lease-expiration-duration-in-seconds: 20
client:
registerWithEureka: true #是否向服务注册中心注册自己
fetchRegistry: true #是否检索服务
serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置
defaultZone: http://127.0.0.1:8081/eureka/
healthcheck:
enabled: false
registry-fetch-interval-seconds: 5
eureka服务端:
<!--eureka-client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:
port: 7001
eureka:
instance:
hostname: localhost #eureka服务端的实例名称
prefer-ip-address: true
client:
register-with-eureka: false #false标识不向注册中心注册自己
fetch-registry: false #false表示自己就是注册中心我的职责就是维护服务实例,并不需要检索服务
serviceUrl: #服务注册中心的配置内容,指定服务注册中心的位置
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
freemarker:
prefer-file-system-access: false
cloud:
loadbalancer:
ribbon:
enabled: false
eureka集群配置
1,基础知识
什么是服务治理?
传统的rpc调用,管理每一个服务与服务之间的依赖的关系比较复杂,管理比较复杂,所以需要服务治理,管理服务与服务的依赖关系,可实现服务调用,负载均衡,容错等,实现服务的注册与注册
什么是服务的注册于发现?
eureka采用cs的设计架构,eureka作为服务的注册功能的服务器,他是服务注册的中心,而系统中的其他的微服务使用eureka的client连接到eureka server并维持心跳检测,在服务的注册与发现中,有一个注册中心,当服务器启动的时候会把当前的自己的服务器的信息,比如服务器地址,通讯地址等以别名注册的方式注册到注册中心(key (别名)value(host:port))。另一方(消费者|服务提供者)以该别名的方式去注册中心获取到实际的通讯地址,然后在体现本地rpc调用rpc远程调用框架的核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的依赖关系(服务治理理念),在人格rpc远程框架中,都会有一个注册中心(存放服务器地址的相关信息)
1,启动eureka注册中心
2,启动服务提供者
3,服务提供者启动后悔将自身信息以别名的方式注册到eureka
4,消费者在需要调用接口的时候,使用服务别名去注册中心获取实际的rpc服务远程调用地址
5,消费者获取调用地址后底层使用利用HttpClient技术实现远程调用
6,消费者获取服务地址后会缓存到jvm内存中,默认每三十秒更新一次服务调用地址
3,eureka包含两个组件 eureka server ,eureka client
eureka server:提供服务的注册服务,
eureka client:通过注册中心访问,是一个java客户端,客户端同时也具备一个内置的使用轮询(round-robin)负载算法的负载均衡器,在应用启动后,将会向eureka server发送心跳,默认周期30s,如果eureka server在多个心跳周期没有接收到某个节点的心跳,eureka将会从服务注册表中把这个服务移除(默认90s)
4,集群原理:互相注册,相互守望(实现负载均衡和容错)
服务端
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
客户端:
eureka:
client:
register-with-eureka: true #表示是否将自己注册到eureka,默认为true
fetch-registry: true #表示是否从eureka抓取已有的注册信息,默认为true
service-url:
#defaultZone: http://127.0.0.1:7001/eureka
defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7001.com:7001/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: payment8001 #eureka显示主机名修改
prefer-ip-address: true #访问路径显示Ip地址
5,eureka的微服务
保护模式
主要用于一组客户端和Eureka Server之间网络存在网络分区场景下的保护,一旦进入保护的模式,Eureka Server 将会尝试保护其服务表的信息,不再删除服务注册表的数据,也就是不会注销任何微服务
导致原因: 某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该服务的信息进行保存,属于CAP里面的AP的分支
为什么会产生Eureka自我保护机制?
为了防止Eureka Client可以正常运行,但是与Eureka网络不通,Eureka不会立刻将Eureka服务剔除
什么是自我保护?
如果Eureka Server 在一定的时间没有接受到某个微服务实例的心跳,Eureka Server立刻将会注销该实例,默认90s,但是当网路分区发生故障的时候(卡顿,延时,拥挤),微服务无法与Eureka之间通信,其实微服务是健康的,此时不应该注销客户。
怎么禁止自我保护?
客户端添加
Eureka服务端添加
6,Eureka停更了,不过不影响使用,但是以后的技术选型要注意