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注册中心配置
依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
|
如果是F版及以上的话,需要使用该依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
|
yml配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| eureka: instance: hostname: localhost lease-expiration-duration-in-seconds: 90 lease-renewal-interval-in-seconds: 30 prefer-ip-address: true server: enable-self-preservation: true eviction-interval-timer-in-ms: 4000 client: enabled: true fetchRegistry: false instance-info-replication-interval-seconds: 30 registry-fetch-interval-seconds: 30 registerWithEureka: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
|
启动类
1 2 3 4 5 6 7 8
| @SpringBootApplication @EnableEurekaServer public class EurekaServerApp {
public static void main(String[] args) { SpringApplication.run(EurekaServerApp.class,args); } }
|
业务微服务配置
依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
|
如果是F版及以上的话,需要使用该依赖
1 2 3 4 5
| <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
|
yml配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka instance: instance-id: ${spring.cloud.client.ip-address}:${server.port} prefer-ip-address: true ip-address: 192.168.217.211 non-secure-port: 8767 lease-renewal-interval-in-seconds: 10 lease-expiration-duration-in-seconds: 30 status-page-url: /info health-check-url-path: /health
|
启动类
1 2 3 4 5 6 7 8
| @SpringBootApplication @EnableEurekaClient public class ProviderApp {
public static void main(String[] args) { SpringApplication.run(ProviderApp.class,args); } }
|