黑马商城项目—服务注册、服务发现

服务注册

我们把item-service注册到Nacos,步骤如下

1.引入依赖

在item-service的pom.xml中添加依赖:


2.配置Nacos

在item-service的application.yml中添加nacos地址配置:


3.配置服务实例

为了测试一个服务多个实例的情况,我们再配置一个item-service的部署实例

点击ItemApplication启动类右键选择Copy Configuration

点击Add VM options 之后会弹出下面一条框,里面填写-Dserver.post=端口号

之后就可以看到两个ItemApplication启动类了


4.启动两个启动类进行测试

访问nacos控制台,可以发现服务注册成功

点击详情,可以查看到item-service服务的两个实例信息:


服务发现

服务发现的作用在于不管是服务宕机、启动,随时都能被我们感应到,随时都能拿到最新的服务列表

服务发现使用步骤和服务注册前两步一样,都是导入依赖和配置Nacos,区别在于后面需要使用到负载均衡

我们把cart-service注册到Nacos并实现服务发现步骤如下

1.引入依赖

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


2.配置Nacos


3.发现并调用服务

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

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

  • 随机

  • 轮询

  • IP的hash

  • 最近最少访问

这里我们可以选择最简单的随机负载均衡。另外,服务发现需要用到一个工具:DiscoveryClient;SpringCloud已经帮我们自动装配,我们可以直接注入使用:


点开cart-service中CartServiceImpl实现类,找到handCartItems,对原来的远程调用进行一个修改,之前调用时我们需要写死服务提供者的IP和端口:

但现在不需要了,我们通过DiscoveryClient发现服务实例列表 ,然后通过负载均衡算法,选择一个实例去调用:


4.启动测试


通过http://localhost:8082/doc.html路径打开购物车服务文档进行测试 ,把三个启动类日志清空好观察输出sql语句

然后到控制台去查看CartApplication和两个ItemApplication是否有sql语句输出,有则代表负载均衡成功,有一个启动类没sql语句输出则代表有问题

可以看到三个控制台都有sql语句输出,声明该服务发现成功!

相关推荐
喵叔哟6 天前
15.故障排查与调试
后端·docker·容器·服务发现
没有bug.的程序员12 天前
Spring Cloud Gateway 架构与执行流程:从原理到性能优化的深度探索
微服务·云原生·eureka·性能优化·架构·sentinel·服务发现
没有bug.的程序员15 天前
Sentinel 流控原理深度解析:从SlotChain到热点参数限流的设计哲学
jvm·微服务·云原生·eureka·sentinel·服务发现
运维开发小白15 天前
服务发现中间件ConSul的操作指南
中间件·服务发现·consul
没有bug.的程序员17 天前
Nacos vs Eureka 服务发现深度对比
jvm·微服务·云原生·容器·eureka·服务发现
拾忆,想起22 天前
设计模式三大分类完全解析:构建高质量软件的基石
xml·微服务·设计模式·性能优化·服务发现
喵叔哟23 天前
10.消息队列集成
后端·服务发现
拾忆,想起23 天前
设计模式:软件开发的可复用武功秘籍
开发语言·python·算法·微服务·设计模式·性能优化·服务发现
香气袭人知骤暖24 天前
Nacos 服务发现保证机制解析
java·spring·服务发现