SpringCloud Alibaba 学习
SpringCloud Nacos Config 配置中心
# 下载源码
git clone https://github.com/alibaba/nacos.git
# 进入nacos文件夹,打开cmd窗口执行
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
因为下载下来的nacos-server使用的时cluster集群模式,这个模式是要求使用mysql的。启动命令指定为单机模式启动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EdiKUVVF-1624350777039)(SpringCloud-Nacos_files/1.png)]
http://localhost:8848/nacos 用户名和密码都是nacos
<properties>
<spring-cloud.version>Greenwich.SR6</spring-cloud.version>
<spring-cloud-alibaba.version>2.1.4.RELEASE</spring-cloud-alibaba.version>
</properties>
<!-- SpringBoot版本管理 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/>
</parent>
<!- SpringCloud依赖管理 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- alibaba的springcloud组件依赖管理 -->
<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>
</dependencies>
</dependencyManagement>
<!-- nacos配置中心依赖 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
因为bootstrap.properties加载顺序比application.properties要早,所以springcloud-nacos-config的配置信息要在bootstrap.properties中定义,否则配置中心失效因为找不到配置中心注册地址信息
# bootstrap.properties
spring.application.name=example
spring.profiles.active=dev
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=lzj
spring.cloud.nacos.config.file-extension=yml
spring.cloud.nacos.config.encode=utf-8
在nacos配置中心可视化的dataid 要与 配置文件中
s
p
r
i
n
g
.
a
p
p
l
i
c
a
t
i
o
n
.
n
a
m
e
−
{spring.application.name}-
spring.application.name−{spring.profiles.active}.
s
p
r
i
n
g
.
c
l
o
u
d
.
n
a
c
o
s
.
c
o
n
f
i
g
.
f
i
l
e
−
e
x
t
e
n
s
i
o
n
,
如
果
不
配
置
s
p
r
i
n
g
.
p
r
o
f
i
l
e
s
.
a
c
t
i
v
e
,
d
a
t
a
i
d
中
‘
−
{spring.cloud.nacos.config.file-extension},如果不配置spring.profiles.active,dataid中‘-
spring.cloud.nacos.config.file−extension,如果不配置spring.profiles.active,dataid中‘−{spring.profiles.active}’也不需要了
group 也要与配置文件中 spring.cloud.nacos.config.group【默认组是 DEFAULT_GROUP】 一致
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${Person.name:CESHI_LZJ}")
private String name;
@Value(value = "${Person.age:25}")
private Integer age;
@Value(value = "${Person.sex:CESHI_LZJ_MAN}")
private String sex;
@RequestMapping("/get")
public Map<String, Object> get() {
Map<String, Object> map = Maps.newHashMap();
map.put("name", name);
map.put("age", age);
map.put("sex", sex);
return map;
}
}
SpringCloud Nacos Config 配置中心 多文件加载与共享配置
通过配置配置文件
# bootstrap.properties
spring.cloud.nacos.config.shared-configs[0].data-id=admin-log.yml
spring.cloud.nacos.config.shared-configs[0].group=lzjShare
spring.cloud.nacos.config.shared-configs[0].refresh=true
spring.cloud.nacos.config.shared-configs[1].data-id=admin-mysql.yml
spring.cloud.nacos.config.shared-configs[1].group=lzjShare
spring.cloud.nacos.config.shared-configs[1].refresh=true
# 默认情况下,只有默认加载的配置才会自动刷新,对于这些扩展的配置加载内容需要配置该设置时候才会实现自动刷新。
# 如果不同配置文件存在相同的key时,后面加载的配置会覆盖之前加载的配置。
SpringCloud Nacos Discovery 注册中心
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
# application.yml
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
@RestController
public class TestController {
@Autowired
LoadBalancerClient loadBalancerClient;
@GetMapping("/toGetUser")
public Map toGetUser() {
// 通过spring cloud common中的负载均衡接口选取服务提供节点实现接口调用
ServiceInstance serviceInstance = loadBalancerClient.choose("user");
String url = serviceInstance.getUri() + "/config/get";
System.out.println(url);
RestTemplate restTemplate = new RestTemplate ();
return restTemplate.getForObject(url, Map.class);
}
}
Nacos数据持久化
在搭建Nacos集群之前,我们需要先修改Nacos的数据持久化配置为MySQL存储。默认情况下,Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题,Nacos采用了集中式存储的方式来支持集群化部署,目前只要支持MySQL的存储。
-
第一步:安装数据库,版本要求:5.6.5+
-
第二步:初始化MySQL数据库,数据库初始化文件: nacos-mysql.sql,该文件可以在Nacos程序包下的 conf目录下获得。
-
第三步:修改 conf/application.properties文件,增加支持MySQL数据源配置,添加(目前只支持mysql)数据源的url、用户名和密码
一键查询淘宝/拼多多内部优惠券,每日大额外卖红包,购物省钱的宝藏工具