nacos之服务发现

服务发现

在微服务架构中,整个系统会按职责能力划分为多个服务,通过服务之间协作(来回调用)来实现业务目标。这样在我们的代码中免不了要进行服务间的远程调用,服务的消费方要调用服务的生产方,为了完成一次请求,消费方需要知道服务生产方的网络位置(IP地址和端口号)

naos的特性

  • 服务发现和服务健康检查
    Nacos使服务更容易注册,并通过DNS或者HTTP接口发现其他服务,Nacos还提供服务的实时健康检查,以防止向不健康的主机或者服务实例发送请求。
  • 动态配置管理
    动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置。nacos消除了在更新配置时重新部署应用程序,这使得配置的更改更加高效和灵活。
  • 动态DNS服务
    Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现,支持将注册在Nacos上的服务以域名的方式暴露端点,让三方应用方便的查阅和发现。
  • 服务和元数据管理
    Nacos能让您从微服务平台建设的视角管理数据中的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略。

如何实现服务发现?


上图中服务实例本身并不记录服务生产方的网络地址,所有服务实例内部都会包含服务发现客户端。

  • 1.在每个服务启动时会向服务发现中心上报自己的网络位置。这样,在服务发现中心内部会形成一个服务注册表,服务注册表是服务发现的核心部分,是包含所有服务实例的网络地址的数据库。
  • 2.服务发现客户端会定期从服务发现中心同步服务注册表,并缓存在客户端。
  • 3.当需要对某个服务进行请求时,服务实例通过该注册表,定位目标服务网络地址。若目标服务存在多个网络地址,则使用负载均衡算法从多个服务实例中选择出一个,然后发出请求。

总结一下,在微服务环境中,由于服务运行实例的网络地址是不断动态变化的,服务实例数量的动态变化,因此无法使用固定的配置文件来记录服务提供方的网络地址,必须使用动态的服务发现机制用于实现微服务间的相互感知。各服务实例会上报自己的网络地址,这样服务中心就形成了一个完整的服务注册表,各服务实例会通过服务发现中心来获取访问目标服务的网络地址,从而实现服务发现的机制。

springcloud 常见的集成方式 Fegin和Ribbon技术来完成服务间远程调用和负载均衡

posted @ 2022-10-03 22:46  King-DA  阅读(184)  评论(0)    收藏  举报