当前位置: 首页 > 科技观察

尽情享受Nacos参数配置吧!更多图片请勿点击

时间:2023-03-22 16:35:33 科技观察

作者|雷哥来源|Java中文社区(ID:javacn666)授权请联系(微信ID:GG_Stone)Nacos中有很多参数,比如:命名空间,组名,服务名,保护阈值,服务路由类型,临时实例等等,什么这些参数是什么意思?如何设置它们?接下来,我们一起来探讨一下。1、命名空间在Nacos中,可以通过命名空间(Namespace)+组(Group)+服务名(Name)来定位一个唯一的服务实例。命名空间(Namespace):Nacos服务中最顶层、最全面的概念,用于对环境或租户等场景进行强制隔离。Nacos服务也需要使用命名空间进行隔离。命名空间可以在Nacos控制台的一级目录下找到,如下图:服务列表中也可以看到命名空间的图,如下图:1.1命名空间的使用默认命名空间是public的,在项目开发中使用,如果没有指定命名空间,会使用默认值public。官方推荐使用运行时环境来定义命名空间。比如生产版可以使用public,开发版可以定义为private。在项目开发中,可以通过配置“spring.cloud.nacos.discovery.namespace”来定义命名空间,如下图:1.2注意事项在使用命名空间之前,必须先在控制台创建命名空间,如下图下图注意:如果不在控制台新建命名空间,直接在项目中使用,是无法在Nacos中成功注册服务的。如下,在项目中配置一个未创建的dev命名空间,如下图:然后启动项目,会发现Nacos控制台的服务列表中没有刷新任何服务实例,如下图:2.组名组名(Group):Nacos中一个低于命名空间的隔离概念,区别于命名空间的强制隔离属性。分组属于弱隔离概念。主要用于在逻辑上区分一些服务使用场景或不同应用中的同名服务。最常见的情况主要是同一个服务的测试分组和生产。分组,或者将应用名称作为一个组来使用,防止不同应用提供的服务重名。组名可以在Nacos控制台的服务列表中看到,如下图:默认的组名是DEFAULT_GROUP,可以通过项目中的“spring.cloud.nacos.discovery.group”来设置,如如下图所示:此项可以省略,省略时默认值为DEFAULT_GROUP。组名可以直接在项目中使用。在像命名空间一样使用它之前,没有必要在控制台中创建一个新的组名。设置组名后,刷新服务列表可以看到新的组名,如下图:3.服务名服务名(Name):服务的实际名称,一般用于描述该服务提供某种功能或能力。一般推荐使用运行环境作为命名空间、应用名称作为组、服务功能作为服务名称的组合,保证服务的天然唯一性。当然,用户可以忽略命名空间和分组,只使用服务名作为服务的唯一性。这就需要用户在定义服务名称的时候加上自己的规则,保证服务在使用中能够唯一定位,不会发现错误的服务。服务名可以在项目中通过“spring.application.name”来指定,如下图所示:4.保护阈值健康保护阈值(ProtectThreshold):为了防止所有的流量都流入剩余的实例,因为过多的实例失败,然后流压会导致剩余的实例被压垮,形成雪崩效应。健康保护阈值应定义为0到1之间的浮点数,当域名健康实例占服务实例总数的比值小于该值时,无论实例是否健康,都会将实例返回给客户端或不。这样虽然丢失了一些流量,但是保证了集群中剩下的健康实例可以正常工作。简单来说,保护阈值是一个0-1的浮点值。保护阈值是集群中健康实例所占比例允许的最小值。如果健康实例的实际比例小于或等于设置的保护阈值,则触发阈值保护,如下图,设置保护阈值为0.75:停止唯一的健康实例,健康比例集群中实例下降到0%,小于设置的保护阈值0.75(75%),此时会触发阈值保护,如下图:5.服务路由类型的设置服务路由类型如下图所示:用于设置服务的路由策略,默认值为none。如果这个值设置为标签(label)模式,则需要设置相应的标签表达式来匹配实例选择器(Selector)。实例选择器可以用来完成自定义的负载均衡策略。比如我们可以自定义实例选择器,实现就近访问的负载均衡策略,这样消费者调用时,会优先调用距离自己较近的IP节点,从而实现更高效的服务调用。6.Weight权重(Weight):实例的级别配置。权重是范围为0-10000的浮点数。权重越大,分配给实例的流量就越大。是为服务实例设置的,如下图:7.临时实例Nacos中有两种类型(types)的服务实例:持久化实例和临时化实例(也叫非持久化实例)。当控制台中“临时实例”为true时,表示该服务是一个临时实例,如下图: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,如下图:7.3注意事项一旦确定了服务的实例类型,就不能允许在整个生命周期内修改。如果尝试修改实例类型会提示如下错误:SummaryNacos可以通过命名空间+组名+服务名定位到唯一的实例。通常推荐使用运行环境作为命名空间、应用名称作为组、服务功能作为服务名称的组合来定义服务。保护阈值是通过牺牲部分流量来保证集群中剩余的健康实例能够正常工作的一种手段。服务路由类型和权重都用于定义Nacos路由规则,临时实例和持久实例是Nacos中的两种实例类型。