欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > Spring Cloud全解析:注册中心之初识Eureka

Spring Cloud全解析:注册中心之初识Eureka

2024/10/25 17:15:49 来源:https://blog.csdn.net/Lxn2zh/article/details/140833269  浏览:    关键词:Spring Cloud全解析:注册中心之初识Eureka

Eureka简介

关于Eureka

Eureka是springCloud在一开始的时候推荐使用的注册中心,是Netflix开源的服务发现组件

Eureka包含两个组件:Eureka Server和Eureka Client

Eureka Server提供服务注册服务,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到

EurekaClient是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)。Eureka Client会缓存服务注册表中的信息,这种方式可以使得微服务不需要每次请求都查询Eureka Server,从而降低了Eureka Server的压力,如果Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者完成调用

eureka的高可用性,不需要等注册信息replicate到其他节点,也不保证注册信息是否replicate成功,当数据出现不一致时,虽然A,B上的注册信息不完全相同,但每个Eureka节点依然能够正常对外提供服务,这会出现查询服务信息如果请求A查不到,但请求B就能查到

多个Eureka Server实例之间,互相之间通过复制的方式,来实现服务注册表中数据的同步

服务提供者

服务提供者是作为EurekaClient存在的,其主要工作是

  • 向服务器注册服务
  • 发送心跳给服务器
  • 向服务器获取注册列表
服务调用者

服务调用者也是作为客户端存在的,其主要职责就是发现与调用服务

Eureka Server注册中心配置

依赖
<!--eureka-server服务端 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

如果是F版及以上的话,需要使用该依赖

<!--新版本的eureka-server服务端 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
yml配置
eureka:instance:hostname: localhost# 过期时间,默认90s, 可不配置lease-expiration-duration-in-seconds: 90# 续约时间,默认30s,可不配置lease-renewal-interval-in-seconds: 30# ip地址优先prefer-ip-address: trueserver:# 开启自我保护机制,可以在本地测试时关闭,在正式上线时不建议关闭,默认为trueenable-self-preservation: true# 去除失效服务的时间间隔(毫秒)eviction-interval-timer-in-ms: 4000client:# 启用eureka客户端,默认为true, 可不配置enabled: true# 不需要拉取注册表,本身就是注册中心,只需要维护实例,不需要拉取注册,默认为true# 如果是eureka server集群的话,是需要互相同步的fetchRegistry: false# 两个心跳参数,默认都是30s,可不配置instance-info-replication-interval-seconds: 30# 拉取服务的间隔 使用定时任务来进行拉取  拉取之后存在localRegionApps中# 如果Eureka server挂掉之后,请求server进行拉取最新的地址失败,并不会把缓存清空,所以只要所访问的服务地址没变,依然是可以正常访问的registry-fetch-interval-seconds: 30# 不向注册中心注册自身,默认为trueregisterWithEureka: falseserviceUrl:defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/  # 设置与eureka server交互的地址,用来查询服务和注册服务# 如果是集群的eureka server,需要配置其他server机器的地址,多个地址用逗号分隔
#      defaultZone: http://eureka2:7002/eureka,http://eureka3:7003/eureka
启动类
@SpringBootApplication
@EnableEurekaServer  // 启动Eureka Server相关功能
public class EurekaServerApp {public static void main(String[] args) {SpringApplication.run(EurekaServerApp.class,args);}
}

业务微服务配置

依赖
<!-- eureka -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>

如果是F版及以上的话,需要使用该依赖

<!-- 新版 eureka client -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
yml配置
eureka:client:serviceUrl:defaultZone: http://localhost:8761/eureka  #如果eureka server使用了basic认证的话,地址需要改成http://username:password@localhost:8761/eurekainstance:instance-id: ${spring.cloud.client.ip-address}:${server.port}prefer-ip-address: true   #以IP地址注册到服务中心,如果为false会使用微服务所在的hostnameip-address: 192.168.217.211non-secure-port: 8767#Eureka客户端向服务端发送心跳的时间间隔,单位为秒(客户端告诉服务端自己会按照该规则),默认30lease-renewal-interval-in-seconds: 10#Eureka服务端在收到最后一次心跳之后等待的时间上限,单位为秒,超过则剔除(客户端告诉服务端按照此规则等待自己),默认90lease-expiration-duration-in-seconds: 30status-page-url: /info #状态页面health-check-url-path: /health #健康检查页面
启动类
@SpringBootApplication
@EnableEurekaClient  // 服务启动后注册到Eureka Server注册中心中  也可以使用@EnableDiscoveryClient,对于@EnableEurekaClient只对于Eureka可用,而@EnableDiscoveryClient可以使用任意注册中心服务
public class ProviderApp {public static void main(String[] args) {SpringApplication.run(ProviderApp.class,args);}
}

https://zhhll.icu/2021/框架/微服务/springcloud/注册中心/Eureka/1.Eureka简介/

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com