赞
踩
Euraka 用于服务注册和发现,是Netflix中的一个开源框架。它和 zookeeper、Consul一样,都是用于服务注册管理和服务依赖管理。
Euraka 遵循着CAP理论中的A(可用性) P(分区容错性)。
Eureka中分为eureka server和eureka client。其中eureka server是作为服务的注册与发现中心。eureka client既可以作为服务的生产者,又可以作为服务的消费者。
注册中心能解决什么样的问题:
常见注册中心对比
eureka 服务消费实现方式:
discoveryClient:通过元数据获取服务信息
loadBalancerClient:Ribbon 的负载均衡器
@LoadBalanced:通过注解开启 Ribbon 的负载均衡器
Eureka自我保护机制
通过配置 eureka.server.enable-self-preservation
来true
打开false
禁用自我保护机制,默认打开状态,建议生产环境打开此配置。
pom文件引入Eureka server 端依赖(SpringCloud的依赖版本号管理通常放到父项目中)
- <!--eureka-server-->
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
- </dependency>
- <!--提供SpringCloud的依赖版本号管理-->
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-dependencies</artifactId>
- <version>${spring.cloud-version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
启动类加入@EnableEurekaServer注解,表示此项目作为Eureka server 端服务
- @SpringBootApplication
- @EnableEurekaServer
- public class EurekaServer1Application {
-
- public static void main(String[] args) {
- SpringApplication.run(EurekaServer1Application.class, args);
- }
-
- }
yaml文件配置:
- server:
- port: 8761 #端口号
-
- eureka:
- server:
- enable-self-preservation: false # true 开启自我保护,false 关闭自我保护,默认开启
-
- instance:
- hostname: ludb-1 #主机名(类似于我的电脑里的那个名字吧),不配置的时候将根据应用系统的主机获取
-
- client:
- registerWithEureka: false #是否将自己注册到注册中心,默认True
- fetchRegistry: false #是否从注册中心获取注册信息,默认为True
-
- serviceUrl:
- defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #注册中心对外暴露的注册地址
-
- spring:
- application:
- name: ludb-server-1 #应用名称
注意 :
新增另一个eureka server 项目,与之前单台注册中心仅配置不同
eureka server (V1)
server: port: 8761 #端口号 eureka: instance: hostname: ludb-1 #主机名(类似于我的电脑里的那个名字吧),不配置的时候将根据应用系统的主机获取 prefer-ip-address: true #是否使用IP地址注册(用于eureka展示) instance-id: ${spring.cloud.client.ip-address}:${server.port} #当前客户端IP:端口 client: # 设置服务注册中心地址,指向另一个注册中心,以实现高可用 serviceUrl: defaultZone: http://localhost:8762/eureka/ # registerWithEureka: false #是否将自己注册到注册中心,默认True # fetchRegistry: false #是否从注册中心获取注册信息,默认为True # serviceUrl: # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #注册中心对外暴露的注册地址 spring: application: name: ludb-server #应用名称
eureka server (V2)
- server:
- port: 8762 #端口号
-
- eureka:
- instance:
- hostname: ludb-2 #主机名(类似于我的电脑里的那个名字吧),不配置的时候将根据应用系统的主机获取
- prefer-ip-address: true #是否使用IP地址注册(用于eureka展示)
- instance-id: ${spring.cloud.client.ip-address}:${server.port} #当前客户端IP:端口
- client:
- # 设置服务注册中心地址,指向另一个注册中心,以实现高可用
- serviceUrl:
- defaultZone: http://localhost:8761/eureka/
-
- # registerWithEureka: false #是否将自己注册到注册中心,默认True
- # fetchRegistry: false #是否从注册中心获取注册信息,默认为True
- # serviceUrl:
- # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #注册中心对外暴露的注册地址
- spring:
- application:
- name: ludb-server #应用名称
注意:
效果(加prefer-ip-address 和 instance-id之前):
效果(加prefer-ip-address 和 instance-id之后):
eureka client 项目构建
application.yaml
- server:
- port: 8081
-
- eureka:
- instance:
- prefer-ip-address: true #是否使用IP地址注册(用于eureka展示)
- instance-id: ${spring.cloud.client.ip-address}:${server.port} #当前客户端IP:端口
-
- client:
- # 设置服务注册中心地址【向注册中心集群注册(注册两台是为了防止第一台宕机还可以挂在第2台上)】
- service-url:
- defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/
-
- registry-fetch-interval-seconds: 10 #表示10秒拉取一次服务注册信息,默认30秒
- register-with-eureka: true #是否将自己注册到注册中心,默认true
-
- spring:
- application:
- name: ludb-client-1 #应用名称
pom.xml 引入client端的pom文件
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
- </dependency>
启动类
- @SpringBootApplication
- //如果配置文件配置了注册中心相关配置,则默认开启注册中心注解(@EnableEurekaClient)
- @EnableEurekaClient
- public class EurekaClient1Application {
-
- public static void main(String[] args) {
- SpringApplication.run(EurekaClient1Application.class, args);
- }
-
- }
注意:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。