在github上面下载安装包,点击releases进入版本选择页面,选中自己想要的版本,下载后解压到没有中文路劲的文件夹下面,到这里安装就结束了
启动非常简,进入bin目录,执行命令 进入cmd 使用如下命令或者双击startup.cmd
startup.cmd -m standalone
1.引入spring-cloud-alilbaba 的管理依赖
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2021.0.1.0
pom
import
2.注释到所有eureka的依赖
3.添加nacos客户端依赖(服务发现)
客户端依赖:
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2021.0.1.0
4.修改yml文件
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos 服务地址
5.重启服务就会发现已经注册成功了
一个服务可以有多个实例,随着业务规模的扩大,我们考虑的问题就越多了,一个服务的多个实例,就相当于一个兰子里面装了很多鸡蛋,当篮子翻了鸡蛋就全坏了,所以这样不行,就引出了分级存储模型 我们不再是服务到实例,而是服务到 服务到集群(就是一个地方的服务实例放一起,根据地域进行划分)到实例,进行了区域的划分我们可以调用本地的服务集群尽量避免跨集群调用,跨集群调用所消耗的资源,时长都会大大提高,一般不建议跨集群访问
cloud:
nacos:
server-addr: localhost:8848 # nacos 服务地址
discovery:
cluster-name: SH #代表当前所处地区
userservice:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #负载均衡规则
当配置以后,则会优先寻找本地集群的服务实例,本地集群没有才会跨集群调用,并且会产生警告,而本地集群调用里面遵循的是随机访问
在nacos图形界面中找到–>命名空间—>新建命名空间,然后获取生成命名的的uuid ,在需要隔离的微服务的yml配置文件中添加如下配置
spring:
cloud:
discovery:
namespace: 4f9f3352-ac96-49e9-8e33-957a6c0f44a4
不同环境下的服务是不可见的(不能互相交互数据)
Nacos非为临时实例和非临时实例,临时实例会每隔30秒主动向nacos报告健康状态,如果没有正常报告,则nacos会将其踢出注册中心而非临时实例是nacos主动关怀,并且非临时实例出现了问题nacos会等待其恢复,其二是服务消费者不是每次都会去拉取数据,而是会先去读取服务缓存列表,nacos还有一个特点就是说假如在服务提供者发送下次发送心跳请求时出现了问题nacos会主动向服务消费者推送消息,而ribbon不会
spring:
cloud:
nacos:
discovery:
ephemeral: false #非临时实例
启动Nacos—>Nacos图形界面—>配置管理—>点击加号新增配置并且设置好相关信息发布就可以了
使用配置,nacos客户端添加依赖
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
2.2.5-RocketMQ-RC1
新增配置文件bootstrap.yaml,被调用微服务端配置
org.springframework.cloud
spring-cloud-starter-bootstrap
3.0.1
spring:
application:
name: userservice #服务名称
profiles:
active: dev # 服务开发环境
cloud:
nacos:
server-addr: localhost:8848 #nacos地址
config:
file-extension: yaml # 配置后缀名
1.通过注解@RefreshScope 标注在类上
2.新建一个类
@Data
@Component
@ConfigurationProperties(prefix = "前缀")
public class MyConfigrationProperties {
public String dateformart;
}
@Autowired
MyConfigrationProperties myConfigrationProperties;
@RequestMapping("/date")
public String getDateName(){
LocalDateTime now = LocalDateTime.now();
String format = now.format(DateTimeFormatter.ofPattern(myConfigrationProperties.getDateformart()));
return format;
}
微服务在启动时会从nacos读取多个文件
[spring.application.name]-[spring.profiles.active].yaml(实例user service-dev.yaml) 这个与环境相关 ,
[spring.application.name].yaml(实例user service.yaml) 这个与环境无关
# 无论环境怎么改变一定会读取[spring.application.name].yaml这个文件,文件一定会加载,因此多环境配置共享可以放在这个配置里面
[spring.application.name]-[spring.profiles.active].yaml(实例user service-dev.yaml) >
[spring.application.name].yaml(实例user service.yaml) > 本地配置
尚未完成