wordpress能建什么网站,辽宁建设网站,取消网站备案制度,wordpress循环所有文章目录 前言阅读对象阅读导航前置知识笔记正文一、下载安装二、项目整合2.1 服务注册与发现2.2 动态配置管理 三、其他实验四、服务之间的调用 学习总结感谢 前言
本篇笔记主要是记录我整合Nacos项目进来的过程。以实现服务注册发现#xff0c;以及分布式配置管理。关于Nacos以及分布式配置管理。关于Nacos右侧点击Nacos官网传送门
阅读对象
需要有实际Springboot-web开发经验了解Nacos基本使用可以从前言里面给的链接去官网学习或者看看这篇文章《Nacos使用详解》
阅读导航
系列上一篇文章《【分布式微服务专题】从单体到分布式一、SpringCloud项目初步升级》
前置知识
笔记正文
一、下载安装
1下载 当前环境win11 版本2.2.3官方介绍说这是当前推荐的稳定版本 下载地址Nacos2.2.3下载 2解压运行 解压然后进入nacos/bin目录以单机模式运行startup.cmd -m standalone 当看到下面这个界面的时候就表示启动成功了 接着访问Nacos自带的客户端验证一下http://localhost:8848/nacos
二、项目整合
Nacos在项目模块上大概会分为两个分别是nacos-config和nacos-discovery即【分布式配置】和【服务注册与发现】。下面我们就分开两步来整合。
通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-config 实现配置的动态变更通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现
2.1 服务注册与发现
1首先是现在pom中添加【服务注册与发现】的jar包依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency2添加项目yml配置
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:88483最后就是在启动类上添加EnableDiscoveryClient启用【服务注册与发现】相关功能 4启动服务。我则是添加到了shen-product服务上效果如下 可以在nacso的服务列表中看到shen-product注册到了nacos上。我们也可以尝试启动其他服务去验证哦。比如我这里再启动一个shen-product和shen-order服务。 点击shen-product服务集群的的详情可以看到如下画面 OK非常强大。注意刀上面的权重了吗你会想到啥对嘛负载均衡呀xdm。 对了想要在IDEA里面启动多个服务实例其实也不难就是右上角新增一个SpringBootApplication实例就好当然注意修改端口 5调用shen-product 我们在上面启动了两个shen-product实例我们来试试效果。先来试试http://localhost:9001/product/list再来试试http://localhost:9002/product/list
2.2 动态配置管理
说到动态配置这个东西有个前置内容需要先跟大家说说。Nacos提供的这个动态配置是用于存储配置和其他元数据的 key/value为分布式系统中的外部化配置提供服务器端和客户端支持。比如同一组服务集群里面共享一些配置application.yml。 那你们还记得SpringBoot项目得application.yml加载顺序吗包括其他所有配置。正常来说包括但不限于以下
命令行参数操作系统环境变量jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件 再来加载不带profilejar包外部的application.properties或application.yml(不带spring.profile)配置文件jar包内部的application.properties或application.yml(不带spring.profile)配置文件
上面的内容不是重点重点是这里体现了一种配置思想高优先级的配置覆盖低优先级的配置所有的配置会形成互补配置 覆盖 并级。 那么问题就来了既然SpringBoot配置文件需要遵循以上原则那么我在Nacos中的配置文件如何获取有同学会说我们不是有Nacos的地址嘛通过地址去下载获取咯。确实是的但是Nacos的地址你配置在哪里我们上面的示例是把它配置在application.yml文件吧但是application.yml文件要互补然而想要获取最全的配置文件一定要先去nacos下载所以在引入nacos-config配置中心的时候就出现了逻辑矛盾。 为了解决这个问题SpringCloud标准约定引入一个全新的配置文件bootstrap.yml。它跟application.yml差不多只不过优先级大于后者。bootstrap直译引导。
1首先是现在pom中添加【配置中心】的jar包依赖 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency另外我们不是在上面说要引入新的配置文件bootstrap.yml嘛似乎2.x版本之后需要额外引入另一个包才行不然会报错找不到bootstrap配置文件如下下面这个包来自spring-cloud-dependencies所以需要自己添加这个项目的管理依赖哦 !-- bootstrap文件发现--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactId/dependency2在bootstrap.yml文件配置nacos配置中心地址spring.cloud.nacos.config
server:port: 9001spring:application:name: shen-productcloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:88483在nacos中新建两张配置表 说到配置文件首先需要向大家解释。SpringCloud应用会首先向Nacos查找${prefix}-${spring.profiles.active}.${file-extension}的配置文件。
prefix 默认为 spring.application.name 的值也可以通过配置项 spring.cloud.nacos.config.prefix来配置。spring.profiles.active 即为当前环境对应的 profile详情可以参考 Spring Boot文档。 注意当 spring.profiles.active 为空时对应的连接符 - 也将不存在dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}file-exetension 为配置内容的数据格式可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。更多内容请查看Nacos Config
比如我上面的配置中会默认先查找shen-product.properties文件。 但是通常我们在配置中心里面还会自定义很多通用的配置文件比如我这么配置
application-conf.yaml用来配置所有微服务的数据库配置。毕竟我是在试验阶段共用一个数据库很合理吧… 甚至redismq等等。这些配置往往不需要支持动态更新config-info.yaml用来存放一些需要动态更新的业务配置。例如我在里面存放了一个config.author来存放作者名字
如下图 4修改bootstrap.yml文件支持yaml格式配置文件支持拓展配置文件
server:port: 9001spring:application:name: shen-productcloud:nacos:discovery:server-addr: 127.0.0.1:8848config:server-addr: 127.0.0.1:8848file-extension: yamlextension-configs:- data-id: application-conf.yaml- data-id: config-info.yamlrefresh: true5商品服务新增测试接口 注意上面RefreshScope注解用来开启类的动态配置刷新
6访问http://localhost:9001/product/getMyMan测试接口修改配置继续测试
三、其他实验
官方还有一些其他的东西比如 这里就不试了感觉Nacos比较重要的应该就是以上两点。另外还有Nacos集群搭建等等也不在这里实验咯。
四、服务之间的调用
前面我的很多接口示例都是在单个服务上发生的在我们的实际使用场景中肯定会存在跨服务之间的调用。目前正在学习Dubbo和OpenFeign看看整合哪一种。
不过考虑到Alibaba的微服务体系我应该会选择整合Dubbo。理由如下
横向对比的话Dubbo可以完美替代OpenFeignOpenFeign唯一的优势应该是在于使用更简单不过我觉得缺点是它只能使用http协议。http在我的刻板印象里面就是性能很拉跨当然http还有http1.1跟http2Dubbo框架可以支持http2而前者默认不支持不过也可以切换客户端的方式来支持学习Dubbo更有利于面试Dubbo唯一的缺点就是学习成本会高一点毕竟内容多呜呜呜 其实我还有一点疑问Dubbo看官网介绍总感觉跟Nacos有很多功能是重叠的咋回事呢 学习总结
感谢
感谢本站大佬【作者不凉帅】的文章《Nacos使用详解》