当前位置:   article > 正文

微服务之Springcloud 从零基础到入门——eureka篇_springcloud入门教程

springcloud入门教程

微服务之Springcloud 从零基础到入门——Eureka篇

一. eureka简介

Eureka是基于REST(Representational State Transfer)服务,主要以AWS云服务为支撑,提供服务发现并实现负载均衡和故障转移。我们称此服务为Eureka服务。Eureka提供了Java客户端组件,Eureka Client,方便与服务端的交互。客户端内置了基于round-robin实现的简单负载均衡。在Netflix,为Eureka提供更为复杂的负载均衡方案进行封装,以实现高可用,它包括基于流量、资源利用率以及请求返回状态的加权负载均衡。

二. Eureka有关的三个角色

图示如下
在这里插入图片描述

  1. 服务注册中心
    Eureka 提供的服务端, 提供服务注册与发现的功能, 一般被称作eureka-server。主要作用就是将服务提供者提供的服务注册到服务中心,以供服务消费者去消费
  2. 服务提供者
    是提供服务的应用,现在主流的编写框架为springboot,本文也是基于springboot去构建。它将自己提供的服务注册到Eureka中, 以供其他应用发现
  3. 服务消费者
    主要指那些从服务注册中心调用服务的应用
三. Eureka Server 集群的搭建
  1. 创建springboot项目并导入相应的依赖,cloud版本号为Hoxton.SR1
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 修改application.yml文件,该处的两项域名非真实域名,首先在C:\Windows\System32\drivers\etc\host文件中进行配置:
    127.0.0.1 eureka7001.com
    127.0.0.1 eureka7002.com
server:
  port: 7001    # 端口号,另一个注册中心为7002
eureka:
  instance:
    hostname: eureka7001.com  # 服务器名称
  client:
    register-with-eureka: false  # 是否注册到 eureka服务器
    fetch-registry: false        # 是否从注册中心拉取服务
    service-url:
      # 另一个注册中心该处写 http://eureka7001.com:7001/eureka/
      defaultZone: http://eureka7002.com:7002/eureka/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 主启动类添加注解,只需要在springboot的主启动类上添加相应注解即可,该注解为@EnableEurekaServer
@SpringBootApplication
@EnableEurekaServer
public class Eureka7001Application {
    public static void main(String[] args) {
        SpringApplication.run(Eureka7001Application.class,args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 测试,在浏览器中输入http://eureka7001.com:7001,若出现eureka的界面则说明注册中心搭建成功

在这里插入图片描述

四. 服务提供者的创建
  1. 仍然创建springboot项目并导入相应的依赖,和服务端的依赖区别在于本次导入的是客户端的依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. 修改application.yml配置文件
server:
  port: 8501
spring:
  application:
    name: cloud-payment-service     # 应用名,默认注册的服务名就是应用名
eureka:
  client:
    register-with-eureka: true  # 是否注册到 eureka服务器
    fetch-registry: true        # 是否从注册中心拉取服务
    service-url:                # eureka 的注册中心地址
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  1. 主启动类添加注解@EnableDiscoveryClient 即可,相应的服务就注册到了eureka服务注册中心。
@SpringBootApplication
@EnableDiscoveryClient    
public class Payment8501Application {
    public static void main(String[] args) {
        SpringApplication.run(Payment8501Application.class,args);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 测试,在浏览器中输入http://eureka7001.com:7001,若发现服务已经注册上去则说明服务提供者应用编写成功。

注册成功
该处可以看到CLOUD-PAYMENT-SERVICE已经注册成功。其中注册中心的服务信息在服务提供者的yml文件中可以进行配置,本文在此不再赘述。

五. Eureka的自我保护机制

在服务提供者注册上去后可以看到一行红色,这部分的意思是eureka默认开启自我保护机制。

  1. 为什么要有自我保护机制
    默认情况下,服务的提供者会一直给注册中心发送心跳来告诉服务中心自己仍然存活。如果Eureka Server在一定时间内没有接收到该微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是若有网络分区故障发生时,微服务与Eureka Server之间是无法正常通信的,此时服务并没有挂掉,本不应该注销该服务。“自我保护模式”便是来解决这个问题----当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。自我保护模式是一种对网络异常的安全保护措施。使用自我保护模式,而已让Eureka集群更加的健壮、稳定。
  2. 关闭自我保护机制
    可以在Eureka Server端的yml中进行配置
eureka:
	server:
    	enable-self-preservation: false  #禁用自我保护
    	eviction-interval-timer-in-ms: 5000   #清理无效节点的时间间隔
  • 1
  • 2
  • 3
  • 4
六. 下一篇介绍

本文只讲述了服务注册中心以及服务提供者,对于服务消费者将在后续的章节进行介绍。 下一篇关于Ribbon
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/564865
推荐阅读
相关标签
  

闽ICP备14008679号