Spring Cloud系列(二):Eureka Server应用

这篇具有很好参考价值的文章主要介绍了Spring Cloud系列(二):Eureka Server应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章

Spring Cloud系列(一):Spirng Cloud变化

Spring Cloud系列(二):Eureka Server应用

 

 

目录

前言

注册中心对比

        Nacos

        Zookeeper

        Consul

搭建服务

        准备

        搭建

                搭建父模块

                搭建Server模块

启动服务

测试

其他


前言

前面针对新版本的变化有了了解,接下来,对 Spring Cloud 规范下的各大组件做一个介绍和应用用,包括原理,首先就是微服务的核心——注册中心 Eureka。

Eureka 是 Spring Cloud 提供的默认的服务注册中心,其提供了服务注册与发现功能。

Eureka 包含 Eureka-Server 和 Eureka-Client 两部分, Eureka-Server 是服务注册中心,用于管理注册的所有服务;Eureka-Client 是客户端,用于服务提供者提供服务和服务消费者调用服务。

其工作流程大体如下:

Spring Cloud系列(二):Eureka Server应用,# SpringCloud,spring cloud,eureka,spring,eureka server

注册中心对比

除了 Spring Cloud 默认的注册中心 Eureka 外,当今主流的注册中心还有 Nacos、Zookeeper、Consul 等。

Nacos

Nacos 是一个阿里开源的动态服务发现、配置管理和服务管理平台,其不但提供了注册中心的功能,还提供了配置中心、简单的权限管理等功能,功能易用且强大。

Zookeeper

Zookeeper 是一个分布式服务框架,其采用存储+通知的方式,解决分布式中的各种问题,其功能包括:发布/订阅、分布式队列、集群管理、分布式独占锁/读写锁、集群Leader选举、分布式ID生成等等。这些功能主要是利用其 Znode 节点的特性和其节点监听的功能,其采用 ZAB 协议保持数据的一致性。

Consul

Consul 是由 HashiCorp 基于 Go 语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件, 采用 Raft 算法保证服务的一致性,且支持健康检查。

组件名 语言 CAP 主要功能
Eureka Java AP 注册中心
Nacos Java AP/CP 注册中心、配置中心
Zookeeper Java CP

注册中心、配置中心、分布式队列、分布式锁、

分布式ID、集群管理等

Consul Go CP 注册中心、配置中心

搭建服务

准备

名称 版本
Spring-Boot 2.7.8
Spring Cloud 2021.0.9
Spring Cloud Alibaba 2021.0.5.0
JDK 1.8

该系列的所有内容相关环境,都已以上为主。

搭建

当前项目分为两个模块,SpringCloudEurekaDemo2 和 SpringCloudServer

SpringCloudEurekaDemo2 是父模块,主要用于管理子模块、管理依赖等等。

SpringCloudServer 就是注册中心所在模块,用于微服务中所有的服务注册和管理。

搭建父模块
  • pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>SpringCloudServer</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.8</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example.eureka</groupId>
    <artifactId>SpringCloudEurekaDemo2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringCloudEurekaDemo2</name>
    <description>SpringCloudEurekaDemo2</description>
    <packaging>pom</packaging>
    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2021.0.9</spring-cloud.version>
        <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>
搭建Server模块
  • pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>SpringCloudEurekaDemo2</artifactId>
        <groupId>com.example.eureka</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>SpringCloudServer</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

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

</project>
  • 启动类 
@EnableEurekaServer
@SpringBootApplication
public class ServerBootStrap {

    public static void main(String[] args) {
        SpringApplication.run(ServerBootStrap.class);
    }
}

 说明: @EnableEurekaServer 表示当前服务是一个 Eureka 注册中心

  • application.yml
spring:
  application:
    name: cloud-server

---
server:
  port: 8081
spring:
  config:
    activate:
      on-profile: serverA
eureka:
  server:
    #注册中心多久检查一次失效的实例
    eviction-interval-timer-in-ms: 60
    #自我保护
    enable-self-preservation: true
  instance:
    hostname: SpringCloudServerA
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}:@project.version@
  client:
    service-url:
      defaultZone: http://SpringCloudServerB:8082/eureka
    register-with-eureka: true
    fetch-registry: true

---

server:
  port: 8082
spring:
  config:
    activate:
      on-profile: serverB
eureka:
  server:
    #注册中心多久检查一次失效的实例
    eviction-interval-timer-in-ms: 60
    #自我保护
    enable-self-preservation: true
  instance:
    hostname: SpringCloudServerB
    prefer-ip-address: true
    instance-id: ${spring.cloud.client.ip-address}:${server.port}:@project.version@
  client:
    service-url:
      defaultZone: http://SpringCloudServerA:8081/eureka
    register-with-eureka: true
    fetch-registry: true

说明:1.spring.config.activate.on-profile:表示当前环境名,这里采用不同的端口构建伪集群

           2.eureka.server.eviction-interval-timer-in-ms:表示当前注册中心间隔多久检查实例状态,单位秒,默认 60秒

           3.eureka.server.enable-self-preservation:表示是否开启自我保护(避免网络故障导致服务不可用),默认 true

           4.eureka.instance.prefer-ip-address:表示猜测显示主机名时是IP优先,默认 false

           5.eureka.instance.instance-id:表示注册在注册中心Eureka上的唯一实例ID,默认 主机名:应用名:端口

           6.eureka.client.service-url.defaultZone:默认注册地址,默认值 http://localhost:8761/eureka/

           7.eureka.client.register-with-eureka:表示是否注册自己为服务,默认 true

           8.eureka.client.fetch-registry:表示是否从注册中心Eureka拉取服务,默认 true

注意:1.这里 SpringCloudServerA 和 SpringCloudServerB 能生效的前提是已在C:\Windows\System32\drivers\etc\hosts 中配置映射

127.0.0.1 SpringCloudServerA
127.0.0.1 SpringCloudServerB

启动服务

以上配置完后,继续。

1. 分别在 IDEA 中增加配置文件参数 serverA 和 serverB(不是IDEA的自己加vm参数)启动服务

Spring Cloud系列(二):Eureka Server应用,# SpringCloud,spring cloud,eureka,spring,eureka server

2. 注册中心有多个节点的,节点没全部启动完,报错是正常的(相互注册情况下),全部启动后再观察日志

测试

服务启动好了,Eureka 自带 DashBoard 可查看相应的信息。

1. 浏览器访问 http://localhost:8081/ 或者 http://localhost:8082/

Spring Cloud系列(二):Eureka Server应用,# SpringCloud,spring cloud,eureka,spring,eureka server

其他

1. Eureka 全部节点都是平等的,不存在主从区分

2. Eureka 自我保护机制是非常有必要的,如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中间出现了网络故障,Eureka Server自动进入我保护机制。进入自我保护的注册中心不会主动剔除服务,保证当前注册中心仍然可用,并且能进行正常的注册和调用,但不会主动同步服务列表直到网络正常。文章来源地址https://www.toymoban.com/news/detail-850468.html

到了这里,关于Spring Cloud系列(二):Eureka Server应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Cloud应用- Eureka原理、搭建

    初期对Spring Cloud的学习以应用搭建为主,所以内容不会太枯燥。 一直以来,自以为Spring全家桶的学习中,Spring framework是基础中的基础,部分内容也还是必须要读源码去理解底层原理,SpringMVC、SpringBoot,甚至Mybatis等等,都是如此。但是对于Spring Cloud来说,就从应用入手,以系

    2024年02月06日
    浏览(35)
  • 【Spring Cloud系列】-Eureka服务端高可用详解

    上一篇《Eureka使用详解》一文中我们详细介绍了什么是Spring Cloud微服务。Spring Cloud中Service注册中心及其Client如何实现并如何完成服务注册的。这一篇我们将介绍Eureka注册中心的高可用如何实现及其使用中的注意事项。 一. 序言 微服务就是开发一组小型服务的方式来完成对系

    2024年02月09日
    浏览(43)
  • 导入SpringCloud-Eureka依赖的问题Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eure

    今天使用SpringCloud时遇到导入SpringCloud-Eureka依赖的问题 Cannot resolve org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:unknown 网上搜了一下,回答多的五花八门,但是不够简单粗暴,这里介绍一个简单的方法,只需要在项目的pom文件中做些设置即可 把大象放进冰箱里需要几步

    2024年02月14日
    浏览(30)
  • 微服务 - Spring Cloud - Eureka Server单机和集群搭建、单机服务注册和集群服务注册

    Eureka 服务管理 Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。 SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能 Eureka服务注册与发现 Eu

    2024年02月13日
    浏览(31)
  • 微服务系列-基于Spring Cloud Eureka进行服务的注册与消费

    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。 使用 RestTemplate 的 Spring Boot 微服务通信示例 使用 WebClient 的 Spring Boot 微服务通信示例 使用 Spring Cloud Open Feign 的 Spring Boot 微服务通信示例 在本教程中,我们将学习如何在Spring boot微服务项

    2024年02月05日
    浏览(83)
  • Spring Cloud(Finchley版本)系列教程(一) 服务注册与发现(eureka)

    Spring Cloud(Finchley版本)系列教程(一) 服务注册与发现(eureka) 为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 如有错误恳请大家批评指正,与大家共同学习、一起成长,万分感谢。 一、构建环境 Spring Cloud 的构建工具可以使用 Maven 或 Gradle ,但 Ma

    2024年02月09日
    浏览(37)
  • 特别详细的Spring Cloud 系列教程1:服务注册中心Eureka的启动

    Eureka已经被Spring Cloud继承在其子项目spring-cloud-netflix中,搭建Eureka Server的方式还是非常简单的。只需要通过一个独立的maven工程即可搭建Eureka Server。  我们引入spring cloud的依赖和eureka的依赖。 注意spring cloud和springboot的版本要对应,不然容易出现各种奇怪的错误。 不知道spr

    2024年04月08日
    浏览(52)
  • Spring Cloud - Eureka原理、注册、搭建、应用(全过程详解)

    目录 一、Eureka 注册原理 1.1、为什么要使用 Eureka 1.2、Eureka 的工作流程及原理 1.3、eureka 的作用 二、具体实现 2.1、搭建注册中心 2.2、服务注册和部署 2.2.1、user-service 服务注册 2.2.2、服务部署 2.2.3、order-service 服务注册 2.2.4、验证服务 2.3、服务发现 2.3.1、在order-service完成服务

    2024年02月11日
    浏览(28)
  • SpringCloud 微服务系列——Spring Cloud Alibaba 微服务工具集

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:SpringCloud 微服务学习专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:SpringCloud 微服

    2024年02月04日
    浏览(36)
  • 【Spring Cloud系列】Hystrix应用详解

    在一个分布式系统中,每个服务都可能会调用其它的服务器,服务之间是相互调用相互依赖。假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务。这就是构成所谓“扇出”。 如果扇出的链路上某个微服务的调用响应的时间过长或者不可用,对微服A的调

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包