02-Eureka(服务注册与发现)

Eureka(服务注册与发现)

什么是Eureka

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。

Eureka的特点

  1. Eureka包含两个组件:Eureka ServerEureka Client

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

  3. Eureka Client 是一个java客户端(设置各个微服务),用于简化与Eureka Server的交互,客户端同时也创建一个内置的、使用轮询(round-robin)负载算法的负载均衡器。

  4. 在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。

  5. Eureka Server 之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server 都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。

环境搭建(服务端)

引入坐标

<!-- eureka -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

启动类配置

@SpringBootApplication
@EnableEurekaServer	//激活eureakaserver
public class EurekaServerApplication {

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

yml配置

spring:
  application:
    name: eureka-server
server:
  port: 9000 #端口

#配置eureka server
eureka:
  instance:
    hostname: localhost
  client:
    register-with-eureka: false #是否将自己注册到注册中心
    fetch-registry: false #是否从eureka中获取注册信息
    service-url: #配置暴露给Eureka Client的请求地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#  server:
#    enable-self-preservation: false #关闭自我保护
#    eviction-interval-timer-in-ms: 4000 #剔除服务间隔

访问测试

  • 浏览器访问 ,出现下图所示,则配置启动成功

    2-1

环境搭建(客户端)

生产者环境搭建

引入坐标

<!--引入EurekaClient-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

配置启动类

@SpringBootApplication
//激活eurekaClient,下面两个注解作用是一样的,在新版springboot中 可以省去下列两个注解
//@EnableEurekaClient
//@EnableDiscoveryClient
public class ProductServiceApplication {

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

}

yml配置

server:
  port: 9001 #端口
spring:
  application:
    name: service-product #服务名称
#配置Eureka
eureka:
  client:
    service-url:
      defaultZone: http://localhost:9000/eureka/ #多个eurekaserver之间用,隔开
  instance:
    prefer-ip-address: true #使用ip地址注册
    instance-id: ${spring.cloud.client.ip-address}:${server.port} #向注册中心中注册服务id
    #lease-renewal-interval-in-seconds: 5 #向注册中心中注册服务id,默认30秒
    # lease-expiration-duration-in-seconds: 10 #续约到期的时间,默认90秒

访问测试

2-2

2-3

消费者环境搭建

消费者搭建见下一章节的 Ribbon(负载均衡)

posted @ 2021-07-19 15:38  爱码士很优秀  阅读(103)  评论(0编辑  收藏  举报