必看
因为之前了解过alibaba对spring cloud框架的封装升级,所以,自己抽时间尝试用了用。在这个过程中,我也参考相关博客的文章,但是不得不说,文章基本缺胳膊少腿,参考别人博客来,基本不要想跑起来。所以,自己在填坑的过程中,基本把整套流程全部跑通了,并且各组件也都用来起来。按照我的节奏来,保证大家能够正常的将spring cloud alibaba这套框架用起来。并且我也会在最后把我遇到的坑写出来,供大家参考。也希望大家在尝试的过程中,多返过去思考下这个框架更细节的东西和原理。
本文参考博客:https://blog.csdn.net/autfish/article/details/90173658
我在博客中基本都是使用截图,截图都是全的,不会漏掉全部配置,代码的话,建议大家自己写一遍。
正文
参考博客建立了两个服务,如图:
nacos是做什么的:
类似于spring cloud eureka 和 spring cloud config的结合;提供服务注册和配置中心的功能
nacos的安装:
下载地址:https://github.com/alibaba/nacos/releases
这里以windows进行示例,Linux参考其他。
本文使用的是nocos的1.2.1版本
运行:如图所示,双击nacos文件bin目录下的startup.cmd
运行成功:
nocos默认使用的端口是8848(珠穆朗玛峰的高度)
浏览器访问:
默认账号密码:nacos
创建一个springBoot模块:payment-service
大家可以看我的项目结构:
编辑payment-service中pom.xml文件:
填坑说明:我这里使用的版本和博客版本不一致,在集成的过程中,因为存在版本冲突问题,将springBoot的版本和SpringCloud版本都换了
添加nocos相关包:
编写实体Balance.java:
public class Balance {
private int id;
private int diamond;
private int ticket;
private Stringmessage;
//填坑说明:当时在这里的时候少写了一个空构造方法,所以这个类在反序列化的时候报错了,记得不要漏了。
public Balance (){
}
public Balance (int id,int diamond,int ticket){
this(id,diamond,ticket,"OK");
}
public Balance(int id, int diamond, int ticket, String message) {
this.id = id;
this.diamond = diamond;
this.ticket = ticket;
this.message = message;
}
}
添加配置文件:application.yml
添加配置文件:bootstrap.yml
其中 server-addr即Nacos监听IP和端口
创建PaymentController:
@RestController
@RefreshScope
public class PaymentController {
// nacos config 会覆盖yml的原始配置,并且要求yml参数必须有。否则保持。同一配置文件组要求参数一样
@Value("${sleep}")
private int sleep;
@Value("${name}")
private Stringname;
private static final Loggerlogger= LoggerFactory.getLogger(PaymentController.class);
final static MapbalanceMap =new HashMap() {{
put(1, new Balance(1, 10, 1000));
put(2, new Balance(2, 0, 10000));
put(3, new Balance(3, 100, 0));
}
};
@RequestMapping("/pay/balance")
public BalancegetBalance(Integer id) {
System.out.println("我的名字="+name);
System.out.println("request: /pay/balance?id=" + id +", sleep: " +sleep);
if(sleep >0) {
try {
Thread.sleep(sleep);
}catch (InterruptedException e) {
e.printStackTrace();
}
}
if(id !=null &&balanceMap.containsKey(id)) {
return balanceMap.get(id);
}
return new Balance(0, 0, 0);
}
}
启动服务试着访问下:
接下来我们开始使用nocos在线配置功能:
新建一个配置文件:
nacos是动态配置,发布后,可以立即尝试刷新访问地址,我们可以看到,nacos的在线配置已经覆盖了我们的yml文件
到这里,nacos作为动态配置中心就完毕了。
下一篇:spring cloud alibaba 实战篇(二)——nacos注册中心