Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

文章目录

  • Eureka
    • Eureka组件可以实现哪些功能
    • 什么是CAP原则?
    • 服务注册代码实战
      • 搭建注册中心
      • 服务A搭建
      • 服务B搭建
      • 启动服务
        • 启动注册中心
        • 启动服务A
        • 启动服务B
    • 结束语

Eureka

这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中,服务之间的调用实现我会再下一篇文章中进行讲解!

Eureka组件可以实现哪些功能

Eureka主要是做:

  1. 注册发现中心
  2. 服务注册与发现的组件

什么是CAP原则?

说到Eureka不得不提到了CAP,那么什么是CAP原则呢,下面一起来看下!
CAP 原则:又称 CAP 定理,指的是在一个分布式系统中。

CAP原则三大特性
一致性 (Consistency):在集群中,三个机器的数据是一致的。
可用性I(Availability):当有一个节点挂掉了整个集群可以继续对外提供服务。
分区容错性 (Partition tolerance):由于机房网络或者分区等原因会导致各个机器中的数据短暂不一致。
(这个特性是不可避免的)CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。

说到这里再提一下EurekaZookeeper的区别?
Zookeeper:
遵循CP原则
Eureka:
AP原则:注重AP高可用

服务注册代码实战

整体核心实现图
在这里插入图片描述

搭建注册中心

下面我来通过代码的方式详细的看下如何来快速实现Eureka的使用
在这里插入图片描述
只需要建我标记红色框的项目,其它的不需要建,我这边是之前做的服务注册中心集群所以会有好几个注册中心

首先把目录结构给建起来,Maven项目
注意:新增项目的时候选择Java8
按照我图上的这个建,新建项目流程这边我不一一去说了,不明白的可以私信我!
第一步
先去新建注册中心01-eureka-server
在这里插入图片描述
第二步
修改EurekaServerApplication启动类,添加@EnableEurekaServer注解,意思是开启Eureka的注册中心的,启动类里面只需要修改一个地方添加开启Eureka注解功能。
源码如下:

package com.powernode;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication
@EnableEurekaServer //开启Eureka的注册中心的功能
public class EurekaServerApplication {public static void main(String[] args) {SpringApplication.run(EurekaServerApplication.class, args);}}

第三步
修改yml文件(配置文件)
源码如下:
每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。

#单机
server:port: 8761 # eureka的默认端口
spring:application:name: eureka-server # 应用名称 不要使用特殊字符
eureka: #Eureka的配置分三类 server client 实例的  eureka-server既是服务端又是客户端server: #服务端每间隔多少毫秒定期删除的操作(默认是3000030秒))eviction-interval-timer-in-ms: 10000renewal-percent-threshold: 0.85 # 续约百分比 超过85的应用没有和你续约 那么erueka不会踢除任何应用instance: # 实例的配置instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}} # 主机名称 : 应用名称 : 端口号
#      hostname: localhost # 主机名称 或者 服务的IP
#      prefer-ip-address: true #以IP的形式显示具体的服务信息
#      lease-renewal-interval-in-seconds: 5 # 服务实例的续约的时间间隔

第四步
修改pom文件
注意:01-eureka-server的pom文件,因为这块要去指定spring Cloud以及spring Boot版本。
按照我标红色的框去修改
在这里插入图片描述
在这里插入图片描述

服务A搭建

服务A对应的项目名称是:02-eureka-client-a,千万不要改错地方哈!
第一步
先去修改yml配置文件。
源码如下:
每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。

server:port: 8702 # 客户端端口没有要求
spring:application:name: eureka-client-a
# 注册 发送信息
eureka:client:service-url: # 指定注册地址defaultZone: http://localhost:8761/eurekaregister-with-eureka: true # 可以不往eureka-server注册fetch-registry: true # 应用是否去拉取服务列表到本地# 每个10秒中去注册中心重新进行拉取 时间越短脏毒越少 性能消耗大registry-fetch-interval-seconds: 10 # 为了缓解服务列表的脏毒问题instance:hostname: localhost # 应用的主机名称 最好谢主机ipinstance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}prefer-ip-address: true # 显示iplease-renewal-interval-in-seconds: 10 # 实例续约的时间

第二步
修改pom文件,按图修改
1
在这里插入图片描述

服务B搭建

服务A对应的项目名称是:02-eureka-client-b,千万不要改错地方哈!
和服务A类似
第一步
先去修改yml配置文件。
源码如下:
每一个配置代表什么意思我都一一添加了注释,先按照我这种方式去改。

server:port: 8703 # 客户端端口没有要求
spring:application:name: eureka-client-b
# 注册 发送信息
eureka:client:service-url: # 指定注册地址defaultZone: http://localhost:8761/eureka

第二步
修改pom文件,按图修改
在这里插入图片描述
在这里插入图片描述

启动服务

启动注册中心

先启动注册中心01-eureka-server,在启动服用A和服务B
启动方式:点击启动文件,然后点击绿色的三角选择运行模式或者调试模式都可以
在这里插入图片描述
看到下图这个,说明就已经启动成功了,返回状态码为204。
注意:重点来了非常重点,在浏览器地址栏中直接输入http://localhost:8761/

在这里插入图片描述
如果你输入完http://localhost:8761/给你返回的是这个页面,恭喜你Eureka注册中心启动成功!,接着再去启动服务。
在这里插入图片描述

启动服务A

还是这种方式去启动,运行模式和调试模式都可以。
在这里插入图片描述
启动成功后会显示如下图所示,状态显示204。
在这里插入图片描述
注意:重点来了非常重点,在浏览器地址栏中直接输入http://localhost:8761/,或者是刚才已经打开这个地址了,直接F5刷新页面。
可以清除的看到在注册中心上方有一个应用名称为:EUREKA-CLIENT-A的服务注册进来了,很好,继续启动服务B。
在这里插入图片描述

启动服务B

服务B还是按照服务A的方式去启动,我们可以清楚的看到目前有三个服务正在运行,分别是注册中心、服务A和服务B,回到浏览器,还是那个网址下,F5刷新。
在这里插入图片描述
很好,可以看到服务B也注册进来了。

在这里插入图片描述

结束语

至此就完成了一个注册中心和两个服务模块的注册功能的实现,按照我的这种方式去搭建项目和代码实现,不明白的博主私信,大家可以看到我还有其他的组件
这是常用的Spring Cloud组件,还有第二张图的各个组件的服务,nacos文件配置中心搭建、手写网关、熔断器等等,都是源码,有需要的博主可以私信我,不收取任何费用,如果你有不明白的地方我还会免费为你进行解答,希望能帮助到大家!
本期分享就到这里咯,下期分享rabbon实现远程调用。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

使用MyBatis(2)

目录 一、定义接口、实体类、创建XML文件实现接口) 二、MyBatis的增删改查 🍅1、MyBatis传递参数查询 🎈写法一 🎈写法二 🎈两种方式的区别 🍅2、删除操作 🍅3、根据id修改用户名 &#x…

【C++】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值

[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动 最近想用c做一个小游戏,游戏的主要内容是利用键盘控制一个飞机躲避和击落屏…

Winform制作的用户界面在高DPI下缩放问题

引言 熟悉Winform的小伙伴应该都遇到过 在100%缩放下制作的用户界面在其他缩放百分比下会出现字体超出边框的情况,导致用户体验大打折扣。用户程序DPI感知是默认打开的,此时可以通过关闭这种感知来禁用字体的缩放,在这种情况下,用…

通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理。Python DES实现源码

文章目录 1、什么是DES2、DES的基本概念3、DES的加密流程4、DES算法步骤详解4.1 初始置换(Initial Permutation,IP置换)4.2 加密轮次4.3 F轮函数4.3.1 拓展R到48位4.3.2 子密钥K的生成4.3.3 当前轮次的子密钥与拓展的48位R进行异或运算4.3.4 S盒替换(Sub…

mysql的主从复制

1.主从复制的原理 主从复制的原理是通过基于日志的复制方式实现数据的同步。当主服务器上发生数据变更时,会将这些变更写入二进制日志(Binary Log)中。从服务器通过连接到主服务器,请求从主服务器获取二进制日志,并将…

QPainter绘制雷达界面

文章目录 功能实现定义的结构体定义的函数效果图gitee源码链接 功能实现 相较于上一版,这一版添加的功能有: 1、自适应窗口 2、扫描方式(圆周扫描、扇形扫描(指定起始角度和结束角度)) 3、扫描方向&#x…

Linux:ELK:日志分析系统(使用elasticsearch集群)

原理 1. 将日志进行集中化管理(beats) 2. 将日志格式化(logstash) 将其安装在那个上面就对那个进行监控 3. 对格式化后的数据进行索引和存储(elasticsearch) 4. 前端数据的展示(kibana&…

11. Mybatis 的增删查改【万字详解】

目录 1. 数据的查找 select 1.1 查询所有数据 1.2 通过 id 进行查找 2. 插入数据 insert 3. 修改数据 update 4. 删除数据 delete 5. $ 和 # 的区别 5.1 SQL 注入 用户登录 6. Spring Boot 打印 SQL 日志 7. order by 排序 8. like 查询 9. 通过页面返回数据 10. …

【算法基础:动态规划】5.3 计数类DP(整数拆分、分拆数)

文章目录 例题:900. 整数划分解法1——完全背包解法2——分拆数⭐⭐⭐ 例题:900. 整数划分 https://www.acwing.com/problem/content/902/ 解法1——完全背包 容量是 n,物品的大小和价值是 1 ~ n 中的所有数字。 import java.util.*;pub…

【JAVASE】循环结构

⭐ 作者:小胡_不糊涂 🌱 作者主页:小胡_不糊涂的个人主页 📀 收录专栏:浅谈Java 💖 持续更文,关注博主少走弯路,谢谢大家支持 💖 循环 1. 循环结构1.1 while 循环1.2 bre…

招商银行秋招攻略和考试内容详解

招商银行秋招简介 招商银行是一家股份制商业银行,银行的服务理念已经深入人心,在社会竞争愈来愈烈的今天,招商银行的招牌无疑是个香饽饽,很多人也慕名而至,纷纷向招商银行投出了简历。那么秋招银行的秋招开始时间是多…

支持向量机(iris)

代码: import pandas as pd from sklearn.preprocessing import StandardScaler from sklearn import svm import numpy as np# 定义每一列的属性 colnames [sepal-length, sepal-width, petal-length, petal-width, class] # 读取数据 iris pd.read_csv(data\\i…

消息队列总结(4)- RabbitMQ Kafka RocketMQ高性能方案

1.RabbitMQ的高性能解决方案 1.1 发布确认机制 RabbitMQ提供了3种生产者发布确认的模式: 简单模式(Simple Mode):生产者发送消息后,等待服务器确认消息已经被接收。这种模式下,生产者发送消息后会阻塞&am…

论文笔记--Skip-Thought Vectors

论文笔记--Skip-Thought Vectors 1. 文章简介2. 文章概括3 文章重点技术3.1 Skip Thought Vectors3.2 词表拓展 4. 文章亮点5. 原文传送门6. References 1. 文章简介 标题:Skip-Thought Vectors作者:Ryan Kiros, Yukun Zhu, Ruslan Salakhutdinov, Rich…

JavaSE复盘2

Collection接口的接口对象集合(单列集合) List接口:元素按照先后有序保存,可重复 LinkList接口实现类,链表,随机访问,没有同步,线程不安全ArrayList接口实现类,数组&…

element时间选择器的默认值

概览:vue使用element组件,需要给时间选择器设置默认值,场景一:默认时间选择器,场景二:时间范围选择器,开始时间和结束时间。 一、默认时间选择器 实现思路: element组件的v-model绑…

忘记安卓图案/密码锁如何解锁?

如何解锁Android手机图案锁?如何删除忘记的密码?Android 手机锁定后如何重置?这是许多智能手机用户在网上提出的几个问题。为了回答这些问题,我们想出了一些简单有效的方法来解锁任何设备而不丢失数据。 忘记手机密码可能会令人恐…

web服务器(Tomcat)

目录 一、web服务器 1. 常见web服务器 2. web服务器简介 二、 Apache Tomcat服务器 1. Tomcat服务器简介 2. Tomcat服务器基本使用 3. 启动tomcat常见问题 (1)启动tomcat控制台乱码 (2)启动tomcat闪退问题 (…

爬虫003_pycharm的安装以及使用_以及python脚本模版设置---python工作笔记021

这里我们用ide,pycharm来编码,看一看如何下载 这里我们下载这个社区办,这个是免费的,个人版是收费的 然后勾选以后 安装以后我们来创建一个项目 这里可以选择python的解释器,选择右边的... 这里我们找到我们自己安装的python解释器

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境4

7、使用串口工具 (1)连接硬件 连接 Type C 线, 一端电脑一端开发板 查看设备是否已经正确识别: 在 Windows 下可以打开设备管理器来查看 如果没有发现设备, 需要确认有没有装驱动以及接触是否良好 (2&a…