Eureka 服务管理
Eureka 是 Netflix 开发的服务发现框架,本身是一个基于 REST 的服务,主要用于定位运行在 AWS 域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。
SpringCloud 将它集成在其子项目 spring-cloud-netflix 中,以实现 SpringCloud 的服务发现功能
Eureka 服务注册与发现
Eureka 采用了 CS 的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册的中心。而系统中的其他微服务,使用 Eureka 的客户端链接到
Eureka server 并维持心跳连接。使开发人员可以通过 Eureka serve 来监控系统中各个微服务的运行状态.
在服务注册与发现中,有一个注册中心。当服务启动的时候,会把当前自己的服务器的信息,比如 服务地址、通讯地址等以别名方式注册到注册中心。另一方
(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地 RPC 调用远程 RPC。远程调用框架的核心设计思想:在于注册中心
,因为使用注册中心管理每个服务于服务之间的一个依赖关系(服务治理概念)。在任何 RPC 远程框架中,都会有一个注册中心(存放服务地址相关信息)
Eureka 三种角色
- Eureka Server:提供服务注册和发现等
- Service Provider:服务提供者:自身注册到 Eureka Server,供消费端调用
- Service Consumer:服务消费方:从 Eureka 获取注册服务列表,从而能够消费服务
ureka Server 搭建
在父工程中创建 module ‘server7001’ 引入 spring-cloud ureka 依赖
<dependencies>
<!-- eureka server 依赖包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
配置文件
server:
port: 7001
eureka:
instance:
# eureka 服务端的实例名称
hostname: localhost
client:
# 表示是否将自己注册到 Eureka Server,默认为 true。register-with-eureka: false
# 表示是否从 Eureka Server 获取注册信息,默认为 true。fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
配置启动类
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication7001 {public static void main(String[] args) {SpringApplication.run(EurekaApplication7001.class, args);
}
}
启动服务 浏览器访问: localhost:7001
服务注册到 Eureka 服务中心
在需要注册的服务中
引入 pom 依赖
<!-- eureka-client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置文件
eureka:
client:
# 表示是否将自己注册到 Eureka Server,默认为 true。register-with-eureka: true
# 表示是否从 Eureka Server 获取注册信息,默认为 true。fetch-registry: true
service-url:
# 设置与 Eureka Server 交互的地址
defaultZone: http://localhost:7001/eureka
启动类
@SpringBootApplication
@EnableEurekaClient
public class PaymentMain8001 {public static void main(String[] args) {SpringApplication.run(PaymentMain8001.class, args);
}
}
测试 启动,然后去 Eureka 服务中心查看服务是否注册进来。
在 Eureka 服务中心 的 DS Replicas 中就会发现注册进来的服务
DS Replicas
Instances currently registered with Eureka
Application AMIs Availability Zones Status
CLOUD-PAYMENT-SERVICE n/a (1) (1) UP (1) - 192.168.2.61:cloud-payment-service:8001
eureka Server 集群搭建
在父工程中创建 module ‘server7002’ 引入 spring-cloud ureka 依赖
<dependencies>
<!-- eureka server 依赖包 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
单机模拟 eureka 集群搭建,同一个 ip 不同端口
修改 hosts 文件
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
修改配置文件
server7002 配置文件
server:
port: 7001
eureka:
instance:
# eureka 服务端的实例名称
hostname: eureka7001.com
client:
# 表示是否将自己注册到 Eureka Server,默认为 true。register-with-eureka: false
# 表示是否从 Eureka Server 获取注册信息,默认为 true。fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址
defaultZone: http://eureka7002.com:7002/eureka/
server7002 配置文件
server:
port: 7002
eureka:
instance:
# eureka 服务端的实例名称
hostname: eureka7002.com
client:
# 表示是否将自己注册到 Eureka Server,默认为 true。register-with-eureka: false
# 表示是否从 Eureka Server 获取注册信息,默认为 true。fetch-registry: false
service-url:
# 设置与 Eureka Server 交互的地址
defaultZone: http://eureka7001.com:7001/eureka/
启动类
server7001 无需修改
新建 server7002 启动类
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication7002 {public static void main(String[] args) {SpringApplication.run(EurekaApplication7002.class, args);
}
}
启动服务 浏览器访问: localhost:7001
启动服务 浏览器访问: localhost:7002
服务注册到 Eureka 集群服务中心
在需要注册的服务中。只需要修改 application.yaml 文件即可。还以上面的服务注册为例
eureka:
client:
# 表示是否将自己注册到 Eureka Server,默认为 true。register-with-eureka: true
# 表示是否从 Eureka Server 获取注册信息,默认为 true。fetch-registry: true
service-url:
# 设置与 Eureka Server 交互的地址
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/
测试 启动,然后去 Eureka server7001 和 server7002 两个 服务中心查看服务是否注册进来。
在 Eureka server7001 和 server7002 两个 服务中心 的 DS Replicas 中就会发现注册进来的服务
DS Replicas
Instances currently registered with Eureka
Application AMIs Availability Zones Status
CLOUD-PAYMENT-SERVICE n/a (1) (1) UP (1) - 192.168.2.61:cloud-payment-service:8001