技术/杨33
spring-cloud-alibaba官方中文指导文档:
github/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
它支持这么多的组件:
替代Eureka做服务注册中心,替代Config做服务配置中心。
1、拉取镜像:docker pull nacos/nacos-server:1.1.4
2、创建并启动Nacos容器:
docker run --env MODE=standalone --name nacos -p 8848:8848 -d nacos/nacos-server:1.1.4
特别指定了--env MODE=standalone,env参数是指定容器所处环境,这里是指建立单机版的nacos。
3、访问古玩管理界面:
192.168.109.130:8848/nacos/#/login
默认用户名/密码:nacos/nacos
nacos登录界面
nacos管理界面
1、编码服务提供者模块
首先,修改 pom.xml 文件,引入 Nacos Discovery Starter。
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
修改application.yml文件
server:
port: 9001
spring:
application:
name: cloudalibaba-provider-payment
cloud:
nacos:
discovery:
server-addr: 192.168.109.130:8848
使用 @EnableDiscoveryClient 注解开启服务注册与发现功能
@SpringBootApplication
@EnableDiscoveryClient
public class AliProviderPayment9001 {
public static void main(String[] args) {
SpringApplication.run(AliProviderPayment9001.class, args);
}
}
Controller接口类
@RestController
public class AliPaymentController {
@Value(value="${server.port}")
private String port;
@GetMapping(value="/echo/{string}")
public String echo(@PathVariable String string) {
return string + port;
}
}
2、编码服务消费者模块
pom.xml、application.yml文件,主启动类,这些修改跟服务提供者模块一样。另外添加两个不一样的类:
配置类引入RestTemplate
@Configuration
public class Config {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
}
Controller接口类
@RestController
public class OrderController {
@Resource
private RestTemplate restTemplate;
@GetMapping(value="/consumer/echo/{str}")
public String rest(@PathVariable String str) {
return restTemplate.getForObject("cloudalibaba-provider-payment/echo/" + str, String.class);
}
}
3、启动服务消费者、服务提供者主启动类,nacos默认提供负载均衡功能
nacos管理界面上的服务列表出现了两个刚刚注册进来的服务。
服务消费者远程调用服务提供者服务的接口:
localhost:83/consumer/echo/666
1、新建module:
cloudalibaba-nacosconfig-client3377
2、修改pom.xml文件
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
3、bootstrap.yml文件
server:
port: 3377
spring:
application:
name: cloudalibaba-nacosconfig-client
cloud:
nacos:
discovery:
server-addr: 192.168.109.130:8848 #nacos作为服务注册中心的地址
config:
server-addr: 192.168.109.130:8848 #nacos作为配置中心的地址
file-extension: yaml
4、application.yml
spring:
profiles:
active: dev
5、nacos管理界面新增配置文件
dataId 的拼接格式如下:
${prefix} - ${springfiles.active} . ${file-extension}
prefix 默认为spring.application.name 的值。
springfiles.active 即为当前环境对应的 profile。
file-extension 为配置内容的数据格式,通过配置项
spring.cloud.nacos.config.file-extension来配置。
6、主启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConfigClientMain3377 {
public static void main(String[] args) {
SpringApplication.run(ConfigClientMain3377.class, args);
}
}
7、业务controller类
@RestController
@RefreshScope //nacos的动态刷新
public class ConfigClientController {
@Value(value="${config}")
private String configInfo;
@GetMapping(value="/config/info")
public String echo() {
return configInfo;
}
}
8、启动主启动类,访问:
localhost:3377/config/info
查询到配置中信息。
重播
播放
00:00
/
00:00
正在直播
00:00
进入全屏
画中画
点击按住可拖动视频
三级分级目录:Namespace、Group、DataID
1、通过DataID区分环境的配置方案
空间Namespace、分组Group都是一样的使用默认,DataID不同来区分环境。
指定springfiles.active和配置文件的DataID,实现在不同的环境下读取不同的配置。
修改application.yml文件中的springfiles.active属性,进行多环境下的配置文件读取。
spring:
profiles:
#active: dev #开发环境
active: test #测试环境
管理界面下,配置文件的DataID不同
2、通过Group区分环境的配置方案
空间Namespace、DataID都是一样的使用默认,分组Group不同来区分环境。
bootstrap.yml文件中的属性
spring.cloud.nacos.config.group指定分组名称。
spring:
application:
name: cloudalibaba-nacosconfig-client
cloud:
nacos:
discovery:
server-addr: 192.168.109.130:8848 #nacos作为服务注册中心的地址
config:
server-addr: 192.168.109.130:8848 #nacos作为配置中心的地址
file-extension: yaml
group: DEV_GROUP
3、通过Namespace区分环境的配置方案
在bootstrap.yml文件中配置
spring.cloud.nacos.config.group和
spring.cloud.nacos.config.namespace
spring:
application:
name: cloudalibaba-nacosconfig-client
cloud:
nacos:
discovery:
server-addr: 192.168.109.130:8848 #nacos作为服务注册中心的地址
config:
server-addr: 192.168.109.130:8848 #nacos作为配置中心的地址
file-extension: yaml
group: DEV_GROUP
namespace:
60fbf70c-8678-4ea5-abd2-4985b79bed99 #命名空间ID
联系客服