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 外,当今主流的注册中心还有 Nacos、Zookeeper、Consul 等。

Nacos

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

Zookeeper

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

Consul

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

组件名语言CAP主要功能
EurekaJavaAP注册中心
NacosJavaAP/CP注册中心、配置中心
ZookeeperJavaCP

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

分布式ID、集群管理等

ConsulGoCP注册中心、配置中心

搭建服务

准备

名称版本
Spring-Boot2.7.8
Spring Cloud2021.0.9
Spring Cloud Alibaba2021.0.5.0
JDK1.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: trueinstance:hostname: SpringCloudServerAprefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}:@project.version@client:service-url:defaultZone: http://SpringCloudServerB:8082/eurekaregister-with-eureka: truefetch-registry: true---server:port: 8082
spring:config:activate:on-profile: serverB
eureka:server:#注册中心多久检查一次失效的实例eviction-interval-timer-in-ms: 60#自我保护enable-self-preservation: trueinstance:hostname: SpringCloudServerBprefer-ip-address: trueinstance-id: ${spring.cloud.client.ip-address}:${server.port}:@project.version@client:service-url:defaultZone: http://SpringCloudServerA:8081/eurekaregister-with-eureka: truefetch-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参数)启动服务

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

测试

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

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

其他

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SD-WAN企业网络部署模式及适用企业类型

随着企业规模的扩张和数字化转型的推进&#xff0c;SD-WAN作为一种灵活、安全和高效的组网解决方案备受关注。那么&#xff0c;SD-WAN在企业网络部署中有哪些常见模式&#xff1f;又有哪些类型的企业最适合采用SD-WAN呢&#xff1f;让我们一起来了解一下&#xff01; 常见的SD-…

算法修炼之路之双指针含多道leetcode 经典题目

目录 前言 一&#xff1a;普通双指针 1.经典题目一 283移动0问题 分析 代码实现 2.经典题目二 1089复写0 分析 代码实现 二&#xff1a;解决成环类问题-快慢指针 经典例题一 202快乐数 分析 代码实现 三&#xff1a;左右相遇指针 经典例题一 11 盛最多水的容…

基于Whisper语音识别的实时视频字幕生成 (一): 流式显示视频帧和音频帧

Whishow Whistream&#xff08;微流&#xff09;是基于Whisper语音识别的的在线字幕生成工具&#xff0c;支持rtsp/rtmp/mp4等视频流在线语音识别 1. whishow介绍 whishow&#xff08;微秀&#xff09;是python实现的在线音视频流播放器&#xff0c;支持rtsp/rtmp/mp4等流式输…

说说TCP为什么需要三次握手和四次挥手?

文章目录 一、三次握手为什么不是两次握手? 二、四次挥手四次挥手原因 三、总结参考文献 一、三次握手 三次握手&#xff08;Three-way Handshake&#xff09;其实就是指建立一个TCP连接时&#xff0c;需要客户端和服务器总共发送3个包 主要作用就是为了确认双方的接收能力和…

将File转为MultipartFile

将File转为MultipartFile 引言一、File转MultipartFile的实现方法二、生产环境考量总结 引言 在处理文件上传功能时&#xff0c;我们常常会遇到需要将本地File对象转换为Spring Web框架中的MultipartFile对象的情况。这种转换在开发阶段可能通过自定义方法得以实现&#xff0c;…

毅速ESU丨增材制造有助于传统制造企业打造新增长极

在科技浪潮的推动下&#xff0c;传统制造企业正面临着前所未有的挑战与机遇。产品的复杂程度不断提升&#xff0c;个性化需求层出不穷&#xff0c;越来越短的生产周期&#xff0c;不断升级的品质要求等&#xff0c;传统的生产模式在应对这些变化并不容易。而增材制造&#xff0…

Pytorch:一维卷积及其伴随的定义

文章目录 一、数学表达二、步长2.1、步长的作用2.2、步长的示例步长为 1步长为 2 2.3、总结 三、零填充3.1、零填充的作用&#xff1a;3.2、类型和大小3.3、 应用示例 四、通道数4.1、通道数的定义4.2、示例说明4.3、深度学习中的应用 五、batch_size5.1、batch_size和数据形状…

AI赋能校园管理,打造平安智慧校园解决方案

背景&#xff1a; 2020年教育部办公厅印发《教育系统安全专项整治三年行动实施方案》&#xff0c;文中要求&#xff0c;学校在所辖范围内组织开展安全专项整治三年行动&#xff0c;健全完善安全责任体系&#xff0c;建立风险管控和隐患治理的安全防控体系&#xff0c;开展消防等…

在线药房数据惨遭Ransomhub窃取,亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件119起&#xff0c;与上周相比勒索事件有所增长。 本周Blacksuit是影响最严重的勒索家族&#xff0c;Ransomhub和Blackbasta恶意家族紧随其后&#xff0c;从整体上看Lockbit3.0依旧是影响最严重的勒索家族&#xff0c;需要注意防范。…

基于 YOLOv9 的自定义数据集目标检测

点击下方卡片&#xff0c;关注“小白玩转Python”公众号 在本指南中&#xff0c;我们将展示使用自定义数据集训练 YOLOv9 模型的过程。具体而言&#xff0c;我们将提供一个示例&#xff0c;重点介绍训练一个视觉模型来识别篮球场上的篮球运动员。但是&#xff0c;这个指南是多功…

并查集的实现与应用(力扣)

并查集的实现与应用&#xff08;力扣&#xff09; 并查集的实现力扣323 130 990 学习地址 并查集的实现 package com.caoii;/**program:labu-pratice-study*package:com.caoii*author: Alan*Time: 2024/4/12 21:53*description: 并查集的实现*/public class UnionFind {// 记…

Web中使用Weblogic用户

WebLogic用户&#xff0c;组设置 1. 登录weblogic console, domain结构中选择Security Realms&#xff0c;显示安装时默认创建的Realm &#xff1a; myrealm 2. 点击myrealm, 选择 users and Group&#xff0c; 追加用户和组 选择既存的权限组追加到新规的组中&#xff0c;赋予…

servicecomb bmi例子无法正常启动

前端报错404&#xff0c;后端显示&#xff1a;[ntloop-thread-7] o.a.s.c.rest.locator.OperationLocator : locate path failed, status:Not Found, http method:GET, path:/, microserviceName:gateway 原因&#xff1a; 在resource-->application.yml中&#xff1a; # …

java智慧校园系统源码saas电子班牌固件安卓7.1+Java Android原生系统源码

java智慧校园系统源码saas电子班牌固件安卓7.1&#xff0b;Java Android原生系统源码 智慧校园是促进信息技术与教育教学深度有效融合、提高学与教的效果为目的&#xff0c;以物联网、云计算、大数据分析等新技术为核心技术&#xff0c;提供一种环境全面感知、智慧型、数据化、…

数据结构——简单二叉树的性质和遍历

二叉树 两个值得注意的性质&#xff1a; 1.二叉树是有序树&#xff0c;这个我想了很久不知道为什么&#xff0c;可是为什么二叉树只有三种遍历方式&#xff0c;而不是六种&#xff1f;说明每个形态不同的树都有不同的含义。那完全二叉树和平衡二叉树呢&#xff1f;也是一样的…

.NET/C#汇总 —— 多线程

1.根据线程安全的相关知识,分析以下代码,当调⽤test⽅法时i>10时是否会引起死锁?并简要说 明理由。 public void test(int i) {lock(this){if (i>10){i--;test(i);}} } 不会发⽣死锁,(但有⼀点int是按值传递的,所以每次改变的都只是⼀个副本,因此不会出现死锁。…

Linux 删除文件或文件夹命令(新手)

一、删除文件夹 rm -rf 路径/目录名 1 强制删除文件夹及其子文件。 二、删除文件/文件夹&#xff1a;rm 命令 rm 删除命令&#xff0c;它可以永久删除文件系统中指定的文件或目录。 rm [选项] 文件或目录 选项&#xff1a; -f&#xff1a;强制删除&#xff08;force&am…

前端大屏项目适配方法

要在F11全屏模式下查看 方法一&#xff0c;rem font-size 动态设置HTML根字体大小 和 body 字体大小&#xff08;lib_flexible.js&#xff09; 将设计稿的宽&#xff08;1920&#xff09;平均分成 24 等份&#xff0c; 每一份为 80px。HTML字体大小就设置为 80 px&#xff…

SonarQube 9.9.4 LTS社区版安装

目标 安装个SonarQube社区版. 安装SonarQube9.9.4 LTS社区版 https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.4.87374.zip # 切换到安装目录 cd /opt # 下载安装包 sudo wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube…

[管理者与领导者-160] :社交策略和智慧-3,如何用积极的语言表达他人的赞美,构建和谐的人际关系

目录 一、用积极的语言表达他人的赞美他人的重要性 1.1 消极语言的危害 1.2 批评性语言的危害 1.3 积极的语言表达他人的赞美他人的重要性 二、有哪些积极的赞美他人的语言&#xff1f; 2.1 有哪些消极性语言 2.2 有哪些积极性语言 2.3 有哪些批评性语言 2.4 有哪些赞…