Nacos的使用快速上手
下载的地址: https://github.com/alibaba/nacos/releases/tag/2.2.3部署需要修改什么打jar包的时候先进行的是bootscrap 然后是application所以说在bootscrap有的可以不在application1.先创建多个配置文件2.修改数据库的密码application 配置那个文件生效spring: cloud: nacos: discovery: server-addr: 110.41.51.65:10020 namespace: 8a61ef37-2daa-402f-8b1d-5363629c5c87 # 服务注册的命名空间建议和配置中心保持一致这个文件可以直接删除因为我们已经有了bootscrap.ymlapplication-dev不用修改application-prod3.在dependence同级写一个profiles 是你的要使用的本地的这个profiles profile iddev/id properties profile.namedev/profile.name /properties /profile profile idprod/id properties profile.nameprod/profile.name /properties /profile /profiles4.在bootscrap.yml 中修改一下 profile.nameprod/profile.name的profile.namejar包用这个命令nohup java -jar product-service-1.0-SNAPSHOT.jar logs/product-9090.log 1.nohup意思不挂断关了终端也继续跑你关掉 Xshell、关掉电脑服务不会停。2.java -jar xxx.jar意思启动 SpringBoot 服务就是运行你的商品服务product-service。3. logs/product-9090.log意思把日志输出到这个文件里不在屏幕上乱跳全部存进文件。4.意思后台运行你还能继续输别的命令不卡住终端。别的类引用处理办法在别的类里直接引用别的参数就是特殊的jar包1. 两种 JAR 包的核心区别类型生成方式能否被依赖用途可执行 JAR(Fat Jar)Spring Boot 默认打包 (package)❌不可直接运行 (java -jar)包含所有依赖普通 JAR(普通模块打包)标准 Maven 打包✅可作为公共模块被其他服务引入核心痛点Spring Boot 默认打包的可执行 JAR内部结构被加密 / 压缩了其他项目无法引用它里面的类或工具。如果不想报错必须把公共的代码 / 工具单独抽成一个普通模块。2. 为什么要做这种配置红框配置的作用你需要在公共模块的pom.xml里加上这段配置目的是打一次包同时生成两种 JAR正常的普通 JAR可被其他服务依赖引用可执行 JAR自己可以独立运行配置代码红框里的核心build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration classifierexec/classifier !-- 关键生成可执行 JAR 的分类器 -- /configuration /plugin /plugins /build效果打包后你会看到两个文件xxx.jar普通 JAR干净可被依赖xxx-exec.jar可执行 JAR带所有依赖可运行3. 最佳实践单独抽离成公共模块千万不要把公共代码放在父工程里正确的架构是spring-cloud-demo ├── common-util (公共模块放工具类、实体类、通用配置) │ └── pom.xml (配置上述插件只打普通 JAR) ├── order-service (业务模块依赖 common-util) │ └── pom.xml └── product-service (业务模块依赖 common-util) └── pom.xml这样做的好处代码复用所有服务都能用 common-util 里的代码版本统一升级一次所有服务同步避免冲突解决了 Spring Boot 可执行 JAR 无法被依赖的经典问题4. 总结可执行 JAR 服务的 “成品”专门用来运行普通 JAR 服务的 “工具箱”专门用来给别人引用正确做法 把通用的东西抽成一个独立的普通模块然后各个服务去引用它方案1修改 product-service 的 POM推荐在product-service/pom.xml中修改 Spring Boot Maven 插件配置build plugins plugin groupIdorg.springframework.boot/groupId artifactIdspring-boot-maven-plugin/artifactId configuration !-- 删除或注释掉 classifier 配置 -- !-- classifierexec/classifier -- !-- 或者明确指定不生成 classifier -- classifier/classifier /configuration /plugin /plugins /buildconfiguration !-- classifierexec/classifier -- /configuration方案2修改 order-service 的依赖在order-service/pom.xml中修改依赖指定 classifierdependency groupIdcom.ytvc/groupId artifactIdproduct-service/artifactId version1.0-SNAPSHOT/version classifierexec/classifier !-- 添加这个 -- /dependency配置文件的静态信息要放过resources resource directorysrc/main/resources/directory filteringtrue/filtering includes include**/**/include /includes /resource /resourcesNacos与Eureka的区别 共同点: - 都支持服务注册和服务拉取 区别: 1. 功能 Nacos除了服务发现和注册之外,还提供了配置中心,流量管理和DNS服务等功能. 2. CAP理论 Eureka遵循AP原则, Nacos可以切换AP和CP模式,默认AP. Nacos 根据配置识别CP或者AP模式. 如果注册Nacos的Client的节点是临时节点, 那么Nacos对这个Client节点的效果就是AP, 反之是CP. AP和CP可以同时混合存在. 3. 服务发现 Eureka: 基于拉模式. Eureka Client会定期从Server拉取服务信息, 有缓存, 默认每30秒拉取一次. Nacos: 基于推送模式. 服务列表有变化时实时推送给订阅者, 服务端和客户端保持心跳连接. 服务启动:Nacos与Eureka的区别共同点:- 都支持服务注册和服务拉取区别:1. 功能Nacos除了服务发现和注册之外,还提供了配置中心,流量管理和DNS服务等功能.2. CAP理论Eureka遵循AP原则, Nacos可以切换AP和CP模式,默认AP.Nacos 根据配置识别CP或者AP模式. 如果注册Nacos的Client的节点是临时节点, 那么Nacos对这个Client节点的效果就是AP, 反之是CP. AP和CP可以同时混合存在.3. 服务发现Eureka: 基于拉模式. Eureka Client会定期从Server拉取服务信息, 有缓存, 默认每30秒拉取一次.Nacos: 基于推送模式. 服务列表有变化时实时推送给订阅者, 服务端和客户端保持心跳连接.