微服务——服务注册和发现(二)

服务注册和发现

1.4.服务发现

服务的消费者要去nacos订阅服务,这个过程就是服务发现,步骤如下:

  • 引入依赖

  • 配置Nacos地址

  • 发现并调用服务

1.4.1.引入依赖

服务发现除了要引入nacos依赖以外,由于还需要负载均衡,因此要引入SpringCloud提供的LoadBalancer依赖。

我们在cart-service中的pom.xml中添加下面的依赖:

复制代码
<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

可以发现,这里Nacos的依赖于服务注册时一致,这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人,也可以被别人调用,即可以是调用者,也可以是提供者。

因此,等一会儿cart-service启动,同样会注册到Nacos。

1.4.2.配置Nacos地址

cart-serviceapplication.yml中添加nacos地址配置:

复制代码
spring:
  cloud:
    nacos:
      server-addr: 192.168.XXX.XXX:8848

1.4.3.发现并调用服务

接下来,服务调用者cart-service就可以去订阅item-service服务了。不过item-service有多个实例,而真正发起调用时只需要知道一个实例的地址。

因此,服务调用者必须利用负载均衡的算法,从多个实例中挑选一个去访问。常见的负载均衡算法有:

  • 随机

  • 轮询

  • IP的hash

  • 最近最少访问

另外,服务发现需要用到一个工具,DiscoveryClient,SpringCloud已经帮我们自动装配,我们可以直接注入使用:

接下来,我们就可以对原来的远程调用做修改了,之前调用时我们需要写死服务提供者的IP和端口,但现在不需要了,我们通过DiscoveryClient发现服务实例列表,然后通过负载均衡算法,选择一个实例去调用:

相关推荐
mohesashou10 分钟前
k8s的pod管理
云原生·容器·kubernetes
xencio33 分钟前
企业资金管理系统技术选型:用友BIP全球司库与见知资金管理系统的架构、银企直联和ERP集成对比
架构·用友·资金管理系统·见知数据·见知银企通·资金系统选型
WThh40 分钟前
k8s中的控制器管理
云原生·容器·kubernetes
养海绵宝宝的小蜗43 分钟前
【Kubernetes系列】控制器(Controller)全解:ReplicaSet、Deployment、DaemonSet、Job 与 CronJob
云原生·容器·kubernetes
艾伦_耶格宇1 小时前
【ELK】-6 ELFK 索引架构详解
elk·架构
nxb5561 小时前
云原生:控制器
java·开发语言·云原生
UseLessQQ1 小时前
云原生 kubenetes 控制器管理
云原生·kubernetes
mldong1 小时前
一条命令,十分钟:jeeflow 工作流应用的六语言一键部署
前端·后端·架构
ting94520009 小时前
Humalike X Hermes 深度技术剖析:单指令注入群聊社交智能的底层架构、算法与跨 IM 平台实现
人工智能·算法·架构
ZGIAI10 小时前
ZGI 混合检索:汇集候选并统一重排
人工智能·架构