SpringCloud:Eureka(一)


Eurea是Netflix提供的一款开源的提供服务注册与发现的产品。它提供了完整的Service Registry和Service Discovery实现,是Spring cloud体系中最重要最核心的组件之一

服务中心

服务中心即注册中心,管理各种服务功能包括服务的注册、发现、熔断、负载、降级等,比如dubbo admin后台的各种功能。在没有服务中心时各个系统之间的调用方式是直接调用,如图:
在这里插入图片描述
在有服务中心以后,任何应用之间都不能互相直接调用,需要先通过服务中心来调用:
在这里插入图片描述
应用A调用应用B,应用B再调用应用C:
在这里插入图片描述
有服务中心则需要分两步,A通过服务中心调用B,B通过服务中心调用C:
在这里插入图片描述
在这里插入图片描述
上述情况仅仅是两三个应用相互调用的情况下,如果应用多了的情况,互相调用的情况会变得及其复杂。一旦某个应用有改动会影响好几个应用重启,麻烦且易出错。使用服务中心不需要关注所调用的应用的服务IP地址有多少台服务器,每次调用直接去服务中心取服务即可。

Eureka

官方介绍

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers.

Eureka 是一个基于 REST 的服务,主要在 AWS 云中使用, 定位服务来进行中间层服务器的负载均衡和故障转移。

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

Eureka由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。Netflix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。

Eureka结构图
在这里插入图片描述

  • Eureka Server: 提供服务注册与发现
  • Service Provider: 服务提供方,注册自身到server使得consumer能够找到。
  • Service Consumer: 服务消费方,从Eureka Service获取服务列表用于消费。

Eureka Server实例

单节点

  1. 新建一个spring boot 项目cloud
  2. 在cloud中新建一个模块,选中项目右键->new->module->next在这里插入图片描述
    改名继续next
    在这里插入图片描述
    选中Eureka Server继续next直到结束。
    在这里插入图片描述
  3. 添加如下配置:
spring:
  application:
    name: spring-cloud-eureka

server:
  port: 8000

eureka:
  client:
    #表示是否将自己注册到Eureka Server,默认为true。
    register-with-eureka: false
    #表示是否从Eureka Server获取注册信息,默认为true。
    fetch-registry: false
    #设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;
    #多个地址可使用 , 分隔。
    service-url:
      defaultZone: http://localhost:${server.port}/eureka/

  1. 在启动类中加上@EnableEurekaServer,直接启动
  2. 启动成功后打开http://localhost:8000/,暂时没有服务注册在这里插入图片描述

集群

注册中心作为springcloud中及其关键的部分,如果是单节点一旦遇到故障那后果就是毁灭性的。服务注册中心作为最重要的基础部分,应当随时都能够提供服务。为了维持其可用性,集群是很好的解决方案。Eureka通过互相注册的方式来实现高可用的部署。只需要将Eureka Server配置为其他的ServiceUrl即可实现高可用部署。

双节点注册中心搭建

  1. 新建一个模块,步骤同上
  2. 新建配置文件application-node1.yml
spring:
  application:
    name: spring-cloud-eureka
  freemarker:
    prefer-file-system-access: false
server:
  port: 8001

eureka:
  client:
    serviceUrl:
      defaultZone: http://node2:8002/eureka/
  instance:
    hostname: node1

application-node2.yml:


spring:
  application:
    name: spring-cloud-eureka

server:
  port: 8002

eureka:
  client:
    serviceUrl:
      defaultZone: http://node1:8001/eureka/
  instance:
    hostname: node2
  1. 修改hosts文件 C:\Windows\System32\drivers\etc\
127.0.0.1  node1
127.0.0.1  node2
  1. 启动类增加@EnableEurekaServer注解
  2. 执行以下命令
mvn clean package  -pl 指定的模块名 -am
#分别以node1,node2启动服务
java -jar eureka-server-double-node-0.0.1-SNAPSHOT.jar --spring.profiles.active=node1
java -jar eureka-server-double-node-0.0.1-SNAPSHOT.jar --spring.profiles.active=node2

在这里插入图片描述
在这里插入图片描述

多节点注册中心搭建

实际项目中会需要多个注册中心节点来维持其可用性,原理都是一一致的将注册中心分别指向其他注册中心即可。
新建一个模块,三个注册中心application.yml配置文件如下


---
spring:
  application:
    name: spring-cloud-eureka
  profiles: node1
server:
  port: 8001
eureka:
  instance:
    hostname: node1
  client:
    serviceUrl:
      defaultZone: http://node2:8002/eureka/,http://node3:8003/eureka/
---
spring:
  application:
    name: spring-cloud-eureka
  profiles: node2
server:
  port: 8002
eureka:
  instance:
    hostname: node2
  client:
    serviceUrl:
      defaultZone: http://node1:8001/eureka/,http://node3:8003/eureka/
---
spring:
  application:
    name: spring-cloud-eureka
  profiles: node3
server:
  port: 8003
eureka:
  instance:
    hostname: node3
  client:
    serviceUrl:
      defaultZone: http://node1:8001/eureka/,http://node2:8002/eureka/

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值