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

ops/2024/11/22 16:52:03/

服务治理

  • 服务治理
    • 注册中心
    • Nacos注册中心
      • 服务注册
      • 服务发现

服务治理

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

  • 服务治理中的三个角色

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

注册中心

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

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

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

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

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

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

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

Nacos注册中心

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

服务注册

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

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

服务发现

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

  1. 引入nacos discovery依赖
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  1. 配置nacos地址
spring:application:name: 服务名称(项目名)cloud:nacos:server-addr: 192.168.75.135:端口 #nacos地址
  1. 服务发现
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进行访问
}

http://www.ppmy.cn/ops/32491.html

相关文章

prometheus+grafana的安装与部署及优点

一、Prometheus 的优点 1、非常少的外部依赖&#xff0c;安装使用超简单&#xff1b; 2、已经有非常多的系统集成 例如&#xff1a;docker HAProxy Nginx JMX等等&#xff1b; 3、服务自动化发现&#xff1b; 4、直接集成到代码&#xff1b; 5、设计思想是按照分布式、微服…

中间件之搜索和数据分析组件Elasticsearch

一、概述 1.1介绍 The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash&#xff08;也称为 ELK Stack&#xff09;。 能够安全可靠地获取任何来源、任何格式的数据&#xff0c;然后实时地对数据进行搜索、分析和可视 化。Elaticsearch&#xff0c;简称为 ES&a…

【平衡二叉树】AVL树(右单旋和左单旋的情况)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | 初阶数据结构 | Linux 文章目录 1. AVL树的定义2. C实现AVL树2.1 插入——左左型的右旋2.2 插入——右右型的左旋 3. 总结 1. AVL树的定…

什么是恶意软件了?

有以下几种: 1.病毒:需要宿主,也就是计算机,其在计算机,等待着特定条件,然后直接破坏系统,删除文件 2.蠕虫: 其不需要宿主,通过计算机网络进行传播,会造成网络拥堵和系统崩溃 3.木马: 就是通过伪装成合法的软件,然后被人安装到电脑上,然后进行恶意操作,盗取个人信息,远程控制计…

【Anaconda 3 】Jupyter Notebook 的安装配置及使用

Jupyter Notebook 的安装配置及使用 一、引言 Jupyter Notebook 是一种交互式笔记本&#xff0c;它允许用户将代码、注释、方程式、可视化内容等整合到一个文档中&#xff0c;并支持多种编程语言&#xff0c;如 Python、R、Julia 等。它在数据科学、机器学习和教育领域中得到…

【R语言数据分析】卡方检验

目录 交叉卡方检验 配对卡方检验 趋势卡方检验 交叉卡方检验 交叉卡方表用于比较组间“率”的差异。适用于分类型变量&#xff0c;被检验的分类变量应该是无序分类变量&#xff0c;分组变量可以是有序分组也可以是无序分组。比如比较两种药物治疗某个疾病的效率&#xff0c;…

go解析含passphrase的pem秘钥

背景 在编写TLS配置时需要用到需要用到一串包含passphrase的RSA秘钥&#xff0c;本想通过官方库的方式解析使用&#xff0c;但由于安全因素&#xff0c;官方已经禁用了DecryptPEMBlock、EncryptPEMBlock、IsEncryptedPEMBlock等函数&#xff0c;导致无法通过官方库去实现这个需…

spring boot “error“: “Not Found“

标题spring boot “error”: “Not Found” {"timestamp": "2024-05-04T07:26:21.15000:00","status": 404,"error": "Not Found","path": "/user/register" }出现以上这个提示可能是如下原因 查看在…