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

服务注册和发现

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发现服务实例列表,然后通过负载均衡算法,选择一个实例去调用:

相关推荐
檐下翻书1731 天前
PC端免费跨职能流程图模板大全 中文
大数据·人工智能·架构·流程图·论文笔记
回忆是昨天里的海1 天前
k8s暴露服务-Ingress环境部署
云原生·容器·kubernetes
tzhou644521 天前
Kubernetes Pod 入门
云原生·容器·kubernetes
攀登的牵牛花1 天前
前端向架构突围系列 - 框架设计(七):反应式编程框架Flower的设计
前端·架构
indexsunny1 天前
互联网大厂Java面试实战:微服务、Spring Boot与Kafka在电商场景中的应用
java·spring boot·微服务·面试·kafka·电商
我科绝伦(Huanhuan Zhou)1 天前
PostgreSQL存储管理核心技术解析:架构、页面模型与缓存机制
缓存·postgresql·架构
love530love1 天前
EPGF 新手教程 21把“环境折磨”从课堂中彻底移除:EPGF 如何重构 AI / Python 教学环境?
人工智能·windows·python·重构·架构·epgf
de之梦-御风1 天前
【架构】谈一谈软件设计的思想,即软件设计认知体系
架构
语落心生1 天前
Deepseek-ai深夜开源Engram存算分离模块-技术解析与工程实践指南
架构
老前端的功夫1 天前
TypeScript索引访问类型深度解析:类型系统的动态访问与模式匹配
前端·javascript·ubuntu·架构·typescript·前端框架