【SpringCloud微服务实践】服务注册与发现

news2024/9/25 11:11:25

注册与发现

在之前的示例中,采取的是硬编码的方式,需要调用的微服务的地址是被我们写死在文件或代码中的。在传统应用程序中,一般都是这么做的,然而这种方式存在不少缺陷:

  • 静态配置:因为是写死的网络地址,当服务提供者的网络地址发生了变化,服务消费者将访问不到原先配置的提供者,必须手动重新配置新地址并重启应用。
  • 无法动态伸缩:在实际生产环境下的微服务中,往往每个微服务是由多个部署实例组成的集群,从而实现服务容灾和负载均衡。

注册中心的概念

注册中心用于解耦服务提供者和消费者,就好比服务关系的"通讯录",记录了服务和地址的映射关系,不同的服务根据通讯录,去调用其它的服务。

微服务架构图

在引入了注册中心(服务发现组件)的微服务架构中,服务发现者、提供者、消费者的关系如下:

  • 各微服务实例启动时,向注册中心注册自己的网络地址、服务名等信息
  • 各微服务实例定时向注册中心发送心跳,让注册中心知道某个实例是健康的,否则注册中心会注销该实例的信息
  • 服务消费者从注册中心获取需要调取的服务提供者的网络地址,使用分配到的地址去调用相应的服务提供者
  • 当实例的网络地址变更时,向注册中心重新注册信息,无需手动修改

从这些关系来看,注册中心应当具备以下功能:

  • 服务注册表:记录注册过的服务的地址,名称等信息
  • 服务注册与发现:支持微服务向自己注册信息,并支持查询注册表获取信息
  • 服务治理:采取一定机制保障实例的可用性
  • 服务负载均衡:对多个服务实例的调用采取一定的算法来保障服务高可用性

常用的注册中心

有很多优秀的开源注册中心可以为我们所用,比如EurekaConsulZookeeperNacos等等。

Eureka

Eereka是Netflix开源的一款RESTful的服务治理组件,主要用于AWS云中定位运行在AWS云上的中间层服务,以实现中间层服务的自动化部署和故障转移。Eureka的优点是易于部署和维护,缺点是可靠性不足,并已停止开源维护。

Consul

Consul是HashCorp开源的一款服务发现与配置管理工具,Consul的优点是支持多数据中心、支持健康检查、支持DNS查询、无需SDK、有WEB界面等,缺点是性能有待提升,服务检查的实时性较低。

Zookeeper

Zookeeper是由Yahoo开源的一款分布式应用程序协调服务,可以用于服务发现、配置管理、分布式锁等。Zookeeper的优点是稳定性高、性能高、可靠性好、多用途,缺点是部署和维护较为复杂,没有雪崩保护,需集成SDK,不支持多数据中心。

Nacos

Nacos是Alibaba开源的的一款用于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos的优点是支持多协议(http/dns/udp)和多集成方案(Dubbo、gRPC、k8s、Spring Cloud等)、支持多数据中心、支持健康检查、支持DNS查询、有WEB界面等,缺点是相对较新,社区相对较小,文档较差(但中文)。


在实际的项目开发中,应根据实际需求来选择对应的注册中心,并不存在哪个就一定最好的说法。

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

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

相关文章

力扣sql中等篇练习(十五)

力扣sql中等篇练习(十五) 1 页面推荐 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # ①找到1所对应的朋友 ②找到其朋友喜欢的页面 ③删选掉自己喜欢的页面 # 可能朋友中存在喜欢同样的界面 SELECT distinct page_id reco…

Java每日一练(20230507) 组合总和、缺失的正数、单词搜索II

目录 1. 组合总和 🌟🌟 2. 缺失的第一个正数 🌟🌟🌟 3. 单词搜索 II 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/…

数字化转型导师坚鹏:企业干部如何进行数字化转型

企业干部如何进行数字化转型 ——数字化转型背景下重塑企业干部核心竞争力 授课背景: 很多银行存在以下问题: 企业干部不知道如何进行数字化转型? 企业干部不清楚银行数字化能力模型的内涵? 企业干部不知道如何通过数字化…

总结843

学习目标: 5月(张宇强化18讲,背诵25篇短文,熟词僻义300词基础词) 每日必复习(5分钟) 做记录本上3道题 学习内容: 暴力英语:回环诵读,继续背一篇阅读理解&…

前端实战项目:网易云静态页面——轮播图

前言 目前这个前端项目持续更新中~ 网易云静态页面——导航栏 Flex布局 文章目录 前言实现目标静态实现页面大致样子添加模糊的背景图添加图片下载客户端部分轮播图小圆点第一个小圆点变成红色以及当鼠标放上其他任一小圆点也变成红色左右按钮总代码 动态实现 实现目标 建立相…

Shift_RAM ip核的使用——ROM调用mif文件、传至Shift_RAM输出

Altera_Shift Register(RAM-based)ip核 前言1.创建mif文件,通过ROM ip核调用该mif文件1.1创建mif文件1.2顺序填充mif文件1.3创建ROM ip核调用mif文件 2.计数器读取mif文件中的数据2.1写一个0-15的循环计数器2.2实例化ROM ip核、调用计数器模块…

【C++学习】类和对象--多态

多态的基本语法 多态是C面向对象三大特性之一 静态多态: 函数重载和运算符重载属于静态多态,复用函数名(函数地址早绑定,编译阶段确定函数地址) 动态多态: 派生类和虚函数实现运行时多态(函数地…

Python |浅谈爬虫的由来

本文概要 本篇文章主要介绍Python爬虫的由来以及过程,适合刚入门爬虫的同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! 🌟🌟🌟个人简介🌟&…

快速搭建一个spring入门案例及整合日志

目录 环境要求 构建模块 程序开发 引入依赖 创建java类 创建配置文件 创建测试类测试 运行测试程序 程序分析 spring中配置启用Log4j2日志框架 Log4j2日志概述 引入Log4j2依赖 加入日志配置文件 测试 使用日志 环境要求 JDK:Java17(Spring6要…

Linux高性能服务器编程|阅读笔记:第6章 - 高级I/O函数

目录 简介6.1 pipe函数6.2 dup函数和dup2函数6.3 readv函数和writev函数6.4 sendfile函数6.5 mmap函数和munmap函数6.6 splice函数6.7 tee函数6.8 fcntl函数结语 简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出&…

10-Vue技术栈之脚手架配置代理(解决跨域问题)+ GitHub用户搜索案例

目录 1、基本使用1.1 方法一1.2 方法二 2、GitHub用户搜索案例 1、基本使用 1.1 方法一 ​ 在vue.config.js中添加如下配置: devServer:{proxy:"http://localhost:5000" }说明: 优点:配置简单,请求资源时直接发给前…

用三角函数解决几何问题

如图,在 △ A B C \triangle ABC △ABC 中, A C > 5 , A B > A C AC>5,AB>AC AC>5,AB>AC,点 E E E 是 A B AB AB 上一点,链接 C E CE CE,将 △ B C E \triangle BCE △BCE 沿 C E CE CE 折叠&…

【unity之数据持久化】-Unity公共类PlayerPrefs

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

FreeRTOS 内存管理

文章目录 一、FreeRTOS 内存管理简介二、 内存碎片三、heap_1 内存分配方法1. 分配方法简介2. 内存申请函数详解3. 内存释放函数详解 四、heap_2 内存分配方法1. 分配方法简介2. 内存块详解3. 内存堆初始化函数详解4. 内存块插入函数详解5. 内存申请函数详解6. 内存释放函数详解…

操作系统考试复习——第四章 4.3连续分配存储管理方式

在这里的开头需要讲述一下碎片,碎片分为内碎片和外碎片两种。 内碎片:分区之内未被利用的空间外碎片:分区之间难以利用的空闲分区(通常是小空闲分区)。 连续分配存储管理方式: 为了能将用户程序装入内存&#xff0c…

力扣刷题Day12_2

144.二叉树的前序遍历 测试代码main() class TreeNode:def __init__(self, valNone, leftNone, rightNone):self.val valself.left leftself.right rightfrom typing import Listclass Solution:def preorderTraversal(self, root: TreeNode) -> List[int]:s Solution…

C++易错编程练习题(1)

0 编程练习 基础不牢靠,回头来补课。小白这个系列主要是为了重新打基础,为一些常见的易错编程练习题提供记录。其间若有错误,欢迎指出,轻喷勿骂。毕竟小白确实是基础不牢靠。 1 题目 自定义函数之整数处理。 题目描述 输入10个…

多视图局部共现和全局一致性学习提高乳腺图像分类的综合性

文章目录 Multi-view Local Co-occurrence and Global Consistency Learning Improve Mammogram Classification Generalisation摘要本文方法global consistency modulelocal co-occurrence module (LCM) 实验结果 Multi-view Local Co-occurrence and Global Consistency Lear…

okio篇3-超时机制

关于System.nanoTime System.currentTimeMills与System.nanoTime实际都是时间间隔,只不过两个时间的起始时间衡量不一致。 我们比较常用的,实际是System.currentTimeMills(),这个时间是以1970-01-01起始,到系统显示时间的间隔。…

聚浪成潮,网易数帆CodeWave智能开发平台开启低代码新时代

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着全球范围内新一代人工智能技术发展突飞猛进,社会各领域从数字化、网络化向智能化转变,如何进一步释放数据生产力、加速智能化转型已成为企业发展的必修课。 2023年4月25日,“网易数帆…