我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nacos Discovery服务治理解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nacos Discovery服务治理解决方案

前言

上一章中,我们利用用户–订单–商品,实现了三个简单的微服务,实现了微服务之间的调用。但不知道大家有没有发现,我们是通过硬编码的方式,把服务者,消费者的服务Url,写到了代码中,这样做肯定是不行的,存在着许多的问题,比如:

一旦服务提供者地址变化,就需要手工修改代码一旦是多个服务提供者,无法实现负载均衡功能一旦服务变得越来越多,人工维护调用关系困难

那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理

服务治理

什么是服务治理?

服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。

  • 服务注册: 在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
  • 服务发现: 服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。

常见的注册中心

Zookeeper

zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。

如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

Eureka

Eureka是Springcloud Netflix中的重要组件,主要作用就是做服务注册和发现。但是现在已经闭源。如果是打算新建微服务到话,不推荐使用Eureka了。

Consul

Consul是基于GO语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现 和配置管理的功能。Consul的功能都很实用,其中包括:服务注册/发现、健康检查、Key/Value 存储、多数据中心和分布式一致性保证等特性。

Consul本身只是一个二进制的可执行文件,所以安装和部署都非常简单,只需要从官网下载后,在执行对应的启动脚本即可。

Nacos

Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台

它是SpringCloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为nacos=eureka+config

Nacos 入门

Nacos 官网介绍:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

从上面的介绍就可以看出,nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

搭建nacos环境

第1步: 安装nacos

下载地址: https://github.com/alibaba/nacos/releases

下载zip格式的安装包,然后进行解压缩操作。

第2步: 启动nacos

#切换目录
cd nacos/bin
#命令启动
startup.cmd -m standalone

第3步: 访问nacos

打开浏览器输入http://localhost:8848/nacos

即可访问服务, 默认密码是nacos/nacos

将商品微服务注册到nacos

接下来开始修改 shop-product 模块的代码, 将其注册到nacos服务上 。

1、在pom.xml中添加nacos的依赖

<!--nacos客户端-->
<dependency>
	<groupId>com.alibaba.cloud</groupId> 
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

2、在主类上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class ProductApplication{
	......
}

3 在application.yml中添加nacos服务的地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

4、启动服务, 观察nacos的控制面板中是否有注册上来的商品微服务

将订单微服务注册到nacos

接下来开始修改 shop_order 模块的代码, 将其注册到nacos服务上。

1、在pom.xml中添加nacos的依赖

<!--nacos客户端-->
<dependency>
	<groupId>com.alibaba.cloud</groupId> 
	<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
</dependency>

2、在主类上添加@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication{
	.....
}

3、在application.yml中添加nacos服务的地址

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

4、修改OrderController, 实现微服务调用

@RestController
@Slf4j
public class OrderController {

	@Autowired
	private RestTemplate restTemplate;
	@Autowired
	private OrderService orderService;
	@Autowired
	private DiscoveryClient discoveryClient;
	
	//准备买1件商品
	@GetMapping("/order/prod/{pid}")
	public Order order(@PathVariable("pid") Integer pid) {
 		 log.info(">>客户下单,这时候要调用商品微服务查询商品信息"); 
 		 //从nacos中获取服务地址
		ServiceInstance serviceInstance = discoveryClient.getInstances("service-product").get(0); 
		String url = serviceInstance.getHost() + ":" +serviceInstance.getPort(); 
		log.info(">>从nacos中获取到的微服务地址为:" + url);
		 //通过restTemplate调用商品微服务
		Product product = restTemplate.getForObject(
		"http://" + url + "/product/" + pid, Product.class); 
		log.info(">>商品信息,查询结果:" + JSON.toJSONString(product));
		Order order = new Order();
		order.setUid(1);
		order.setUsername("测试用户");
	    order.setPid(product.getPid());
	 }
}

DiscoveryClient是专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服务。

5、启动服务, 观察nacos的控制面板中是否有注册上来的订单微服务,然后通过访问消费者服务验证调 用是否成功

总结

这篇文章我们简单的实现了如何利用服务治理来管控微服务。那么对应的又引发一个问题,如果集群中用户访问量在某一瞬间达到最高点,可能会造成服务的瘫痪,这怎么解决呢?相信大家都知道负载均衡技术,也知道这里需要用到负载均衡,但在微服务中,如何实现服务调用的负载均衡呢?我们下篇文章再讲。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nacos Discovery服务治理解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nacos Discovery服务治理解决方案

DiscoveryClient是专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服务,这篇文章主要介绍了Nacos Discovery服务治理,需要的朋友可以参考下
2022-11-13

业务监控管理解决方案

第 1 章 方案背景1.1. 方案背景随着网络与自动化的建设,各个企业信息化程度已经达到了较高水平。信息技术在提高管理水平,促进业务创新,提升企业竞争力方面发挥着日益重要的作用。显而易见,基本上所有的业务系统都架设在网络之上以提供服务。然
2023-06-04

阿里云服务器PPTP解决方案

随着企业数字化转型的加速,企业对网络环境的需求日益提高。其中,PPTP(Point-to-PointTunnelingProtocol)作为一种快速、简单的远程接入协议,受到了众多企业的青睐。然而,由于PPTP存在安全风险,部分企业选择了其他解决方案。本文将介绍阿里云服务器如何解决企业PPTP需求。详细说明:阿里
阿里云服务器PPTP解决方案
2023-11-05

阿里云服务器安装ss代理服务器异常解决方案

阿里云服务器是阿里云推出的一种弹性计算服务,可以为企业提供高效、灵活的计算资源。然而,在安装ss代理服务器时,可能会遇到一些异常情况,例如安装失败、配置错误等。本文将针对这些问题,提供详细的解决方案。一、安装失败如果阿里云服务器安装ss代理服务器失败,可能的原因有以下几种:硬件配置不足:阿里云服务器的硬件配置可能
阿里云服务器安装ss代理服务器异常解决方案
2023-12-11

如何选择云服务器解决方案

如何选择云服务器解决方案?随着云计算技术的快速发展,越来越多的企业和个人正在将他们的业务迁移到云服务器上。选择适合自己的云服务器方案是非常重要的,能够为您的业务提供稳定的支持和高效的运行。下面是一些建议,帮助您在选择云服务器方案时做出明智的决策。
如何选择云服务器解决方案
2024-01-24

阿里云服务器漏洞解决方案

阿里云服务器是目前市场上最受欢迎的云计算服务之一,但与任何其他技术一样,它也存在一些安全漏洞。本文将探讨阿里云服务器漏洞解决方案,帮助用户了解如何保护自己的云服务器免受攻击。详细说明:1.更新和修补程序阿里云服务器漏洞的最常见解决方案之一是定期更新和修补程序。阿里云会及时发布安全补丁,以修复已知的漏洞。用户应该及
阿里云服务器漏洞解决方案
2024-01-18

云服务器挂载硬盘解决方案

1.确认硬盘状态在解决云服务器挂载硬盘问题之前,首先需要确认硬盘的状态。可以通过以下步骤进行确认:登录云服务器管理控制台。找到对应的云服务器实例,并进入实例详情页面。在实例详情页面中,查看硬盘的状态是否正常。如果硬盘状态显示为“已挂载”,则表示硬盘已经成功挂载到云服务器上。2.检查硬盘是否正确连接如果硬盘状态显示为“未
2023-10-27

阿里云代理服务器高效可靠的解决方案

在当今信息化时代,互联网已成为企业和个人生活中不可或缺的一部分。代理服务器作为一种重要的网络工具,为企业和个人提供了高效、可靠的网络解决方案。而阿里巴巴云作为中国最大的云计算平台之一,其提供的代理服务器产品更是备受关注。那么,阿里云做代理服务器是否可行呢?本文将对此进行详细的说明。一、阿里云代理服务器的优势高性能
阿里云代理服务器高效可靠的解决方案
2023-11-20

FSO在Win2000服务器中的解决方案

ASP 执行时,是以“IUSR_机BqUdN器名”的身份访问硬盘的,这里没给该用户帐号权限,ASP 也就不能读写硬盘上的文件了。 解决方法:在服务器上打开资源管android理器,用鼠标右键点击asp文件所在目录或硬
2023-05-23

服务器存储解决方案怎么写

服务器存储解决方案是指通过使用不同的硬件和软件工具来实现有效的数据管理和存储。以下是一些可以用于服务器存储解决方案的技术和方法:1. RAID技术:RAID(冗余磁盘阵列)技术可以将多个硬盘组合在一起,以提高数据的容错性和性能。RAID技术
2023-05-30

linux服务器显卡崩溃解决方案

在登录界面出现分辨率特别大,整个图形界面特别大,并且怎么也登录不上去的情况时 对于这种情况,一般就是显卡驱动崩了的原因,所以我们可以首先检查显卡驱动是否有问题 nvidia -smi如果出现说驱动链接不上什么的问题,就是说明你的显卡驱动出现
2022-06-03

windows7打开telnet服务失败解决方案

windows7电脑中客户要想开启telnet服务却出现的失败的情况,这要怎么办呢,最先大家打开电脑的操作面板,点击程序和功能选项,勾选Telnet客户端和Telnet服务器这个2个选项,点击确定开始安装telnet服务,等候安装完毕后就开
2023-07-11

云服务器数据迁移解决方案

云服务器数据迁移解决方案通常需要包括以下步骤:数据导入:首先需要在云服务器上进行数据导入工作,可以使用数据迁移工具将服务器端的文件或数据文件导入到云服务器的数据中心,也可以从云服务器的数据中心导入数据。导入过程需要注意数据导入的完整性和一致性,确保导入的数据准确无误。数据备份:云服务器数据迁移过程中需要对服务器上的数据进行备份,以防止数据丢失或损坏。备份可以采用本地备份和网络备份相结合的方式进行。导出数据...
2023-10-27

阿里云服务器延时解决方案

在使用阿里云服务器的过程中,可能会遇到服务器延时的问题。那么,阿里云服务器延时怎么解决呢?本文将为你详细介绍解决阿里云服务器延时的方法和步骤。正文:阿里云服务器是阿里巴巴推出的一款弹性云计算产品,具有灵活、高效、稳定的特点。然而,在使用过程中,可能会遇到服务器延时的问题,这不仅影响了服务器的使用体验,还可能影响到
阿里云服务器延时解决方案
2023-10-31

云服务器交互失败:解决方案

1.检查网络连接首先,我们需要确保云服务器的网络连接正常。检查以下几个方面:确认服务器的网络配置是否正确,包括IP地址、子网掩码、网关等。检查服务器的网络设备(如网卡)是否正常工作,可以尝试重新启动服务器或更换网卡。检查服务器所在的网络环境,确保网络设备(如路由器、交换机)正常工作,网络连接稳定。2.检查防火墙设置防火
云服务器交互失败:解决方案
2023-10-28

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录