• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
万猫学社
帮助2

微服务调用的问题

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

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

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

学新通

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

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

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

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

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

服务地址信息的获取

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

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

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

服务实例选择策略

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

服务实例状态变化的感知

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

总结

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


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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhihgcbe
系列文章
更多 icon
同类精品
更多 icon
继续加载