天下之事常成于困约,而败于奢靡。这篇文章主要讲述springcloud alibaba企业落地实战:一文带你掌握nacos基础应用相关的知识,希望能为你提供帮助。
1.为什么使用选择nacosnacos在springcloud体系中作为注册中心与配置中心使用。相当于eureka与apollo的功能。
一个老生常谈的问题nacos和eureka区别,下图是楼主在网上查找到。
文章图片
但是在楼主实际应用中 还有以下有点特别称道:
- nacos有配置功能,相对于楼主之前的eureka+apollo 这无疑大大的简化了系统的复杂性。
- nacos使用了数据库进行管理数据,使在处理数据时心里更舒服了。
- nacos拥有namespace和gourp的概念,可以隔离同名的服务。这样在多人起后端服务时,可以注册到一个nacos服务 隔离开就可以了。
1.版本选择您可以在Nacos的release notes及博客中找到每个版本支持的功能的介绍,当前推荐的稳定版本为1.4.2或2.0.1。
2.预备环境准备Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;下载 & 配置。
- Maven 3.2.x+;下载 & 配置。
1.从 Github 上下载源码方式
git clone https://github.com/alibaba/nacos.git
cd nacos/
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
ls -al distribution/target/// change the $version to your actual path
cd distribution/target/nacos-server-$version/nacos/bin
2.下载编译后压缩包方式
您可以从 最新稳定版本 下载
nacos-server-$version.zip
包。unzip nacos-server-$version.zip 或者 tar -xvf nacos-server-$version.tar.gz
cd nacos/bin
4.启动服务器 1.Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
2.Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
当idea使用源码单机启动时需要以下配置
文章图片
文章图片
-Dnacos.standalone=true
5.单机时使用数据库当不添加配置时,默认是使用内存保存信息,我们可以添加数据库配置,使数据保存在数据库内.
暂时官方只支持mysql,其他数据库需要自己手动修改。
1.源码启动
使用源码idea启动需要修改以下文件的以下位置
文章图片
2.已经打包的jar包
nacos\\conf\\application.properties修改数据库配置
文章图片
6.启动成功出现以下图案代表启动成功,看出来模式为单机模式,路径为Console输出,访问即可
文章图片
文章图片
3.springboot注册进入nacos 1.修改pom文件
<
dependency>
<
groupId>
com.alibaba.cloud<
/groupId>
<
artifactId>
spring-cloud-starter-alibaba-nacos-discovery<
/artifactId>
<
/dependency>
<
!-- SpringCloud Alibaba Nacos Config -->
<
dependency>
<
groupId>
com.alibaba.cloud<
/groupId>
<
artifactId>
spring-cloud-starter-alibaba-nacos-config<
/artifactId>
<
/dependency>
在pom.xml文件中最好选择合理的版本,否则会报各种各样的错 。
版本可以根据官方文档选择:github.com/alibaba/spr…
同时为了保证版本相同建议再父工程中加入以下配置,意思是子工程groupid为org.springframework.cloud,com.alibaba.cloud,org.springframework.boot的都依赖父工程版本
<
dependencyManagement>
<
dependencies>
<
dependency>
<
groupId>
org.springframework.cloud<
/groupId>
<
artifactId>
spring-cloud-dependencies<
/artifactId>
<
version>
${spring-cloud.version}<
/version>
<
type>
pom<
/type>
<
!--maven不支持多继承,使用import来依赖管理配置-->
<
scope>
import<
/scope>
<
/dependency>
<
!-- SpringCloud Alibaba 微服务 -->
<
dependency>
<
groupId>
com.alibaba.cloud<
/groupId>
<
artifactId>
spring-cloud-alibaba-dependencies<
/artifactId>
<
version>
${spring-cloud-alibaba.version}<
/version>
<
type>
pom<
/type>
<
scope>
import<
/scope>
<
/dependency>
<
!-- SpringBoot 依赖配置 -->
<
dependency>
<
groupId>
org.springframework.boot<
/groupId>
<
artifactId>
spring-boot-dependencies<
/artifactId>
<
version>
${spring-boot.version}<
/version>
<
type>
pom<
/type>
<
scope>
import<
/scope>
<
/dependency>
<
/dependencies>
<
/dependencyManagement>
2.修改bootstrap.xml这里一定要使用bootstrap.yml而不是application.yml,因为bootstrap.yml运行先于后者,如果使用application.yml可能会出现即使有注册的地址,还是去连接localhost:8848的情况。
spring:
application:
name: systemp
# 数据源配置
cloud:
nacos:
discovery:
# 服务注册地址
server-addr: 192.168.xx.x:8848
#命名空间
namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
#分组
group: xxx
config:
# 配置中心地址
server-addr: 192.168.xx.xx:8848
# 配置文件格式
file-extension: yml
#命名空间
namespace: b80f0aa4-3af2-a6e3-c6fda24c2bc0
#分组
group: xxx
1.新建命名空间
配置文件中namespace是需要建立的,方式如图
文章图片
2.新建分组
分组不用在nacos中新建 ,直接编写即可。
3.修改启动类在spring boot启动类上加入@EnableDiscoveryClient注解即可。
@EnableDiscoveryClient
@SpringBootApplication
public class GetwayApplication {public static void main(String[] args) {
//去除nacos日志
System.setProperty("nacos.logging.default.config.enabled", "false");
SpringApplication.run(GetwayApplication.class, args);
}}
4.启动然后启动服务,访问ip:8848/nacos可以验证是否注册成功。
文章图片
同时也发布到了指定的namespace和groupid。
4.配置中心配置中心:bootstrap.yml中的配置可以通过nacos配置修改,同时大部门不需要重启服务就可以生效。
由于引入了nacos,楼主不再使用apollo配置中心。变更原因如下
- 由于架构变更为springcloud alibaba,nacos可以承担起eureka+apollo的功能。
- 可以降低系统的复杂性。方便运维。
- 对配置中心的需求仅有动态配置,无更细腻话的权限和灰度发布等功能要求。
文章图片
文章图片
配置解释如下:
- Data ID的命名格式如下:{spring.application.name}-{spring.profiles.active}.{文件类型},也就是系统名称+dev/pro.yaml(一般情况)见下图。
文章图片
文章图片
- group:其中需要注意namespace与group需要与nacos中配置对应(这两个概念上文有介绍),否则会获取不到配置。
- 配置格式:这里因为使用了bootstrap.yml所以选择上述配置。
- 配置内容:需要在nacos中更改的配置项。
如果成功:
文章图片
同时可以监控到那台服务使用该配置。
文章图片
3.客户端接口编写
@RestController
@RefreshScope
public class DemoController {@Value("${nacostest.demo}")
private String demo;
@GetMapping("/testConfig")
public String testConfig(){
return demo;
}
}
【springcloud alibaba企业落地实战(一文带你掌握nacos基础应用)】改变配置多次调用接口,可以发现返回值发生变化。
推荐阅读
- Linux系列(查看已安装的rpm包)
- 被问题包围的空降兵,如何破圈突围
- Linux系列(Linux zip压缩 解压 文件夹)
- DruidIndexGeneratorJob源码
- i.MX6ULL驱动开发1——字符设备开发模板
- oeasy教您玩转vim - 43 - # 替换模式
- Linux下查看占用CPU与内存最高的进程
- Linux经典面试题(如何查看一个进程的内存占用)
- TCP为什么需要三次握手(用最通俗的话解释给你听)