当前位置: 首页 > news >正文

Nacos系列:Nacos 控制台手册

在这里插入图片描述

引言

  Nacos是阿里巴巴中间件部门开源的一款用于服务发现和配置管理的产品,Nacos 控制台主要旨在于增强对于服务列表、健康状态管理、服务治理、分布式配置管理等方面的管控能力,以便进一步帮助用户降低管理微服务应用架构的成本。

一、访问 Nacos 控制台

1.1 登录管理

  Nacos Server 运行成功后我们可以打开后台管理界面,查看其运行状态和管理信息。在浏览器访问 http://ip:8848/nacos ,默认会跳转到以下登录页面,默认的账号和密码都为:nacos。

image

  登录后可以看到如下界面,默认进入nacos管理中心,此时还没有服务注册进来,所以服务列表是空的。右上角的内容就是一些超链接,能够跳转到 Nacos 的官网等地方

image

  由于部分公司自己开发控制台,不希望被nacos的安全filter拦截。因此nacos支持定制关闭登录功能找到配置文件 application.properties, 替换以下内容即可。

## spring security config
### turn off security
spring.security.enabled=false
management.security=false
security.basic.enabled=false
nacos.security.ignore.urls=/**# nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**

注意:默认会话保持时间为30分钟,30分钟后需要重新登录认证,暂时不支持修改该默认时间。

1.2 功能菜单

  登录成功后可以看到左侧的菜单栏,主要功能有:配置管理、服务管理、权限管理、命名空间、集群管理,如下表所示:

一级菜单二级菜单说明
配置管理主要是管理配置中心的所有配置文件
配置列表查询、添加、修改配置数据
历史版本
监听查询
服务管理
服务列表用于展示已经注册到 Nacos Server的服务列表以及服务的基本信息
订阅者列表服务消费方以及包括客户端的版本信息等
权限控制用于维护管理后台系统的用户角色和权限,一般的系统都有这个功能
用户列表用于查询、修改、删除、添加用户
角色管理用于查询、修改、删除、添加角色
权限管理
命名空间用于将服务的注册订阅信息在逻辑上隔离开来
集群管理
节点列表用于查看集群节点、查看节点元数据、下线节点

二、配置管理

  应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。如果服务中配置都放在代码中或者项目里的配置文件中,那么我们想要修改配置,就不得不修改代码,提交上线、重启服务。但若是我们使用统一配置管理,就可以在服务启动的时候从配置管理服务读取配置,启动后,修改配置后,也会主动通知我们的服务。Nacos 提供了动态配置服务,支持基于 Namespace 和 Group 的配置分组管理,以便更灵活的根据自己的需要,实时进行服务应用的配置变更,让配置管理变得更加高效和快捷。

image

  它基于 key/value 方式存储应用配置和其他元数据信息,为分布式系统中的外部化配置提供服务器端和客户端支持,以便用户更灵活的根据自己的需要按照环境或者应用、模块等分组管理微服务以及Spring的大量配置。在配置管理中主要提供了配置历史版本、回滚、订阅者查询等核心管理能力。

2.1 配置列表

  点击Nacos控制台的【配置管理 -> 配置列表】,即可看到以下图所示。界面中展示了不同 namespace 下的配置集列表,可以点击左上角的不同 namespace 进行切换,右上角“+"号或点击某配置集后的编辑按钮可进入配置集编辑器。

image  在 nacos 服务端默认是没有任何配置的,我们可以在配置列表页面新增一个配。在命名空间public中点击右边+号来新建配置或点击某配置集后的编辑按钮,如下图所示。

image

  Nacos支持 YAML、Properties、TEXT、JSON、XML、HTML 等常见配置格式在线编辑、语法高亮、格式校验,帮助用户高效编辑的同时大幅降低格式错误带来的风险。Nacos支持配置标签的能力,帮助用户更好、更灵活的做到基于标签的配置分类及管理。同时支持用户对配置及其变更进行描述,方面多人或者跨团队协作管理配置。

  当我们在修改配置文件的时候,最容易出现的就是误修改某些内容,好在Nacos支持编辑DIFF能力,帮助用户校验修改内容,降低改错带来的风险。

image

  Nacos 提供示例代码能力,能够让新手快速使用客户端编程消费该配置,大幅降低新手使用门槛。

image

注意: 在 Mac 上进行同样的操作,会发现提示: "导入失败! 未读取到合法数据,请检查导入的数据文件。"这个是由于mac系统自带的 .DS_store 文件,Nacos 读取的时候会出现异常,所以需要清除 .DS_store 文件。

2.2 历史版本

  Nacos 通过提供配置版本管理及其一键回滚能力,帮助用户改错配置的时候能够快速恢复,降低微服务系统在配置管理上的一定会遇到的可用性风险。Nacos中,修改配置点击发布后会创建一个对应的历史版本快照,我们可以在Nacos控制台的历史版本列表中找到这些快照,点击回滚按钮即可将配置恢复到指定的版本。

image

2.3 监听查询

  Nacos 提供配置订阅者即监听者查询能力,可以查看配置是否推动更新成功。同时提供客户端当前配置的MD5校验值,以便帮助用户更好的检查配置变更是否推送到 Client 端,如下图所示:

image

三、服务管理

  开发者或者运维人员往往需要在服务注册后,通过友好的界面来查看服务的注册情况,包括当前系统注册的所有服务和每个服务的详情。并在有权限控制的情况下,进行服务的一些配置的编辑操作。Nacos 控制台的服务发现部分,主要就是提供用户一个基本的运维页面,能够查看、编辑当前注册的服务。

3.1 服务列表

3.1.1 服务列表页面

  服务列表页面主要展示已经在Nacos注册的服务列表以及服务的基本信息等,整体界面布局是左上角有一个支持根据服务名搜索服务的搜索框和搜索按钮,页面中央是服务列表的展示。服务列表主要展示服务名、集群数目、实例数目、健康实例数目和详情按钮五部分,如下图所示。我们可以按照服务名称进行搜索,后面的隐藏空服务意思是我们可以创建一个空服务,这个空服务暂时没有任意一个实例,它就只是创建了,占了一个位置等待Nacos Client来进行注册。

image

3.1.2 创建服务页面

  我们可以点击创建服务的按钮来进行创建空服务,然后输入服务名和保护阀值,如下图所示,点击确定后的服务列表就会显示出刚刚创建的服务。

image

  其中,服务名⼀般用于描述该服务提供了某种功能或能力,服务名作为服务唯⼀标示,需要确保在使用中能够唯⼀定位到该服务,在项目中可以通过 spring.application.name 来指定,如下所示:

spring.application.name=spring-cloud-nacos-producer

  服务实例分为健康的实例和不健康的实例,默认在5秒之后Nacos注册中心还没有收到某个实例的心跳就认为这是一个不健康的实例,当30秒还没有收到心跳就把这个服务实例剔除掉。再上图中提到保护阈值,我们可以设置一个0~1之间的数,来进行雪崩保护。如果不设置,默认是0,也就是不开启雪崩保护,当 健康的实例数 / 总实例数 < 保护阀值 就会触发雪崩保护。我们一般也不会设置保护阀值,因为后面一般会结合sentinel服务熔断降级来完成雪崩保护,Nacos 主要还是做注册中心的工作。

  上图中提到分组,这是 Nacos 中次于命名空间的⼀种隔离概念,区别于命名空间的强制隔离属性,分组属于⼀个弱隔离概念,主要用于逻辑区分⼀些服务使用场景或不同应用的同名服务,最常用的情况主要是同⼀个服务的测试分组和生产分组,或者将应用名作为分组以防止不同应用提供的服务重名。分组名默认为 DEFAULT_GROUP,在项目中可通过 spring.cloud.nacos.discovery.group 来设置,如下所示:

# 指定 nacos 中的分组名
spring.cloud.nacos.discovery.group=DEV_GROUP

此项可省略,省略时的默认值为 DEFAULT_GROUP。 分组名可以直接在项目中使用,无需像命名空间那样,在使用前还要在控制台中新建,设定了分组名之后,刷新服务列表就可以看到新的分组名称了。

3.1.3 服务详情页面

  在服务列表页面点击“详情”按钮,就会进入服务详情页面。服务详情页面展示的是一个服务的所有关键信息,包括服务的配置和元数据、集群列表和示例列表,以及一些操作的按钮,如下图所示:

image

  在该页面的上方,是服务的配置和元信息,目前包含服务名、保护阈值、健康检查模式以及元数据metadata。右上方是编辑服务按钮,点击后会有对话框弹出,可以对服务的配置进行编辑。例如服务的元数据编辑,首先点击服务详情页右上角的“编辑服务”按钮,然后在元数据输入框输入:version=1.0,env=prod。

image

  服务详情的下方,是集群列表和集群下的实例列表。实例列表将会分页展示该集群下注册的所有实例,展示的信息有IP、端口、权重、是否健康、元信息和对应的编辑及下线按钮。Nacos 为用户提供了流量权重控制的能力,同时开放了服务流量的阈值保护,以帮助用户更好的保护服务服务提供者集群不被意外打垮。如下图所以,可以点击实例的编辑按钮,修改实例的权重。如果想增加实例的流量,可以将权重调大,如果不想实例接收流量,则可以将权重设为0。

image

  Nacos还提供服务实例的上下线操作,在服务详情页面,可以点击实例的“上线”或者“下线”按钮。下线按钮点击后,该实例将不会返回给订阅端,无论该实例是否健康。“下线”文本会改成“上线”,用于对应的实例上线操作。

image

3.2 订阅者列表

  这里能够查询的服务提供者的访问记录,很简单,没有什么需要说的,略过。

四、权限控制

4.1 用户列表

  Nacos 开启权限控制后,多了权限控制模块,可以给不同的用户分配不同的角色,给不同的角色分配不同资源的不同的权限。点击“用户列表”,进入用户管理页面,可以进行用户的创建、修改和删除。

image

4.2 角色管理

  因为 Nacos 的自带的权限是基于角色来进行分配的,因此需要给创建好的用户绑定一些角色。

image

4.3 权限管理

  角色创建好以后,就可以给这个角色赋予特定的权限了。在“添加权限”对话框里,可以选择绑定的角色、命名空间资源以及对应的动作类型。例如,可以给角色 test 绑定命名空间test的读写权限。然后又因为刚刚我们是将用户 test 绑定到了角色 test 上,那么 test 这个用户就可以对 test 这个命名空间的资源进行读写操作了。

image

  点击控制台右上角,退出 admin 账号,然后用刚才创建的 test 进行登录。首先是左侧的权限管理菜单消失了,因为当前用户不是管理员。其次是会弹出一个鉴权失败的提示框。不用担心,这个提示框意思是 test 没有 public 命名空间的读权限,所以会弹出,但是不影响我们将命名空间切换到 test。

五、命名空间

5.1 隔离设计

  Nacos 服务中最顶层、也是包含范围最广的概念,命名空间的作用其实就是可以进行多租户的分割,Nacos 基于Namespace 帮助用户逻辑隔离多个命名空间,这可以帮助用户更好的管理测试、预发、生产等多环境服务和配置,让每个环境的同一个配置(如数据库数据源)可以定义不同的值。其中,Namespace 代表不同的环境,如开发,测试,生产等;Group 代表项目,如 xxx 安全项目、xxx 电商项目等;每个项目往往有若干个工程(微服务),每个配置集(DataId)是一个工程(微服务)的主配置文件,如下图所示:

image

  从一个租户(用户)的角度来看,如果有多套不同的环境,那么这个时候可以根据指定的环境来创建不同的namespce,以此来实现多环境的隔离。例如,你可能有开发,测试和生产三个不同的环境,那么使用一套nacos 集群可以分别建以下三个不同的 namespace。如下图所示:

image

  从多个租户(用户)的角度来看,每个租户(用户)可能会有自己的 namespace,每个租户(用户)的配置数据以及注册的服务数据都会归属到自己的 namespace 下,以此来实现多租户间的数据隔离。例如超级管理员分配了三个租户,分别为张三、李四和王五。分配好了之后,各租户用自己的账户名和密码登录后,创建自己的命名空间。如下图所示:

image

5.2 命名空间管理

  在管理界面创建命名空间的方法如下,点击【命名空间–>新建命名空间】,然后输入名称和描述,如下图所示,点击保存之后在列表这里就可以看到刚刚创建的命名空间了,同时在服务列表中也能看到命名空间的身影。

image

  命名空间默认为 public,在项目开发中,如果不指定命名空间,那么会使用默认值 public。官方推荐使用运行环境来定义命名空间,例如: 开发环境(dev)、测试环境(test)、验收测试环境(uat)、生成环境(prod)等,用于将服务的注册订阅信息在逻辑上隔离开来。

  在项目开发中,在Nacos Client 配置的时候其实就通过 spring.cloud.nacos.discovery.namespace 来指定命令空间了,如下所示:

spring:application:name: order-service # 指定应用名称,Nacos会将该名称当做服务名称cloud:nacos:server-addr: 127.0.0.1:8848 # 指定Nacos服务的地址,默认值是localhost:8848discovery:# 指定Nacos 管理界面登录用户名和密码,默认值是nacosusername: nacospassword: nacosnamespace: public # 指定命名空间,可以隔离不同的服务实例。这里填的是命名空间的id,默认是public

注意:如果在控制台没有新建命名空间,直接在项目中使用的话,是不能将服务成功的注册到 Nacos 中的。

六、集群管理

6.1 Nacos 服务存储模型

  Nacos Server可以是集群部署的也可以是单机部署,在实际生产环境中,为了防止单点故障我们肯定不可能部署一个节点。Nacos服务分级存储模型:一级是服务;二级是集群,比如可以按区域机房划分集群,北京集群、上海集群、广州集群等等;三级是实例,例如北京机房的某台服务器部署的某服务。

杭州
上海
北京
实例
集群
实例
实例
集群
实例
实例
集群
实例
服务

6.2 Nacos 服务配置集群

  在 Nacos 注册的服务,如果没有配置集群的话,默认是没有集群的,也就是在一个名为 DEFAULT 的集群下,如下:

image

  我们可以在 Nacos 服务的配置文件中通过配置指定该服务的集群,只需在配置文件比如 application.yml 中添加 spring.cloud.nacos.discovery.cluster-name 属性即可,如下:

spring:application:name: orderservicecloud:nacos:server-addr: http://localhost:8848 # nacos服务地址discovery:cluster-name: HZ # 配置集群名称,例如:HZ,代指杭州集群

此时,注册在 Nacos 中的服务可以看到它的集群名称就是我们配置的集群名称,如下:

image

  在服务互相调用时我们应该尽可能地去选择本地集群,即同一集群的服务,因为跨集群调用延迟较高,只有当本地集群的需调用的服务不可访问时,再去访问其它集群。如下所示:

上海
北京
order-service
order-service
order-service
order-service
order-service
order-service
order-service
order-service

  但是使用 Spring Cloud 在 Nacos 中注册的服务,默认的负载均衡策略是轮询,也就是会轮询各个服务,不会区别是否同一集群。我们可以通过配置负载均衡策略来使得调用服务时优先选择同一集群的服务。假设 order-service 和 user-service 两种服务在各个集群中都有实例存在,而我们想要配置在 order-service 中调用 user-service 服务的接口时,优先选择同一集群的服务,只需在 order-service 服务中设置负载均衡的 IRule 为 NacosRule ,如下

userservice:    #指定给某个目标服务发起请求时的负载均衡规则,这里是目标服务的服务名称ribbon:NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  #负载均衡规则

  NacosRule 负载均衡策略会优先寻找与自己在同一集群的服务,只有在同一集群中找不到服务提供者,才去其它集群寻找,并且当使用了其他集群的服务时,服务消费者中会提示警告信息。如果一个集群中的服务提供者有多个实例,则会使用随机调用的策略。

6.3 配置实例的权重

  当配置了优先访问同一集群内的服务时,在同一集群内如果有多个服务提供者实例的话,此时会使用随机访问的策略。当有时候,服务器设备之间的性能是有差异,部分实例所在的机器性能较好,另一些较差,我们可能会希望性能好的机器能承担更多的用户请求,而 Nacos 也提供了权重配置来让我们控制实例的访问频率,权重越大则访问频率越高。

  我们可以在 Nacos 的控制台中设置实例的权重值,点击实例后面的编辑按钮,弹出窗口可以设置权重值,如下图所示。所有的实例的权重值默认都是1,我们可以将将权重值设置为 0~1,权重越低,被访问到的概率就越低,为 0 时则完全不会被访问到。

image

七、小结

把今天最好的表现当作明天最新的起点..~

image

相关文章:

Nacos系列:Nacos 控制台手册

引言 Nacos是阿里巴巴中间件部门开源的一款用于服务发现和配置管理的产品&#xff0c;Nacos 控制台主要旨在于增强对于服务列表、健康状态管理、服务治理、分布式配置管理等方面的管控能力&#xff0c;以便进一步帮助用户降低管理微服务应用架构的成本。 一、访问 Nacos 控制台…...

react-dnd 拖拽事件与输入框的文本选中冲突

问题描述 当我们使用拖拽库的时候&#xff0c;往往会遇到拖拽的一个元素他的子孙元素有输入框类型的dom节点&#xff0c;当拖拽的事件绑定在该元素身上时候&#xff0c;发现子孙的输入框不能进行文本选中了&#xff0c;会按住鼠标去选中文本的时候会触发拖拽 实际的效果&…...

LeetCode:150. 逆波兰表达式求值

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;150. 逆波兰表达式求值 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表…...

python中向量指的是什么意思

一、向量是什么 在数学中&#xff0c;向量&#xff08;也称为欧几里得向量、几何向量、矢量&#xff09;&#xff0c;指具有大小&#xff08;magnitude&#xff09;和方向的量。它可以形象化地表示为带箭头的线段。箭头所指&#xff1a;代表向量的方向&#xff1b;线段长度&am…...

7.Vue------$refs与$el详解 ------vue知识积累

$refs 与 $el是什么&#xff1f; 作用是什么? ref&#xff0c;$refs&#xff0c;$el &#xff0c;三者之间的关系是什么&#xff1f; ref (给元素或者子组件注册引用信息) 就像你要给元素设置样式&#xff0c;就需要先给元素设定一个 class 一样&#xff0c;同理&#xff0c;…...

一个很好的直接网站操作的回测框架

1 网址 https://cn.tradingview.com/...

【电子元器件】贴片电阻的故障现象、故障原理和解决方法

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时&#xff0c;也能帮助其他需要参考的朋友。如有谬误&#xff0c;欢迎大家进行指正。 一、故障现象概要 贴片电阻与其他电子元器件相比&#xff0c;虽然属于比较不容易引发故障的零部件&#xff0c;但是在过载或…...

基于Spring Boot + Vue的摄影师分享交流社区的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…...

SpringBoot项目监听端口接受数据(Netty版)

文章目录 前言服务端相关配置核心代码 客户端 前言 前言 环境&#xff1a; JDK&#xff1a;64位 Jdk1.8 SpringBoot&#xff1a;2.1.7.RELEASE Netty&#xff1a;4.1.39.Final 功能&#xff1a; 使用Netty监听端口接受客户端的数据&#xff0c;并发送数据给客户端。 服务端 …...

超标量处理器设计笔记(9) 重命名映射表、超标量处理器重命名中相关性问题

寄存器重命名 重命名映射表基于 SRAM 的重命名映射表 超标量处理器的寄存器重命名解决 RAW 相关性解决 WAW 相关性对写 RAT 进行检查&#xff08;判断哪个 ARF 写入到 RAT&#xff09;对写 ROB 进行检查&#xff08;判断&#xff09; 特殊指令处理方式 重命名映射表 重命名时…...

如何使用 Python 写入文本文件 ?

在Python编程中&#xff0c;写入文本文件是一项基本且重要的操作。 无论是生成日志文件、配置文件&#xff0c;还是进行数据输出&#xff0c;都需要用到这一技能。 下面&#xff0c;我将详细介绍如何使用Python写入文本文件&#xff0c;并提供一些实际开发中的建议和注意事项…...

07篇(附)--仿射变换矩阵

此篇献给某些 头铁 的小只因们&#xff0c;认真钻研下面的数学式吧 原理示例 首先我们以最简单的一个点的旋转为例子&#xff0c;且以最简单的情况举例&#xff0c;令旋转中心为坐标系中心O&#xff08;0&#xff0c;0&#xff09;&#xff0c;假设有一点P0(x0,y0)&#xff0…...

KubeSphere搭建单节点RocketMQ

前提环境: Docker环境 Harbor仓库(可选) 参考官方文档: 《Docker 部署 RocketMQ》 https://rocketmq.apache.org/zh/docs/quickStart/02quickstartWithDocker参考官方文档: 《RocketMQ Dashboard》 https://rocketmq.apache.org/zh/docs/deploymentOperations/04Dashboard/ 声…...

深度学习中损失函数(loss function)介绍

深度学习中损失函数(loss function)介绍 ​ 在深度学习的宏伟城堡中&#xff0c;损失函数扮演着国王的角色&#xff0c;它决定了模型训练的方向和目标。损失函数&#xff0c;也被称为代价函数&#xff0c;是衡量模型预测与实际结果之间差异的函数。在深度学习的训练过程中&…...

Vue3+Node中使用webrtc推流至mediamtx

前言 项目的 Web 端是 Vue3 框架&#xff0c;后端是 GO 框架。需要实现将客户端的本地摄像头媒体流推送至服务端&#xff0c;而我自己从未有媒体流相关经验&#xff0c;最初 leader 让我尝试通过 RTSP 协议推拉流&#xff0c;我的思路就局限在了 RTSP 方向。 最初使用的服务端…...

React 内置的Hook学习

useState&#xff1a;管理组件状态 useState 是一个用于在函数组件中添加状态的 Hook。它允许你在函数组件中声明一个状态变量&#xff0c;并提供一个更新该状态的方法&#xff0c;其中与组件生命周期的关系&#xff1a; 初始化&#xff1a;当组件首次渲染时&#xff0c;useS…...

Flutter Navigator2.0的原理和Web端实践

01 背景与动机 在Navigator 2.0推出之前&#xff0c;Flutter主要通过Navigator 1.0和其提供的 API&#xff08;如push(), pop(), pushNamed()等&#xff09;来管理页面路由。然而&#xff0c;Navigator 1.0存在一些局限性&#xff0c;如难以实现复杂的页面操作&#xff08;如移…...

初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容

uniapp微信小程序页面结构 首页页面代码 微信小程序模拟器 模拟器页面为空白时查了下&#xff0c;有几个说是“Hbuilder编译的时候应该编译出来一个app.js文件 但是却编译出了App.js”&#xff0c;但是我的小程序结构没问题&#xff0c;并且真机预览没有问题 真机调试 根据defi…...

【HF设计模式】03-装饰者模式

声明&#xff1a;仅为个人学习总结&#xff0c;还请批判性查看&#xff0c;如有不同观点&#xff0c;欢迎交流。 摘要 《Head First设计模式》第3章笔记&#xff1a;结合示例应用和代码&#xff0c;介绍装饰者模式&#xff0c;包括遇到的问题、遵循的 OO 原则、达到的效果。 …...

【人工智能-中级】模型部署与优化:从本地实验到云端与边缘部署

模型部署与优化:从本地实验到云端与边缘部署 在机器学习和深度学习模型训练完成后,如何高效、稳定地将模型部署到生产环境中,是实际应用中的关键环节。模型部署不仅涉及技术实现,还需要考虑性能优化、资源管理和安全性等多方面因素。本文将全面探讨模型部署与优化的相关内…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...