概述
eureka是springcloud的注册中心。
 是一款基于rest的服务治理框架,用于实现微服务架构中的服务发现和负载均衡。
 在eureka体系中,有两种角色: 服务提供者和服务消费者。
 服务提供者将自己注册到eureka服务器,服务消费者从eureka服务器中获取可用的服务列表,并根据负载均衡算法选择其中一个来调用。
特点
-  高可用性:eureka服务器采用了分布式架构,可以通过集群搭建来实现高可用性,同时也支持自我保护机制,即当eureka服务器在一段时间内无法与客户端通信时,不会立即清理服务注册表中的信息,而是将其保护起来,以防止因网络问题导致的误删。 
-  易于扩展:eureka支持通过集群方式进行扩展,只需要增加新的eureka服务器节点即可。 
-  支持多种语言和框架:eureka是基于rest实现的,因此可以支持多种语言和框架,只需要遵循它的api规范即可。 
-  灵活的配置:eureka提供了大量可配置项,如心跳间隔、注册信息缓存时间等,可以根据实际情况进行配置。 
-  易于使用:eureka提供了java客户端库,可以方便地进行服务注册和发现,并且与spring cloud等框架集成良好。 
结构和作用

-  注册服务信息 
 服务提供者的服务实例启动后,将自己的信息注册到eureka-server(eureka服务端)
 eureka-server保存服务名称到服务实例地址列表的映射关系
-  服务发现/服务拉取 
 服务消费者根据服务名称,拉去实例地址列表
-  负载均衡 
 服务消费者从实例列表中利用负载均衡算法选中一个实例地址
-  远程调用 
 服务消费者向实例地址发起远程调用
-  心跳续约 
- 服务提供者实例会每隔一段时间(默认30秒)向eureka-server发起请求,报告自己状态,称为心跳
- 当超过一定时间没有发送心跳时,eureka-server会认为微服务实例故障,将该实例从服务列表中剔除
- 服务消费者拉取服务时,就能将故障实例排除了
注意:一个微服务,既可以是服务提供者,又可以是服务消费者,因此eureka将服务注册、服务发现等功能统一封装到了eureka-client端
实现eureka
- 创建eureka-server服务
 新建模块,并在spring initialize中选择eureka server的依赖
 可以看到在新建模块的依赖中加入了
		<dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-netflix-eureka-server</artifactid>
        </dependency>
-  在eureka的启动类上加上@enableeurekaserver注解 
 开启eureka的注册中心功能
-  编写配置文件 
 编写一个application.yml文件,内容如下:
server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultzone: http://127.0.0.1:10086/eureka
-  启动服务并访问 http://127.0.0.1:10086
  
 如上页面表示成功
-  服务注册 
 在对应服务的pom.xml中引入eureka-client依赖
<dependency>
    <groupid>org.springframework.cloud</groupid>
    <artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>
</dependency>
- 修改服务的配置文件
 添加服务名称和eureka地址
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultzone: http://127.0.0.1:10086/eureka
-  启动多个服务实例 
 复制配置,并且为服务修改名称
  
 在配置中需要修改配置中的端口号,就需要使用覆盖配置
 勾选允许多个实例
  
 启动多个服务实例后,可在该服务的空间中看到服务空间中数量增多,并且占用2个端口号
  
-  服务发现 
 服务发现、服务注册统一封装在eureka-client依赖中,所以同样注入该依赖即可
 同样需要修改配置文件,同样是服务名称和注册中心地址
spring:
  application:
    name: orderservice
eureka:
  client:
    service-url:
      defaultzone: http://127.0.0.1:10086/eureka
- 服务拉取和负载均衡
 从服务注册中心eureka-server中拉去服务的实力列表并实现负载均衡
 需要在服务消费者的启动类上的resttemplate这个bean添加@loadbalanced注解
 然后在对应服务中将resttemplate的url中的ip:port改为服务名即可
 spring会自动帮助我们从eureka-server端,根据userservice这个服务名称,获取实例列表,而后完成负载均衡。
 示例:
 将http://localhost:8081/user/改为http://userservice/user/
 
             我要评论
我要评论 
                                             
                                             
                                            
发表评论