Eureka的搭建与总结

简介

Eureka是基于REST(Representational State Transfer,代表性状态传输)的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。Eureka包含两个组件:Eureka Server 和 Eureka Client。

一、服务器的搭建配置以及测试

1、Eureka服务器端的搭建以及配置和测试

1.1 pom.xml文件的依赖
  • 可在SpringBoot起步依赖中添加
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
1.2 application.yml文件基本配置
spring:
  application:
    name: eureka-server   # 指定Eureka服务器名称
    
server:
  port: 2001   # 指定服务端口
  
eureka:
  server:
    enable-self-preservation: false    # 是否开启保护模式
  instance:
    hostname: eureka1  # 指定主机名称 Eureka集群服务器之间,通过**hostname**来区分
  client:
  	 # 是否开启Eureka服务器之间的相互调用,如果是单台服务器则不需要自己调用自己
    register-with-eureka: false   
     # 是否开启Eureka服务器之间的相互拉取,如果是单台服务器则不需要自己拉取自己
    fetch-registry: false
   instance:
    # 最后一次心跳后,间隔多久认定微服务不可用,默认90
    lease-expiration-duration-in-seconds: 90 
1.3 主程序配置
  • 在主程序上添加 @EnableEurekaServer注解,表示该程序为Eureka服务器
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Sp05EurekaApplication {

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

}
1.4 修改 hosts 文件,添加 eureka 域名映射

C:\Windows\System32\drivers\etc\hosts

127.0.0.1        eureka1
1.5 启动并测试
  • http://eureka1:2001
    在这里插入图片描述

2、Eureka客户端

2.1 pom.xml文件的依赖
  • 可在SpringBoot起步依赖中添加
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2.2 application.yml文件的配置
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka # Eureka服务器的注册地址
  • eureka.instance.lease-renewal-interval-in-seconds
    心跳间隔时间,默认30秒,建议不要更改
  • defaultZone,默认位置,可以修改为具体地理位置,比如:beiJing, shangHai, shenZhen 等,表示 eureka 服务器的部署位置, 需要云服务器提供
  • eureka.client.registry-fetch-interval-seconds
    拉取注册信息间隔,默认30秒,建议不要更改
2.3 主程序
  • 在主程序上添加@EnableDiscoveryClient注解,表示该程序为Eureka客户端。在新版本中可以不加。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableDiscoveryClient
@SpringBootApplication
public class ProviderApplication {
	public static void main(String[] args) {
		SpringApplication.run(Sp04OrderserviceApplication.class, args);
	}
}
2.4 启动,并访问 http://eureka1:2001查看注册信息

在这里插入图片描述

3、Eureka 集群的搭建(高可用)

3.1 在hosts文件中新增一行配置

127.0.0.1 eureka2

127.0.0.1        eureka1
127.0.0.1        eureka2
3.2 在application.yml当前目录中添加两个 profile配置文件
application-eureka1.yml
eureka:
  instance:
    hostname: eureka1
  client:
    register-with-eureka: true  # profile的配置会覆盖公用配置
    fetch-registry: true        # profile的配置会覆盖公用配置
    service-url: 
      defaultZone: http://eureka2:2002/eureka  #eureka1启动时向eureka2册
application-eureka2.yml
eureka:
  instance:
    hostname: eureka2
  client:
    register-with-eureka: true  # profile的配置会覆盖公用配置
    fetch-registry: true        # profile的配置会覆盖公用配置
    service-url: 
      defaultZone: http://eureka1:2001/eureka  #eureka1启动时向eureka2册
3.3 创建多份启动项
  • 3.3.1 在 Boot Dashboard 中选中Eureka服务项目,右击选中 Open Config 选项
    在这里插入图片描述
  • 3.3.2 点击Arguments,添加--spring.profiles.active=eureka1 --server.port=2001启动参数
    在这里插入图片描述
  • 3.3.3 复制当前启动项,添加--spring.profiles.active=eureka2 --server.port=2002启动参数
    在这里插入图片描述
    在这里插入图片描述
  • 如果是打包后在cmd中运行,可以使用该命令
java -jar xxx.jar --spring.profiles.active=eureka1 --server.port=2001
如果是创建多个客户端启动项,与上面操作相同,不需要配置 profile 文件,只需把启动参数改为--server.port=xxxx即可

只要遵循application-{profile}.yml 的命名规范就可以省略 application-.yml
所以在命令中写为--spring.profiles.active=eureka1

  • 呈现结果
  • 在这里插入图片描述
3.4 访问 Eureka 服务器
  • http://eureka1:2001

在这里插入图片描述

  • http://eureka2:2002

在这里插入图片描述

可以看到两台服务器互为对方的副本,并且有两台 Eureka 服务器成功注册
3.5 修改**服务提供者(provider)**的yml配置文件,同时向两台服务器注册
eureka:
  client:
    service-url:
      defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka

在这里插入图片描述

至此 Eureka 服务器集群搭建完成。如果可以看到两台Eureka服务器互为副本,并且客户端服务都可以成功注册,则集群搭建成功。

需要注意的问题

同组eureka server的eureka.instance.appname或者spring.application.name要取相同的名字,hostname不能相同,hostname如果相同就会冲突,appname不同就不会形成一个集群

Eureka服务器的搭建以及配置和测试成功

二、Eureka 原理

每启动一个 Eureka 客户端,都会把自身信息注册到 Eureka 服务器上,然后把服务器中的注册地址表拉取到本地缓存。

二、Eureka 总结

1、CAP原则:基于AP,强调可用性,具有容错机制

2、服务器集群结构:对等结构

3、运行参数

  • 1.1 注册
    一次次反复尝试注册,直到注册成功
  • 1.2 拉取
    客户端每30秒从服务器拉取一次注册表
  • 1.3 心跳机制
    客户端每30秒发送一次心跳,eureka服务器连续3次收不到心跳,就会删除该服务
  • 1.4 自我保护模式
    15分钟内85%服务器心跳异常,启动保护模式,保护所有的服务注册信息,不被删除,心跳稳定后,退出保护模式,恢复正常,开发期间为了方便测试,可以关闭保护模式

4、实现高可用

在客户端注册时,避免只向一台服务器进行注册,防止因当前服务器宕机而造成的服务无法注册。

与zookeeper的区别:

1、CAP原则注重点不同:Eureka强调可用性(AP),而zookeeper强调一致性(CP)。
2、服务器集群结构不同:Eureka是对等结构,zookeeper为主从结构。

CAP原则

CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值