【从零开始学微服务】09.为什么需要服务注册发现?

news2024/11/22 9:14:11

大家好,欢迎来到万猫学社,跟我一起学,你也能成为微服务专家

微服务调用的问题

在上一篇文章中,我们深入探讨了微服务架构的引入过程。在这种架构中,原本庞大且复杂的单体应用会根据业务需求被拆分成一系列精简的小型服务。这些服务各自独立运行,相互之间通过轻量级的接口进行交互与协作。

值得注意的是,在微服务化的过程中,原本应用内部的方法级调用将转变为跨进程的服务间通信。这种转变不仅提高了系统的灵活性和可扩展性,还有助于实现更高效的资源利用和更快速的业务迭代。

随着业务的增长,服务的数量可能会越来越多,服务间的调用可能会变得异常复杂,实际情况可能是这样的:

随着业务的不断扩展,我们可能会面临服务数量的持续增长。在这种情况下,服务之间的相互调用可能变得错综复杂,给系统的维护和优化带来诸多挑战。为了更好地解决这一问题,我们需要深入了解实际场景中可能出现的情况:

在互联网技术领域,一个服务往往需要与众多其他服务进行交互。它可能会调用其他服务来完成特定的功能,同时,这个服务本身也可能作为一个组件,被其他服务所调用。这种相互依赖的关系使得整个系统更加灵活和高效,有助于实现各种复杂的业务场景。

微服务架构是天然分布式的,为了保证高可用,每个服务往往会有多个服务的实例,实例的数量还会根据业务的负载情况进行伸缩扩展。
此时服务间的调用会出现几个问题:

  • 如何获取服务的地址信息?
  • 多个服务实例之间,调用者如何选择?
  • 服务实例状态发生变化了,调用者如何感知?

在微服务架构中,由于其天然的分布式特性,为了确保系统的高可用性,每个服务通常会部署多个实例。同时,这些实例的数量还需要根据业务负载的变化进行动态伸缩。在这种情况下,服务间的调用就会面临一些挑战,主要包括以下几个方面:

  • 服务地址信息的获取:在分布式系统中,服务实例可能部署在不同的节点上,因此调用者需要知道服务实例的地址信息,才能进行远程调用。
  • 服务实例选择策略:当存在多个服务实例时,调用者需要根据某种策略来选择合适的实例进行调用。这种策略可能包括负载均衡、服务实例的健康状况等因素。
  • 服务实例状态变化的感知:在分布式系统中,服务实例的状态可能会发生变化,例如实例可能因为故障而下线,或者因为扩容而增加新的实例。调用者需要能够实时感知这些变化,以便及时调整调用策略。

服务地址信息的获取

在互联网技术领域,跨进程服务间调用是一种常见的通信方式。为了实现这种通信,服务之间需要通过网络进行交互。在这个过程中,我们必须要知道对方的地址信息。然而,将这些地址信息记录在本地并不可行,原因主要有以下两点:

  1. 随着服务数量的不断增加,地址信息的数量也会越来越庞大。如果将这些信息都存储在本地,不仅会占用大量的存储空间,还会导致查找和管理的效率降低。

  2. 在分布式系统中,服务的地址可能会频繁变化。例如,服务可能会因为负载均衡、故障转移等原因而迁移到其他节点。如果将地址信息记录在本地,那么每次地址发生变化时,都需要更新本地的记录,这无疑会增加系统的维护成本和复杂度。

服务实例选择策略

为了提高并发性能并确保高可用性,实际生产环境中的每个服务都会部署多个实例。在进行服务调用时,我们需要从这些实例中选择一个进行请求交互。如果选择不当,可能会导致业务压力分布不均衡,从而削弱并发性能的优势,并增加潜在的风险。

服务实例状态变化的感知

在互联网技术领域,服务实例的升级和故障处理是不可避免的挑战。当服务实例需要升级或因故障而下线时,调用者如何及时感知这些变化至关重要。否则,调用者可能会继续向失效的服务实例发送请求,从而导致请求失败。这种情况可能会进一步引发不必要的业务故障,对整个系统的稳定性和可靠性造成影响。

总结

在本篇文章中,我们将详细探讨微服务架构中的一些关键问题,包括服务间相互调用时如何获取服务地址信息、如何选择合适的服务实例以及如何感知服务实例状态的变化等。这些问题的解决对于构建稳定、高效的微服务系统至关重要。在后续的文章中,我们将深入剖析注册中心这一解决方案及其在微服务架构中的重要作用。敬请关注,不容错过。

恭喜你,看到这里你已经超越了80%的人。感谢你这么帅,还给我点赞


《从零开始学微服务》总目录

  • 【从零开始学微服务】01.微服务的过去与现在
  • 【从零开始学微服务】02.初识微服务
  • 【从零开始学微服务】03.软件架构的演化过程
  • 【从零开始学微服务】04.微服务架构的特点
  • 【从零开始学微服务】05.微服务的优势和不足
  • 【从零开始学微服务】06.微服务架构的建设思路
  • 【从零开始学微服务】07.微服务常用的开发框架
  • 【从零开始学微服务】08.引入微服务架构的时机
  • 【从零开始学微服务】09.为什么需要服务注册发现?

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

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

相关文章

MySQL空间数据学习

一、MySQL空间数据形式 MKT 已知文本(WKT)格式。用已知文本(WKT)表示几何值是为用ASCII格式交换几何数据而设计的。OpenGIS规范提供了一个BackusNaur语法,它指定了写入WKT值的正式生成规则。 MKB 已知二进制&#xff…

【真题解析】系统集成项目管理工程师 2021 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2021 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析(问答题 4 道,75分)综合知识(选择题*75)1-10 题11-20 题21-30 题31-40 题41-50 题51-60 …

LNMP环境

目录 安装Nginx MySQL PHP安装搭建 部署Discuz!社区论坛 安装Nginx 1、关闭防火墙 2、安装依赖包 3、解包 4、配置路径编译安装 5、优化路径创建软连接 6、添加Nginx服务 7、赋权 8、启动服务 9、检查是否安装成功 MySQL 1、安装依赖环境 2、创建运行用户 3、…

带你深入学习“反射”技术

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

Git入门到精通全套教程(涵盖GitHub\Gitee码云)

一个小时搞定Git 对应的视频教程讲解: Git入门到精通全套教程(涵盖GitHub\Gitee码云)_哔哩哔哩_bilibili 目录 1. 为什么要使用版本控制软件 2. 市场上的版本控制软件 3. Git简介 3.1Git简介 3.2集中式vs分布式 3.3作用 二、Git的使用…

【MySQL基础 | 第二篇】数据处理之分组查询

前言 查询语句属于DML(Data Manipulation Language)数据操作语言的其中一种,用于从数据库中提取所需的数据。通过灵活的条件和组合,查询语句帮助用户有效地获取、过滤和排序数据,满足各种信息需求。 文章目录 前言1️⃣…

阿里企业邮箱注册申请流程(图文详解)

2023阿里云企业邮箱注册流程,企业邮箱分为免费版、标准版、集团版和尊享版,阿里云百科分享企业邮箱版本区别,企业邮箱收费标准,以及阿里企业邮箱详细注册开通流程,包括阿里云账号注册、实名认证、企业邮箱版本区别及选…

基于Fedora 38的Ultramarine Linux 38推出了System76的调度器

导读Ultramarine Linux 38已经发布,它是另一个基于Fedora Linux的发行版,具有Budgie、GNOME、KDE Plasma和 elementary OS的Pantheon桌面环境的四个版本。 基于Fedora Linux 38,但默认使用Linux内核6.3,Ultramarine Linux 38&…

人工智能的几个概念

一、什么是人工智能 人工智能不是最近几年才兴起的,它已经有几十年发展的历史,下面是业内公认的一种关于人工智能概念的定义:人工智能(Artificial Intelligence):缩写为AI,是研究开发用于模拟、…

报名开启!2023大模型应用创新挑战赛来啦

满脑创意无处落地? 满身技术无人看到? 飞桨邀你开启大模型应用创意挑战之旅 寻找那个最具创意的你 资深开发者指导,助你落地“黄金”项目 大模型从业者合作交流 找到创业道路上的partner 高额奖金、技能提升、优质项目 官方扶持落地&#xff…

MCScanX安装与使用

为什么要写这篇文章: 最近因为朋友需要用到MCScanX画两个物种的共线性点图,但是发现搜到的blog中所提供的安装方法都不太相同,且在都会出现或多或少的问题,所以来找我帮忙,我搜到的所有blog安装链接http://chibba.pgml…

Flink的TopN

1.为什么定时器的时间设置为,窗口的end值1ms就可以呢? 因为定时器是下游,水位线是取的多个上游的最小的, 水位线是跟在数据后面的,所以当定时器的时间到达时,上游一定计算完成了,并且数据已经在…

LLM - 搭建 DrugGPT 结合药物化学分子知识的 ChatGPT 系统

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131384199 论文:DrugChat: Towards Enabling ChatGPT-Like Capabilities on Drug Molecule Graphs DrugChat,基…

便携式明渠流量计比对装置的基本要求

便携式明渠流量计比对装置的基本要求有哪些? 符合国标要求中对流量监测单元的比对(每2分钟采集一次数据,连续记录 6次数据与在线流量计数据进行液位误差比对,测量10分钟内的流量数据与在线流量计数据进行流量误差比对)…

springboot服务时间筛选问题,同一服务部署在本地和Linux服务器,同样的时间筛选数据不一致

项目场景: springboot项目通过时间筛选数据、 问题描述 时间筛选问题,同一服务部署在本地和Linux服务器,同样的时间筛选数据不一致 接收的参数 JsonFormat(pattern "yyyy-MM-dd") private Date queryDate;服务器打印日志出来的…

Linux常用命令——fsck命令

在线Linux命令查询工具 fsck 检查并且试图修复文件系统中的错误 补充说明 fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。 语法 fsck(选项)(参数)选项 -a:自动修复文件系统,不询…

JavaScript数组遍历的各种方式

目录 第一种方式(for循环) 第二种方式(forEach 遍历) 第三种方式(for...in) 第四种方式(for...of) 第五种方式(map方法遍历) 六、性能对比 第一种方式&…

【yolov5系列】将yolov5s模型部署到SigmaStar的9383芯片上

今年年初,接触了星宸科技(sigmastar)的芯片9383,将深度学习模型进行部署,使用sigmastar的深度学习加速硬件IPU进行模型推理。这里简单记录下sigmastar相关内容。 补充说明,之前使用的是瑞芯微的芯片&#x…

大数据从0到1的完美落地之Flume案例_3

案例演示 案例演示:SyslogtcpMemLogger Syslogtcp: syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中…

经济统计类的实证论文解剖

整理来源 UP主:Michaelscholar https://space.bilibili.com/550661456/video 截图 1.读什么文献 国内:中文CSSCI 期刊:中国社会科学,经济研究,经济学(季刊),管理世界&#xff0…