玩转Nacos参数配置!多图勿点

0ce808a8090c96156e69de1737fcf1e5.png

作者 | 磊哥

来源 | Java中文社群(ID:javacn666)

转载请联系授权(微信ID:GG_Stone)

Nacos 中的参数有很多,如:命名空间、分组名、服务名、保护阈值、服务路由类型、临时实例等,那这些参数都是什么意思?又该如何设置?接下来我们一起来盘它。

1.命名空间

在 Nacos 中通过命名空间(Namespace)+ 分组(Group)+服务名(Name)可以定位到一个唯一的服务实例。fd9799426d3de52e169f641a1e88ab5f.png命名空间(Namespace):Nacos 服务中最顶层、也是包含范围最广的概念,用于强制隔离类似环境或租户等场景。Nacos 的服务也需要使用命名空间来进行隔离。命名空间在 Nacos 控制台的一级目录里可以找到,如下图所示:f4fe168a6e81ccc41352a9030657ff34.png在服务列表中也能看到命名空间的身影,如下图所示:de283c2d2a4a8c544bec1d698d3114af.png

1.1 命名空间用法

命名空间默认为 public,在项目开发中,如果不指定命名空间,那么会使用默认值 public。官方推荐使用运行环境来定义命名空间,如生产版本可使用 public,开发版可定义为 private。在项目开发中,可通过配置“spring.cloud.nacos.discovery.namespace”来定义命名空间,如下图所示:41752b1bfd323634b1019557d78e4092.png

1.2 注意事项

命名空间在使用前,必须先在控制台新建命名空间,如下图所示:3962586afb31a4045ac9c70349bfa0e8.png如果在控制台没有新建命名空间,直接在项目中使用的话,是不能将服务成功的注册到 Nacos 中的,如下在项目中配置了一个未新建的 dev 命名空间,如下图所示:926f80ef45726fe86d527869f3237fe0.png然后启动项目,此时会发现,在 Nacos 控制台的服务列表中一直刷新不到任何服务实例,如下图所示:2792bda24c43068d13bda8fe5927c5d8.png

2.分组名

分组名(Group):Nacos 中次于命名空间的⼀种隔离概念,区别于命名空间的强制隔离属性,分组属于⼀个弱隔离概念,主要用于逻辑区分⼀些服务使用场景或不同应用的同名服务,最常用的情况主要是同⼀个服务的测试分组和生产分组、或者将应用名作为分组以防止不同应用提供的服务重名。分组名在 Nacos 控制台的服务列表中可以看到,如下图所示:b15d329bd79f66d42024bc1e61ea736a.png分组名默认为 DEFAULT_GROUP,在项目中可通过“spring.cloud.nacos.discovery.group”来设置,如下图所示:c4d2cb4dc557755738011086f2c6c574.png此项可省略,省略时的默认值为 DEFAULT_GROUP。分组名可以直接在项目中使用,无需像命名空间那样,在使用前还要在控制台中新建,设定了分组名之后,刷新服务列表就可以看到新的分组名称了,如下图所示:cc18ed067b12dd5e30085066b222ff95.png

3.服务名

服务名(Name):该服务实际的名字,⼀般用于描述该服务提供了某种功能或能力。通常推荐使用由运行环境作为命名空间、应用名作为分组,服务功能作为服务名的组合来确保该服务的天然唯⼀性,当然使用者可以忽略命名空间和分组,仅使用服务名作为服务唯⼀标示,这就需要使用者在定义服务名时额外增加自己的规则来确保在使用中能够唯⼀定位到该服务而不会发现到错误的服务上。服务名在项目中可以通过“spring.application.name”来指定,如下图所示:4f6c9f06ef6ca2e06b318aee61be4a93.png

4.保护阈值

健康保护阈值(ProtectThreshold):为了防止因过多实例故障,导致所有流量全部流入剩余实例,继而造成流量压力将剩余实例被压垮形成雪崩效应。应将健康保护阈值定义为⼀个 0 到 1 之间的浮点数。当域名健康实例数占总服务实例数的比例小于该值时,无论实例是否健康,都会将这个实例返回给客户端。这样做虽然损失了⼀部分流量,但是保证了集群中剩余健康实例能正常工作。简单来说,保护阈值是一个 0-1 的浮点值,保护阈值是允许集群中健康实例占比的最小值,如果实际健康实例的占比小于或等于设置的保护阈值时,就会触发阈值保护,如下图所示,设置保护阈值为 0.75:4dafbb8082ddb9f34c178d24d33e1aad.png停掉唯一的健康实例,集群的健康实例占比降成了 0%,小于设置的保护阈值 0.75(75%),此时就会触发阈值保护,如下图所示:3989c0b093bca11dbfe9ddfc66076ff5.png

5.服务路由类型

服务路由类型的设置如下图所示:8fa8c51147c2a2cdd95c4a5c633e2a88.png它是用来设置服务的路由策略的,默认值为 none。如果设置此值为 label(标签)模式,需要设置相应的标签表达式来匹配实例选择器(Selector),通过实例选择器可以完成自定义负载均衡策略,比如我们可以自定义实例选择器,实现就近访问的负载均衡策略,这样消费者在调用时,会优先调用离自己比较近的 IP 节点,从而实现更高效的服务调用。

6.权重

权重(Weight):实例的级别配置。权重为浮点数,范围为 0-10000。权重越大,分配给该实例的流量越大。它是针对服务实例进行设置的,如下图所示:8b49b02bccdb46d3bafed7a45adb60a8.png

7.临时实例

在 Nacos 中服务实例有两种(类型):持久化实例和临时实例(也叫非持久化实例)。当控制台中“临时实例”为 true 时,表示此服务为临时实例,如下图所示:d7f0e8e17b1cf00658b009d85359918d.png

7.1 临时实例 VS 持久化实例

临时实例和持久化实例的区别主要有以下两点:

  • 临时实例在非健康状态下会被自动剔除,而持久化实例不会被自动剔除。

  • 临时实例的健康状况是 Nacos 客户端以固定频率(5s一次)上报给 Nacos 服务器端的,而持久化实例是 Nacos 服务器端主动探测的。

7.2 实例类型设置

在项目开发中,可以通过设置“spring.cloud.nacos.discovery.ephemeral”来指定服务的实例类型,默认为临时实例,也就是默认“spring.cloud.nacos.discovery.ephemeral=true”。如果要设置持久化实例,需要设置“spring.cloud.nacos.discovery.ephemeral”设置为 false,如下图所示:dbf2c63804430dac881acc1cdb232da7.png

7.3 注意事项

服务的实例类型一旦确定之后,整个生命周期内不允许被修改,如果试图修改实例类型会提示如下错误:1502d6d55c587bc36f0c9e0e26b4b0c5.png

总结

Nacos 中通过命名空间 + 分组名 + 服务名可以定位到一个唯一实例,通常推荐使用由运行环境作为命名空间、应用名作为分组,服务功能作为服务名的组合来定义服务。保护阈值是牺牲⼀部分流量,保证集群中剩余健康实例能正常工作的一种手段。服务路由类型和权重都是用来定义 Nacos 路由规则的,而临时实例和持久化实例是 Nacos 中的两种实例类型。

参考&鸣谢

《Nacos框架与原理》

是非审之于己,毁誉听之于人,得失安之于数。

公众号:Java中文社群

面试合集:https://gitee.com/mydb/interview

cc4c247659aec3cc7e777e5cd71b5357.gif

往期推荐

芭比扣了!Nacos中服务删除不了,肿么办?

2022-02-17

0d0c63165a5c639b3c62cba55072e738.png

Nacos服务注册与发现的2种实现方法!

2022-02-09

2abfd9c2b05b0169d2b9ab6c67e3f5a5.png

Spring Cloud Alibaba Nacos 服务注册与发现功能实现!

2022-02-07

9677efe250ec6de66379f8d1cf7128ed.png

求点赞、在看、分享三连f85cf9788fc0edead56a4df75859e27d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544290.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么wait/notify必须要和synchronized一起使用?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)在多线程编程中,wait 方法是让当前线程进入休眠状态,直到另一个线程调用了 notify 或 notify…

Magento Add Fee or Discount to Order Totals

2019独角兽企业重金招聘Python工程师标准>>> In this tutorial, we will see how to add new line item to magento order totals. What this means is that, how to add an additional Fee or Discount, or any kind of charge to order total of the magento chec…

再见 Feign!推荐一款微服务间调用神器,跟 SpringCloud 绝配!

在微服务项目中,如果我们想实现服务间调用,一般会选择Feign。之前介绍过一款HTTP客户端工具Retrofit,配合SpringBoot非常好用!其实Retrofit不仅支持普通的HTTP调用,还能支持微服务间的调用,负载均衡和熔断限…

Spring Cloud Alibaba Nacos 的 2 种健康检查机制!

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)Spring Cloud Alibaba Nacos 作为注册中心不止提供了服务注册和服务发现功能,它还提供了服务可用性监测的机制。…

Python之包管理工具

在Python环境中已经有很多成熟的包,可以通过安装这些包来扩展我们的程序。 例如,很多时候Python开发人员都会去PyPI网站去查找自己想要使用的包,然后进行安装。PyPI ( Python Package Index)是获得第三方 Python 软件包…

为什么wait和notify必须放在synchronized中?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)在多线程编程中,wait 方法是让当前线程进入休眠状态,直到另一个线程调用了 notify 或 notify…

聊聊并发编程的10个坑

前言对于从事后端开发的同学来说,并发编程肯定再熟悉不过了。说实话,在java中并发编程是一大难点,至少我是这么认为的。不光理解起来比较费劲,使用起来更容易踩坑。不信,让继续往下面看。今天重点跟大家一起聊聊并发编…

macbook终端使用记(二)终端快捷键

为什么80%的码农都做不了架构师?>>> Command K清屏 Command T新建标签 Command M最小化窗口 Command W 关闭当前标签页 Command S 保存终端输出 Command D 垂直分隔当前标签页 Command Shift D 水平分隔当前标签页 Command shift {或}向左/向…

颜值爆表!Redis 官方可视化工具来啦,功能真心强大!

最近逛了一下Redis官方网站,发现Redis不仅推出了很多新特性,而且还发布了一款可视化工具RedisInsight。试用了一下感觉非常不错,最关键的是能支持RedisJSON之类的新特性,这是第三方工具无法比拟的。今天带大家体验一下RedisInsigh…

20个响应式网页设计中的“神话”误区

关于响应式网页的重要性我们已经证实了很长时间了,现在是该把焦点放到如何做出好的响应式网页设计的时候了。一起来看看吧! 虽然很多人都在谈论响应式网页,但并不是每个人都知道他们在说什么。很多时候你看到网上的一些信息也在挑战你对响应式…

MySQL 索引失效的 15 种场景!

背景 无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑。常见的现象就是:明明在字段上添加了索引,但却并未生效。前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参数下生效…

Java夺命21连问!(附答案)

大家好,我是磊哥。有位朋友工作三年,去面试,给大家整理一下面试题,并附上答案。Mysql索引在什么情况下会失效MySql的存储引擎InnoDB与MyISAM的区别Mysql在项目中的优化场景,慢查询解决等Mysql有什么索引,索…

SpringCloud Nacos + Ribbon 调用服务的 2 种方法!

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在 Nacos 中,服务调用主要是通过 RestTemplate Ribbon 实现的,RestTemplate 是 Spring 提供的 Rest…

SpringCloud Ribbon中的7种负载均衡策略!

作者 | 磊哥来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们…

线程池是如何执行的?拒绝策略有哪些?

作者 | 磊哥来源 | Java面试真题解析(ID:aimianshi666)转载请联系授权(微信ID:GG_Stone)聊到线程池就一定会聊到线程池的执行流程,也就是当有一个任务进入线程池之后,线程池是如何执…

浮动元素的均匀分布和两端对齐

当我们使用float来使元素并排显示的时候,可以使用margin来控制元素之间的距离,而在很多版式里(例如产品图片的列表),需要浮动的元素达到两端对齐的效果,如图1所示。 图1 两端对齐的版式 单纯使用float:left…

20 图|Nacos 手摸手教程

Nacos 作为服务注册中心、配置中心,已经非常成熟了,业界的标杆,在讲解 Nacos 的架构原理之前,我先给大家来一篇开胃菜:讲解 Nacos 如何使用。涉及到如下两个话题:用 Nacos 作为注册中心。用 Nacos 作为配置…

为什么Spring需要三级缓存解决循环依赖,而不是二级缓存?

来源:https://www.cnblogs.com/semi-sub/p/13548479.html在使用spring框架的日常开发中,bean之间的循环依赖太频繁了,spring已经帮我们去解决循环依赖问题,对我们开发者来说是无感知的,下面具体分析一下spring是如何解…

20款华丽的几何形状字体【免费下载】

这里手机的字体使用几何形状设计。流畅简洁的线条,完美的圆形的角度建立一个完整性的设计感。使用几何形状生成出每一个优雅而现代的字母。这些字体可以用于标题和正文。由于他们的设计适合任何干净简约设计,因此很受欢迎。向下滚动并下载这些免费几何字…

MySQL 精选 60 道面试题(含答案)

金三银四到了,给大家整理一些数据库必知必会的面试题。基础相关1、关系型和非关系型数据库的区别?关系型数据库的优点容易理解,因为它采用了关系模型来组织数据。可以保持数据的一致性。数据更新的开销比较小。支持复杂查询(带 wh…