【微服务】服务治理(Nacos注册中心)

服务治理

服务治理

RestTemplate进行服务间的相互调用是非常有问题的,如果服务备份多个服务器,进行集群服务,而且在开发阶段,我们也不知道其它服务器的地址,那这时我们将如何进行服务器之间的相互调用,我们就需要用到注册中心技术

  • 服务治理中的三个角色

服务提供者:暴露服务接口,供其他服务调用
服务消费者:调用其它服务提供的接口
注册中心:记录并监控微服务各个实例状态,推送变更信息

注册中心

服务提供者会在启动的时候注册自己信息到注册中心,消费者可以从注册中心订阅和拉取服务信息

我的理解:在现在一个服务备份多个分布在多台服务器上,当多个服务启动就将自己挂到注册中心,共消费者选择,起到一个公共黑板墙的作用

  • 消费者符合得知服务状态变更

服务提供者通过心跳机制向注册中心报告自己的健康状态,当心跳异常时注册中心会将异常服务剔除,并通知订阅了该服务的消费者

  • 多个实例,消费者如何选择

消费者可以通过负载均衡算法,从多个实例中选择一个

那么如何实现注册中心,下面提到注册中心技术Nacos

Nacos注册中心

Nacos是目前国内企业中占比最多的注册中心组件,它是阿里巴巴的产品,目前已经存在于SpirngCloudAlibaba中

服务注册

如何将服务注册到注册中心当中:

  1. 引入依赖nacos discovery
java 复制代码
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 配置Nacos地址
yml 复制代码
spring:
  application:
     name: 服务名称(项目名)
  cloud:
     nacos:
       server-addr: 192.168.75.135:端口 #nacos地址

服务发现

消费者需要连接nacos以拉取和订阅服务

  1. 引入nacos discovery依赖
java 复制代码
<dependency>
     <groupId>com.alibaba.cloud</groupId>
     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 配置nacos地址
yml 复制代码
spring:
  application:
     name: 服务名称(项目名)
  cloud:
     nacos:
       server-addr: 192.168.75.135:端口 #nacos地址
  1. 服务发现
java 复制代码
private final DiscoveryClient discoveryClient;
private void handleCartItems(List<CartVO> vos){
    //根据服务名称,拉取服务的实例列表
    List<ServiceInstance> instances =discoveryClient.getInstances("服务名称");
    //负载均衡,挑选一个实例
    ServiceInstance instance=instances.get(RandomUtil.randomInt(instances.size()));
    //获取实例的IP和端口
    URI uri=instance.getUri();
    //拿到位置之后再通过RestTemplate进行访问
}
相关推荐
DKunYu6 小时前
7.SpringCloudConfig
spring cloud·微服务
一条咸鱼_SaltyFish9 小时前
[Day10] contract-management初期开发避坑指南:合同模块 DDD 架构规划的教训与调整
开发语言·经验分享·微服务·架构·bug·开源软件·ai编程
CRUD酱9 小时前
微服务分模块后怎么跨模块访问资源
java·分布式·微服务·中间件·java-ee
better_liang11 小时前
每日Java面试场景题知识点之-Docker容器化部署
java·docker·微服务·devops·容器化·企业级开发
齐 飞15 小时前
Spring Cloud Alibaba快速入门-分布式事务Seata(下)
分布式·spring cloud·微服务
小北方城市网17 小时前
第 5 课:服务网格(Istio)实战|大规模微服务的流量与安全治理体系
大数据·开发语言·人工智能·python·安全·微服务·istio
AC赳赳老秦17 小时前
Go语言微服务文档自动化生成:基于DeepSeek的智能解析实践
大数据·开发语言·人工智能·微服务·golang·自动化·deepseek
没有bug.的程序员17 小时前
Istio 架构全景解析:控制面 vs 数据面、核心组件与流量路径深度拆解
微服务·云原生·架构·istio·架构设计·envoy·servicemesh
无心水17 小时前
【分布式利器:腾讯TSF】2、腾讯微服务框架TSF实战指南:Spring Boot零侵入接入与容器化部署全流程
java·spring boot·分布式·微服务·springcloud·分布式利器·腾讯tsf
lhrimperial19 小时前
深入浅出Spring Cloud Gateway:从理论到企业级实践(一)
spring cloud·微服务·系统架构·gateway