SpringCloud注册中心部署Eureka流程详解

目录
  • 1、Eureka服务
  • 2、服务提供者
  • 3、服务消费者
  • 4、服务调用测试

今天我们开始正式编码,如何创建spring boot项目这篇文章就不再讲述,如果想要了解可以阅读我之前的创建springboot项目。

首先我们先进行Spring cloud五大组件之一的注册中心,之前文章已经讲过注册中心的介绍,今天我们来部署Netflix的Eureka,进行单机部署以及高可用部署,并开发生产者以及消费者来进行测试eureka的注册消费。(ps:系列文章使用的Spring cloud版本为2021.0.4,对应的spring boot版本2.6.11)

1、Eureka服务

我们在主工程目录下面新创建一个Module,名字eureka-server,引入下面的依赖

<dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>

这个子工程只是作为eureka的注册中心,无需引入其他jar包。

创建配置文件application.yml

server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
  name: eureka-server

registerWithEureka:是否将自己注入到注册中心,因为本身就是Eureka服务,默认为true,所以这里设置为false;

fetchRegistry:是否从注册中心获取注册列表,后续进行集群部署的时候需要获取其他Eureka服务,这里是单点的所以设置为false;

因为eureka已经停止维护,所以目前没有找到相关的配置网页,感兴趣的同学可以自己点进去源码进行查询更多的配置以及配置的作用,因为eureka不是我们的重点所以这里就不一一进行解释了。

创建服务启动类EurekaServerApplication.class。

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}
}

@EnableEurekaServer 此注解是Eureka服务server端注解,如果是服务客户端client,需要注解为@EnableEurekaClient。

至此我们的一个Eureka服务就创建完成了,启动之后我们就获取了一个单节点的注册中心。

2、服务提供者

依然是spring boot项目的三板斧,创建项目引入依赖、创建配置文件、创建启动类。创建Module命名provider-eureka8001,引入依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

这里健康检测相关的依赖之前引入错误,这里需要注意使用的是starter-actuator

创建配置文件application.yml,填写下面内容

server:
  port: 8001
spring:
  application:
    name: provider
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

spring.application.name是项目的名称,后面eureka服务注册列表将会使用此值;

eureka.client.serviceUrl.defaultZone是Eureka注册中心的注册地址,如果Eureka服务部署在另外的地方,需要对应修改ip跟端口,这里本地部署直接localhost即可。

创建启动类ProviderEureka8001Application.class

@SpringBootApplication
@EnableEurekaClient
public class ProviderEureka8001Application {
    public static void main(String[] args) {
        SpringApplication.run(ProviderEureka8001Application.class,args);
    }
}

这里作为服务客户端使用@EnableEurekaClient

在provider项目创建接口类ProviderController.class,作为服务提供接口

@RestController
@RequestMapping("/provider")
public class ProviderController {
    @Value("${server.port}")
    private String port;
    @GetMapping("/getPort")
    public String getPort(){
        return "访问服务的端口为:" + port;
    }
}

3、服务消费者

创建服务消费者consumer-eureka8002,引入maven依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
        <version>2.6.11</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

创建配置文件application.yml

server:
  port: 8002
spring:
  application:
    name: comsumer
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

创建启动文件ConsumerEureka8002Application.class

@SpringBootApplication
@EnableEurekaClient
public class ConsumerEureka8002Application {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerEureka8002Application.class,args);
    }
}

4、服务调用测试

启动上面三个服务,访问eureka管理页面,默认为http://localhost:8761

可以看到,我们的两个服务provider以及consumer已经全部注册成功,测试调用我们配置Ribbon作为调用负载均衡,来进行测试服务是否可以调用。

在consumer项目配置Ribbon的负载均衡注入RibbonConfig

@Configuration
public class RibbonConfig {
    @Bean
    @LoadBalanced
    public RestTemplate loadBalancedRestTemplate(){
        return new RestTemplate();
    }
}

在consumer项目创建消费的ConsumerController,这里调用的方式为http:// + 服务提供者注册名称(spring.application.name),这里是提供者的名字provider,加上服务的path。

@RestController
@RequestMapping("/consumer")
public class ConsumerController {
    @Autowired
    private RestTemplate loadBalancedRestTemplate;
    @GetMapping("/getProviderPort")
    public String getProviderPort(){
        return loadBalancedRestTemplate.getForObject("http://provider/provider/getPort",String.class);
    }
}

重启我们的消费者项目,在网页里面输入请求地址http://localhost:8002/consumer/getProviderPort,可以看到访问成功且返回的是provider的端口号

到此我们使用eureka作为服务注册中心并尝试编写服务生产消费的学习就结束了,后续Eureka集群部署方式也比较简单,就是另外创建一个EurekaServer服务,配置文件、启动类、依赖引入都与之前的Eureka服务一样,这里需要修改两个Eureka服务的配置文件,将各自的服务都注入到对方的列表中去。

server:
  port: 8761
eureka:
  instance:
    hostname: eureka-server1
  client:
    registerWithEureka: false    #我是服务端,不需要将自己注册
    fetchRegistry: false    #我是服务端,不需要进行服务发现,无需获取服务注册列表
    serviceUrl:
      defaultZone: http://eureka-server2的ip:8762/eureka #将另外一个eurekaserver2的服务进行注册

server:
  port: 8762
eureka:
  instance:
    hostname: eureka-server2
  client:
    registerWithEureka: false    #我是服务端,不需要将自己注册
    fetchRegistry: false    #我是服务端,不需要进行服务发现,无需获取服务注册列表
    serviceUrl:
      defaultZone: http://eureka-server1的ip:8762/eureka #将另外一个eurekaserver1的服务进行注册

Eureka默认会开启自我保护机制,自我保护机制是Eureka为了防止网络波动引起的服务心跳丢失问题,坚持“宁可信其有”的原则,在默认90s内没有接收到客户端的心跳依然不将其移除,取消保护机制可在Eureka Server进行下面配置:

eureka.server.enable-self-preservation=false #关闭自我保护

eureka.server.eviction-interval-timer-in-ms=3000 #超时3s自动清除

保持开启,进行自我设置保护机制可在Eureka Server使用下面配置:

eureka.instance.lease-expiration-duration-in-seconds=10 #用来修改eureka server默认接受心跳的最大时间 默认是90s

eureka.instance.lease-renewal-interval-in-seconds=5 #指定客户端多久向eureka server发送一次心跳 默认是30s

到此这篇关于SpringCloud注册中心部署Eureka流程详解的文章就介绍到这了,更多相关SpringCloud Eureka内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBean和Controller实现动态注册与注销过程详细讲解

    目录 说明 注册和注销工具类 编写测试用例 测试结果 注册Service 注册controller 注销Controller 部分场景下可能需要下载远程jar包,然后注册jar包中的Bean和Controller 说明 这里的Bean 一般特指 Service层的服务类,Controller本质上也是Bean 注册和注销工具类 这里用了一些 hutool的工具类,hutools是一个不错的基础工具集. package cn.guzt.utils; import cn.hutool.extra.s

  • Spring Bean注册与注入实现方法详解

    目录 1. 逻辑上的 Bean 注册 2. XML 注册 Bean 到自建的库中 2.1 工厂方法 2.2 使用工厂方法和实例化工厂注册 Bean 3. XML 配合注解进行 Bean 注册 4. 使用注解注册 Bean 4.1 注解方式注册的必要条件 4.2 用到的注解 4.3 @Component注解注入 4.4 使用 @Bean 注解注册 5. 通过注解注入 Bean 6. 注入时的一个坑点 7. 获取 库中的对象 上接[Spring]spring核心思想——IOC和DI 上篇文章结尾简单

  • SpringBoot使用Spring Security实现登录注销功能

    1.首先看下我的项目结构 我们逐个讲解 /** * 用户登录配置类 * @author Administrator * */ public class AdminUserDateils implements UserDetails { private static final long serialVersionUID = -1546619839676530441L; private transient YCAdmin yCAdmin; public AdminUserDateils() { }

  • SpringCloud注册中心部署Eureka流程详解

    目录 1.Eureka服务 2.服务提供者 3.服务消费者 4.服务调用测试 今天我们开始正式编码,如何创建spring boot项目这篇文章就不再讲述,如果想要了解可以阅读我之前的创建springboot项目. 首先我们先进行Spring cloud五大组件之一的注册中心,之前文章已经讲过注册中心的介绍,今天我们来部署Netflix的Eureka,进行单机部署以及高可用部署,并开发生产者以及消费者来进行测试eureka的注册消费.(ps:系列文章使用的Spring cloud版本为2021.0

  • SpringCloud通过Nacos实现注册中心与远程服务调用详解流程

    目录 1. 基于Nacos实现服务注册与发现 1.1 pom依赖 1.2 yaml配置 1.3 添加启动注解 1.4 启动服务查看控制台 2.基于Nacos实现远程服务调用 2.1 客户端创建RestTemplate Bean 2.2 客户端调用代码 2.3 服务端暴露接口 2.4 服务调用测试 本文主要记录基于Nacos实现服务注册中心和远程服务调用 1. 基于Nacos实现服务注册与发现 基于pring-boot-starter-parent 2.6.8,pring-cloud-depend

  • springcloud微服务之Eureka配置详解

    Eureka注册中心/服务发现框架 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的.SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能. Eureka包含两个组件:Eureka Server和Eureka Client. Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Serve

  • SpringBoot实现服务接入nacos注册中心流程详解

    目录 概述 接入nacos注册中心 springboot服务pom文件 application.properties配置 源码分析 小结 源码流程图 概述 某些场景下只需要把springboot微服务化而不想引入springcloud如何实现的呢? 下面我们介绍nacos注册中心方案. 接入nacos注册中心 springboot服务pom文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h

  • SpringBoot集成Nacos实现注册中心与配置中心流程详解

    目录 SpringBoot整合Nacos 引入Maven依赖 增加配置 示例代码 SpringBoot整合Nacos 引入Maven依赖 首先,我们还是要引入 Maven 依赖 <!--注册中心的依赖--> <dependency> <groupId>com.alibaba.boot</groupId> <artifactId>nacos-discovery-spring-boot-starter</artifactId> <v

  • Spring Cloud Eureka 注册与发现操作步骤详解

    在搭建Spring Cloud Eureka环境前先要了解整个架构的组成,常用的基础模式如下图: 服务提供者:将springboot服务编写好以后,通过配置注册中心地址方式注册,提供给消费者使用. 注册中心:服务的中间桥梁,服务提供者将服务注册.服务消费者可以通过注册信息调用需要使用的服务. 服务消费者:通过规定的调用方式,读取注册中心的注册信息,调用相应的服务. 根据后续的服务复杂度进化以后,可以看到服务提供者也可以是服务消费者,服务消费者也可以是服务提供者.根据不同的业务情况是可以互相调用的

  • SpringCloud项目的log4j2漏洞解决方案详解流程

    步骤如下: <properties> <log4j2.version>2.15.0</log4j2.version> </properties> 下面为上边对应版本号的具体依赖 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.15.

  • SpringCloud服务的发现与调用详解

    目录 前言 一.服务提供者 二.服务消费者 总结 相关推荐 上一章:Eureka注册中心 前言 上一章中,我们介绍了Eureka注册中心及集群的搭建,这一节将介绍服务的发现和调用.注意,这个时候我们只有注册中心,并没有引入其他的组件,所以需要使用SpringCloud原生态的服务发现和调用的方式实现,循序渐进的带你走入微服务的世界. 上篇文章我们已经创建好了注册中心,这次我们需要创建一个服务提供者(provider)和一个服务消费者(consumer)两个项目. 一.服务提供者 新建Maven项

  • 微服务架构之服务注册与发现实践示例详解

    目录 1 服务注册中心 4种注册中心技术对比 2 Spring Cloud 框架下实现 2.1 Spring Cloud Eureka 2.1.1 创建注册中心 2.1.2 创建客户端 2.2 Spring Cloud Consul 2.2.1 Consul 的优势 2.2.2 Consul的特性 2.2.3 安装Consul注册中心 2.2.4 创建服务提供者 3 总结 微服务系列前篇 详解微服务架构及其演进史 微服务全景架构全面瓦解 微服务架构拆分策略详解 微服务架构之服务注册与发现功能详解

  • SpringCloud 中使用 Ribbon的方法详解

    在前两章已经给大家讲解了Ribbon负载均衡的规则 以及 如何搭建Ribbon并调用服务,那么在这一章呢 将会给大家说一说如何在SpringCloud中去使用Ribbon.在搭建之前 我们需要做一些准备工作. 1. 搭建Eureka服务器:springCloud-ribbon-server(项目名称) 2. 服务提供者:springCloud-ribbon-police(项目名称) 3. 服务调用者:springCloud-ribbon-person(项目名称) 搭建Eureka服务器 配置 p

随机推荐

其他