1、概念
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。
Eureka包含两个组件:Eureka Server和Eureka Client。
Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
Eureka Client是一个java客户端,用于简化与Eureka Server的交互,客户端同时也就别一个内置的、使用轮询(round-robin)负载算法的负载均衡器。
在应用启动后,将会向Eureka Server发送心跳,默认周期为30秒,如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,Eureka Server将会从服务注册表中把这个服务节点移除(默认90秒)。
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。
2、搭建Eureka Server
1) IDEA创建eureka-server工程
具体操作参考 IDEA构建Spring Boot应用并集成到Spring Cloud
2) pom.xml引入依赖
3)启动类添加注解
4)配置java类,关闭crsf
5)配置application.yml文件
6)配置主机host
7)启动服务
IDEA启动
jar启动
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka1 此配置对应端口号8501
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka2 此配置对应端口号8502
java -jar eureka-server-0.0.1-SNAPSHOT.jar --spring.profiles.active=eureka3 此配置对应端口号8503
8)访问url
注册中心
http://localhost:8501
http://localhost:8502
http://localhost:8503
用户名:hsc 密码:123456
9)注意点
- yml配置文件里面如果是集群部署register-with-eureka: true ,fetch-registry: true,网上很多例子都说是配置为false,那是因为他们是只起了一个节点。集群部署时,要相互注册,并且配置为true
- 启动服务前一定要配置hosts文件里的域名映射。
- 本例子中引入了spring-boot-starter-security安全控件,需要创建配置java类,关闭crsf,客户端注册ereka以及访问监控页面时都需要输入用户名和密码
3、搭建Eureka Client
1) IDEA创建eureka-client工程
具体操作参考 IDEA构建Spring Boot应用并集成到Spring Cloud
2) pom.xml引入依赖
3)启动类添加注解
4)配置application.yml文件
5)创建controller映射url供外部访问
6)启动服务
参考上文 eureka-server。
7)访问url
http://localhost:8601/hello 模拟对外提供的即时服务
http://localhost:8601/timeout/hello 模拟提供超时服务,2秒才会返回数据
启动后,在注册中心监控页面查看注册状态
8)注意点
spring-boot-starter-web这个web基础依赖不能少,否则项目启动失败。网上很多教程都没有说明要引入这个。