由于博主没有带自己的电脑,还想复习一波,于是只能查阅资料以及靠回忆写这篇笔记,侵删。
阿里的一个开源产品,是针对微服务架构中的服务发现、配置管理、服务治理的综合型解决方案。
(用来实现配置中心和服务注册中心)
①服务发现与服务健康监测
②动态配置服务
③动态DNS服务
④服务及其元数据管理
在微服务架构中一个业务流程需要多个微服务通过网络接口调用完成业务处理,服务消费方从服务注册中心获取服 务提供方的地址,从而进行远程调用,这个过程叫做服务发现。
简而言之,就是服务消费方通过服务发现中心找到服务提供方,从而进行远程调用的过程。
Eureka AP模型
Consul CP模型
Zookeeper CP模型
Nacos CP+AP模型
64位操作系统
JDK 1.8+
Maven3.2+
Nacos默认端口为8848,请确保该端口不被占用。
Linux/Unix/Mac启动:
#启动命令(standalone代表着单机模式运行,非集群模式)
sh startup.sh -m standalone
#如果是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows启动:
cmd startup.cmd
确保是否启动成功,访问 http://127.0.0.1:8848/nacos 或 http://localhost:8848/nacos,账号密码默认均为nacos
org.springframework.boot
spring‐boot‐dependencies
2.1.3.RELEASE
pom
import
org.springframework.cloud
spring‐cloud‐dependencies
Greenwich.RELEASE
pom
import
com.alibaba.cloud
spring‐cloud‐alibaba‐dependencies
2.1.0.RELEASE
pom
import
com.alibaba.cloud
spring‐cloud‐starter‐alibaba‐nacos‐discovery
在服务提供方中配置nacos服务发现相关配置
spring:
application:
name: nacos-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
在服务消费方配置nacos服务发现相关配置
spring:
application:
name: nacos-consumer
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
命名空间(Namespace)用于进行用户粒度的隔离,Namespace 的常用场景之一是不同环境的隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
使用 nacos 可以分别建三个不同的 namespace。
注意:
public是nacos的一个保留空间,创建时不要和public重名。
在nacos界面点击 菜单配置管理->配置列表 来发布配置,nacos-consumer服务从nacos读取配置
Namespace: public
Data ID: nacos-consumer.yaml
Group : DEFAULT_GROUP
配置格式: YAML
配置内容:common:
name: application1 config
添加依赖
com.alibaba.cloud
spring‐cloud‐starter‐alibaba‐nacos‐config
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # 配置中心地址
file-extension: yaml
group: DEFAULT_GROUP
注意:要使用配置中心就要在bootstrap.yml中来配置,bootstrap.yml配置文件的加载顺序要比application.yml要优先。
@Value("${common.name}")
private String common_name;
@GetMapping(value = "/configs")
public String getvalue(){return common_name;}
如果要实现配置的动态更新,进行如下改造:
//注入配置文件上下文
@Autowired
private ConfigurableApplicationContext applicationContext;
@GetMapping(value = "/configs")
public String getConfigs(){
return applicationContext.getEnvironment().getProperty("common.name"); }
可以通过配置spring.cloud.nacos.config.refresh.enabled=false来关闭动态刷新
对于Nacos配置管理,通过Namespace、group、Data ID能够定位到一个配置集。
例(在yml文件下spring下cloud下nacos下):
config:
server‐addr: 127.0.0.1:8848 # 配置中心地址
file‐extension: yaml
namespace: a1x8e872‐3117‐48c4‐9de3‐e9ddc2af90a8 #开发环境
group: DEFAULT_GROUP