服务器网站后台登陆密码黄框显示,商城网站建设咨询,佛山做网站公司有哪些,做商城网站产品怎么分布文章目录 一、注册中心原理二、Nacos注册中心三、服务注册四、服务发现五、OpenFeign 一、注册中心原理
在微服务当中必须有两个角色 服务提供者#xff1a;提供接口供其它微服务访问 服务消费者#xff1a;调用其它微服务提供的接口 在大型微服务项目中#xff0c;服务提供… 文章目录 一、注册中心原理二、Nacos注册中心三、服务注册四、服务发现五、OpenFeign 一、注册中心原理
在微服务当中必须有两个角色 服务提供者提供接口供其它微服务访问 服务消费者调用其它微服务提供的接口 在大型微服务项目中服务提供者的数量会非常多为了管理这些服务就引入了注册中心的概念。注册中心、服务提供者、服务消费者三者间关系如下 流程如下
服务启动时就会注册自己的服务信息服务名、IP、端口到注册中心调用者可以从注册中心订阅想要的服务获取服务对应的实例列表1个服务可能多实例部署调用者自己对实例列表负载均衡挑选一个实例调用者向该实例发起远程调用
当服务提供者的实例宕机或者启动新实例时调用者如何得知呢
服务提供者会定期向注册中心发送请求报告自己的健康状态心跳请求当注册中心长时间收不到提供者的心跳时会认为该实例宕机将其从服务的实例列表中剔除当服务有新实例启动时会发送注册服务请求其信息会被记录在注册中心的服务实例列表当注册中心服务列表变更时会主动通知微服务更新本地服务列表
二、Nacos注册中心
我们基于Docker来部署Nacos的注册中心首先我们要准备MySQL数据库表用来存储Nacos的数据。由于是Docker部署所以大家需要将资料中的SQL文件导入到你Docker中的MySQL容器中。 最终表结构如下 在nacos/custom.env文件中有一个MYSQL_SERVICE_HOST也就是mysql地址需要修改为你自己的虚拟机IP地址 将nacos目录上传至虚拟机的/root目录。 进入root目录然后执行下面的docker命令 #解压nacos镜像 docker load -i nacos.tar #运行容器 docker run -d –name nacos –env-file ./nacos/custom.env -p 8848:8848 -p 9848:9848 -p 9849:9849 –restartalways nacos/nacos-server:v2.1.0-slim 启动完成后访问下面地址http://192.168.150.101:8848/nacos/注意将192.168.150.101替换为你自己的虚拟机IP地址。
首次访问会跳转到登录页账号密码都是nacos
三、服务注册
步骤如下
引入依赖配置Nacos地址重启
添加依赖 在pom.xml中添加依赖
!--nacos 服务注册发现--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency配置Nacos 在application.yml中添加nacos地址配置
spring:application:name: item-service # 服务名称cloud:nacos:server-addr: 192.168.150.101:8848 # nacos地址重启item-service。访问nacos控制台可以发现服务注册成功
四、服务发现
引入依赖 在pom.xml中添加下面的依赖
!--nacos 服务注册发现--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency可以发现这里Nacos的依赖于服务注册时一致这个依赖中同时包含了服务注册和发现的功能。因为任何一个微服务都可以调用别人也可以被别人调用即可以是调用者也可以是提供者。
配置Nacos地址 在application.yml中添加nacos地址配置
spring:cloud:nacos:server-addr: 192.168.150.101:8848五、OpenFeign
用OpenFeign组件进行远程调用 其实远程调用的关键点就在于四个
请求方式请求路径请求参数返回值类型
所以OpenFeign就利用SpringMVC的相关注解来声明上述4个参数然后基于动态代理帮我们生成远程调用的代码而无需我们手动再编写非常方便。
快速入门 引入依赖 在cart-service服务的pom.xml中引入OpenFeign的依赖和loadBalancer依赖 !--openFeign--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!--负载均衡器--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependency启用OpenFeign 接下来我们在cart-service的CartApplication启动类上添加注解启动OpenFeign功能 编写OpenFeign客户端 在cart-service中定义一个新的接口编写Feign客户端
其中代码如下 FeignClient(item-service)
public interface ItemClient {GetMapping(/items)ListItemDTO queryItemByIds(RequestParam(ids) CollectionLong ids);
}这里只需要声明接口无需实现方法。接口中的几个关键信息
FeignClient(item-service) 声明服务名称GetMapping 声明请求方式GetMapping(/items) 声明请求路径RequestParam(ids) CollectionLong ids 声明请求参数ListItemDTO 返回值类型
有了上述信息OpenFeign就可以利用动态代理帮我们实现这个方法并且向http://item-service/items发送一个GET请求携带ids为请求参数并自动将返回值处理为ListItemDTO。
我们只需要直接调用这个方法即可实现远程调用了。
使用FeignClient 最后我们在cart-service的com.hmall.cart.service.impl.CartServiceImpl中改造代码直接调用ItemClient的方法