标准网站建设,地方门户网站的前途,保定企业建网站,wordpress多边形按钮SpringCloud Alibaba 2022使用
SpringCloud Alibaba 2022需要Spring Boot 3.0以上的版本#xff0c;同时JDK需要是17及以上的版本。具体的可以看官网的说明。 Spring Cloud Alibaba版本说明
环境搭建
这里搭建的是一个聚合项目。项目结构如下#xff1a;
父项目的pom.xm…SpringCloud Alibaba 2022使用
SpringCloud Alibaba 2022需要Spring Boot 3.0以上的版本同时JDK需要是17及以上的版本。具体的可以看官网的说明。 Spring Cloud Alibaba版本说明
环境搭建
这里搭建的是一个聚合项目。项目结构如下
父项目的pom.xml文件如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIdspring-cloud-alibaba-demo/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-cloud-alibaba-demo/namedescriptionspring-cloud-alibaba-demo/descriptionpackagingpom/packaging!--指定依赖的版本 --propertiesjava.version17/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version3.0.2/spring-boot.versionspring-cloud-alibaba.version2022.0.0.0-RC2/spring-cloud-alibaba.version/propertiesmodulesmoduleconuserservice01/modulemoduleproviderservice01/module/modulesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${spring-cloud-alibaba.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.8.1/versionconfigurationsource17/sourcetarget17/targetencodingUTF-8/encoding/configuration/pluginplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/versionconfigurationmainClasscom.example.springcloudalibabademo.SpringCloudAlibabaDemoApplication/mainClassskiptrue/skip/configurationexecutionsexecutionidrepackage/idgoalsgoalrepackage/goal/goals/execution/executions/plugin/plugins/build/projectNacos
Nacos简介和安装
Nacos是 Dynamic Naming and Configuration Service 的首字母简称Naocs是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos概述
Nacos下载其实下载的是Nacos Server我们下载启动Nacos Server后访问8848端口就可以看到Nacos Server的登录页面了。默认登录用户名和密码都是Nacos。 Nacos下载
使用Nacos进行服务注册和发现
要想使用Nacos进行服务注册和发现需要在创建的conuserservice01模块的pom文件和providerservice01模块的pom文件中加入nacos服务发现的依赖。
conuserservice01模块的pom文件如下providerservice01模块的pom文件也是类似的。
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.example/groupIdartifactIdconuserservice01/artifactIdversion0.0.1-SNAPSHOT/versionnameconuserservice01/namedescriptionconuserservice01/descriptionparentartifactIdspring-cloud-alibaba-demo/artifactIdgroupIdcom.example/groupIdversion0.0.1-SNAPSHOT/version/parentpackagingjar/packagingpropertiesjava.version17/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncoding/propertiesdependencies!--nacos服务发现--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency/dependencies/project创建application.yml文件配置Nacos Server的地址
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848 #Nacos Server地址application:name: consumerservice01 #应用名称server:port: 8890 #端口号启动consumerservice01应用然后在Nacos的服务管理菜单下的服务列表可以看到consumerservice01应用。 如果对Eureka熟悉的话那么应该知道我们在进行服务发现时需要在启动类上加上EnableDiscoveyClient注解但是这里不加也是可以的具体原因如下 添加链接描述
Nacos服务分级存储模型 一级是服务例如consumerservice01二级是集群三级是实例。
spring:cloud:nacos:discovery:cluster-name: SH #集群名称重新启动应用后可以看到显示了集群的名称
Nacos环境隔离
Namespace
用于租户粒度的配置隔离。不同的命名空间下可以存在相同的 Group 或 Data ID 的配置c 使用场景一般用Namespace来实现环境隔离例如测试环境和生产环境的隔离。Group
分组Group是次于命名空间的一种隔离概念 使用场景区分项目。用于多个项目共用Nacos的情况在Nacos中只有当两个服务在同一个namespace、同一个group下时两个服务才能互相访问注册到Naocs中的服务默认是在public namespace的DEFAUlT_GROUP下的
在yml文件中配置服务的namespace和group
spring:cloud:nacos:discovery:namespace: 8ff552f0-0212-43b2-8ea0-e4c2aa359084 #命名空间idgroup: testgroup1 #设置服务的分组Nacos配置中心
配置中心的出现是为了解决当服务实例较多时如果想修改配置则需要修改很多配置文件的问题同时修改配置文件后服务实例还需要进行重启上面说的问题总结一句其实就是微服务和配置文件的耦合问题。
当我们引入Nacos配置管理后服务实例会从Nacos Server中读取配置文件而这里面存在一个问题只有连接Nacos后才能获取到配置文件但是要连接Nacos需要知道Nacos Server的地址而application.yml是在项目启动后加载的 目前项目启动读取配置文件的流程如下图所示 解决上面的问题需要用到另一个配置文件也就是bootstrap.yml文件顾名思义就是引导/启动配置文件在项目启动的时候就会加载这个文件把nacos Server的地址放在这个配置文件中就可以解决上面的问题了。 使用bootstarp配置文件后的流程如下 Spring Cloud Config配置中心也是同样的原理也需要用到bootstrap配置文件。
如果想让Nacos管理配置则需要在微服务的依赖中引入Nacos的配置管理客户端依赖。 dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--springboot无法识别bootstrap文件的问题--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.0.1/version/dependency创建bootstrap.yml文件设置Nacos Server的地址
spring:cloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yamlnamespace: 8ff552f0-0212-43b2-8ea0-e4c2aa359084 #配置文件命名空间要和服务实例的一致group: DEFAULT_GROUP #配置文件的组要和服务实例的一致application:name: consumerservice #服务的名称profiles:active: dev 在Nacos Server中创建配置文件 在代码中获取配置文件中值
配置文件热更新
1、在Value注入的变量的所在类上添加注解
2、使用ConfigurationProperties注解 多环境配置共享和多配置文件优先级 参考
Nacos高版本服务发现失败以及无法使用NacosRule问题无法连接读取 nacos 配置中心及文件能踩的坑都踩了Nacos 概念