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

服务注册

我们把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语句输出,声明该服务发现成功!

相关推荐
牛奶咖啡131 天前
k8s容器编排技术实践——K8s中服务发现ingress、ingress controller 应用实践
kubernetes·服务发现·ingress·ingress-nginx·部署ingress-nginx·部署ingress的三种方法·ingress的服务发现原理
追寻少年3 天前
Kubernetes 服务发现和域名解析-cnblog
容器·kubernetes·服务发现
念何架构之路8 天前
接入LVS+Nginx和服务发现
nginx·服务发现·lvs
IT策士8 天前
第29篇 k8s之Service 与 Endpoints 深入:服务发现原理
容器·kubernetes·服务发现
tellmewhoisi10 天前
Docker Compose最巧妙的设计之一——内置的服务发现机制
docker·服务发现
我是唐青枫10 天前
C#.NET YARP 服务发现实战:接入 Consul 和 Kubernetes 动态发现后端服务
c#·服务发现·.net
成为你的宁宁13 天前
【Prometheus基于文件的服务发现】
服务发现·prometheus
笨鸟先飞的橘猫14 天前
skynet——服务发现学习
学习·服务发现
AI云原生18 天前
容器网络模型与服务发现:从踩坑到精通,Kubernetes 网络问题排查全指南
服务器·网络·云原生·容器·kubernetes·云计算·服务发现
日取其半万世不竭25 天前
Consul:服务发现与健康检查,微服务架构的注册中心
架构·服务发现·consul