ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

后端开发中间件 - Nacos下载并快速使用教程

后端开发中间件 - Nacos下载并快速使用教程 Nacos官网【Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网】下载这个新版本踩坑踩得恶心的要死吐槽一下3.2.3稳定版本生产可用后续中间件学习使用docker了适配环境太浪费时间推荐大家尽量使用docker一、Nacos Serverwindows版本1. 下载windows版本的zip文件夹并解压下载网址【发布历史 | Nacos 官网】① 点击左侧侧边栏的【发布历史】点击版本这一列的【3.2.3】即可自动下载zip文件夹② 解压Nacos安装文件到没有中文和空格目录2. 修改鉴权模式为【默认 Nacos 鉴权】非生产自用可以不用设置直接禁用所有auth权限认证即可① 修改鉴权模式在解压的nacos文件夹/conf/application.properties中使用Ctrl F进行查找【nacos.core.auth.system.type】点击查找下一个找到我们要变更鉴权配置的地方大概位置在207行附近找到后按照如下配置逐个修改鉴权配置的值并保存# 开启Nacos鉴权【干净无冲突】 nacos.core.auth.system.typenacos nacos.core.auth.enabledtrue nacos.core.auth.admin.enabledtrue nacos.core.auth.console.enabledtrue nacos.core.auth.server.identity.keynacos nacos.core.auth.server.identity.valuenacos nacos.core.auth.plugin.nacos.token.secret.keyMqhVneqzjTyVea6o5zLiRbvFfswKEgVrwro890ULwh0 nacos.core.auth.caching.enabledtrue nacos.core.auth.plugin.nacos.token.cache.enablefalse nacos.core.auth.plugin.nacos.token.expire.seconds18000 # ② 编码格式设置为UTF-8③ 清理 nacos 缓存日志可选避免旧配置残留假如你启动Nacos失败过可以用一下:删除nacos/logs整个文件夹然后重新执行启动命令④鉴权模式对应的Spring Boot的yml配置若仅测试Nacos启动可暂时不添加选择【开启鉴权】后续你的 SpringBoot 项目连接 nacos 时 yml必须加上⭐spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 # 新增鉴权identity nacos: core: auth: server: identity: key: nacos value: nacos⑤ 一些附录说明和供读者参考的内容不想了解直接跳过鉴权配置的参考网址【权限校验 | Nacos 官网】由于我们是本地环境独立开发我们选择【默认 Nacos 鉴权】默认 Nacos 鉴权使用本地用户、角色、权限和 token。此外若你想生成自己的Base64密钥参考如下生成Base64密钥你也可以跳过此步骤直接使用我生成的密钥就是个随机码没啥用打开windows的powershell输入命令并回车$rng [System.Security.Cryptography.RandomNumberGenerator]::Create(); $bytes New-Object byte[] 32; $rng.GetBytes($bytes); [System.Convert]::ToBase64String($bytes)得到Base64编码放到yml中${custom_base64_token_secret_key}位置替换即可。最后实际可用的默认Nacos鉴权配置如下nacos.core.auth.system.typenacos # 鉴权类型选择默认Nacos鉴权 nacos.core.auth.enabledtrue # 开启鉴权认证 nacos.core.auth.admin.enabledtrue # 开启管理员鉴权 nacos.core.auth.console.enabledtrue # 开启控制台鉴权 # 鉴权必须填写的三个认证参数 nacos.core.auth.server.identity.keynacos nacos.core.auth.server.identity.valuenacos nacos.core.auth.plugin.nacos.token.secret.keyMqhVneqzjTyVea6o5zLiRbvFfswKEgVrwro890ULwh03. 启动Nacos服务① 打开解压文件夹的bin目录② 在bin目录路径上输入cmd回车③ 看到cmd命令窗口打开后输入命令并回车命令含义为启动【单机模式】startup.cmd -m standalone4. 验证Nacos服务是否启动成功控制台末尾出现这行日志说明启动nacos服务成功5. Nacos控制台页面打开任意浏览器输入地址http://127.0.0.1:8080, 即可进入Nacos控制台页面。注意首次打开会要求初始化管理员用户nacos的密码。我们用户名和密码均设置为nacos即可方便记忆。若密码为空则会生成随机密码你还得保存很麻烦然后我们就进入了Nacos的控制台页面6. 测试Nacos的服务注册与发现① 测试服务注册修改nacos/conf/application.properties写入得不到AccessToken没办法只能把权限给关了。事实上大家以后都可以直接关掉权限本地用的话。我只是为了生产环境可能要使用权限提前摸索下。自己开发不必使用权限nacos.core.auth.enabledfalse若是怕缓存有影响delete删除data和log文件夹(nacos运行会重新生成别害怕)在cmd窗口输入服务注册请求命令curl -X POST http://127.0.0.1:8848/nacos/v3/client/ns/instance?serviceNamequickstart.test.serviceip127.0.0.1port8080可以看到服务注册成功了Nacos控制台【服务列表】中可以看到我们刚刚注册的服务实例② 测试服务发现cmd输入命令curl -X GET http://127.0.0.1:8848/nacos/v3/client/ns/instance/list?serviceNamequickstart.test.service可以看到服务发现测试成功返回success,data中包含host、port、服务实例名称等注意 服务注册和发现的命令要快点执行间隔要小这只是个临时实例很快就下线了。不然你得重新注册服务实例了7. 发布配置① 登陆获取access token cmd命令输入curl -X POST http://127.0.0.1:8848/nacos/v3/auth/user/login -d usernamenacos -d passwordnacos得到token② 使用access token创建配置并发布到Nacos Servercurl -X POST http://127.0.0.1:8848/nacos/v3/admin/cs/config?dataIdquickstart.test.configgroupNametestcontentHelloWorldaccessToken你的TOKEN可以看到返回true成功发布配置到nacos server了控制台也显示成功8. 拉取配置cmd输入命令curl -X GET http://127.0.0.1:8848/nacos/v3/client/cs/config?dataIdquickstart.test.configgroupNametest可以看到拉取配置信息成功包含content内容9. 一些疑问① 我们服务注册发起post请求访问的是Nacos Server的端口8848我们注册的服务实例的信息存储到哪里了服务发现拉取服务实例信息又是从哪里拉取的临时实例服务实例信息优先存入 Nacos Server 内存单机 derby / 集群 mysql 仅存储服务元数据持久实例实例信息持久化存入 derby单机/mysql集群同时在 Nacos Server 内存维护缓存。服务发现拉取客户端优先从 Nacos Server 的内存缓存拉取实例列表同时客户端本地会缓存实例数据。补充Nacos Server 内存 Nacos Server 进程运行时分配在 JVM 堆内的内存区域。存储服务元数据服务名、分组、保护阈值、元标签等服务维度基础信息。持久化存储服务元数据、持久化类型的实例数据。单机存入 derby 数据库集群存入 MySQL。Nacos Server 内存缓存全量服务实例列表实例 IP、端口、权重、健康状态、集群信息等实时实例数据。② Nacos Server的端口是8848Nacos Console的端口是8080二者之间是什么关系我们Nacos Client访问的是Server是如何将Nacos Server内的数据传递给Nacos Console的 Nacos Console又将这些从Nacos Server中取到的数据存储在哪里我们正常一个Nacos Client交互的实际上一直都是Nacos Server吗Console在Client-Server交互过程中充当什么角色关系Nacos Console 是内置在 Nacos Server 里的 Web 模块8848 为 Nacos Server 核心服务端口8080 是 Console 前端页面端口二者同属一个应用进程。数据传递Nacos Console 通过调用 Nacos Server 自身开放的内部 API 获取数据。Console 存储Console 不额外存储数据展示的数据直接来源于 Nacos Server 的内存缓存与持久化数据库derby/MySQL。Client 交互Nacos Client 交互对象始终是 Nacos Server。Console 角色仅可视化管理面板不参与 Client 与 Server 之间的服务注册、发现、配置交互流程。③ Console作为内置在Server中的Web模块是前端模块的一堆文件吗另外Console占用前端端口8080我们后端自己开发的应用也是8080二者端口冲突吗端口冲突的话我们该如何正常启动后端程序同时正常使用Nacos Console呢Console 包含前端静态资源与配套后端接口会端口冲突。Console和自己的后端应用端口冲突的解决方案方案 1修改 Nacos 配置文件 conf/application.properties新增nacos.console.port新端口如 8081重启 Nacos后端应用继续使用 8080。方案 2修改后端开发应用的启动端口不再使用 8080。方案 3Nacos 独立部署 Console 模块。
返回列表