首先进入到GitHub:Releases · alibaba/nacos (github.com)
目前2.2.3为稳定版。
下载好后,解压到指定目录,进入到bin目录下,点击 tartup.cmd 或者使用管理员身份打开cmd,使用
startup.cmd -m standalone
命令。
访问 (Nacos默认端口为8848)
http://127.0.0.1:8848/nacos
com.alibaba.cloud
spring-cloud-alibaba-dependencies
2.2.5.RELEASE
pom
import
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
spring:
cloud:
nacos:
server-addr: loaclhost:8848
服务调用尽可能选择本地集群的服务,跨集群调用延迟较高
本地集群不可访问时,再去访问其他集群
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ #配置集群名字,也就是机房位置,比如:HZ(杭州)
spring:
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ #配置集群名字,也就是机房位置,比如:HZ(杭州)
stock-service:
ribbon:
# 基于权重的负载均衡策略
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
实际部署会出现如下问题:
服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望较好的机器承担更多的用户请求。
Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高。
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离。
修改order-service的application.yml, 添加 namespace
spring:
datasource:
url: jdbc:mysql://localhost:3306/springcloud_study?useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
application:
name: orderservice
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: HZ
namespace: 43142f0e-9b6c-4747-b6e6-6790e0fe38e3 #填入id
总结:
namespace来做环境隔离
每个namespace都有唯一id
不同namespace下的服务不可见
服务注册到Nacos时,可以选择注册为临时或非临时实例,通过下面来配置:
spring:
cloud:
nacos:
discovery:
ephemeral: false # 设置为非临时实例
共同点:
都支持服务注册和服务拉取
都支持服务提供心跳方式做健康检查
不同点:
Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式。
临时实例心跳不正常会被剔除,非临时实例则不会被剔除。
Nacos支持服务列表变更的消息推送模式,服务列表更新及时。
Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Erueka采用AP模式。
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 开发环境
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml # 文件后缀名
Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要下面两种配置实现:
@Slf4j
@RestController
@RequestMapping("/user")
@RefreshScope
public class UserController {
新建配置类
@Data
@Component
@ConfigurationProperties(prefix = "pattern")
public class PatternProperties {
private String dateFormat;
}
在usercontroller中注入依赖调用对象。
微服务启动时会从nacos读取多个配置文件:
[spring.application.name]-[spring.profiles.active].yaml, 例如:userservice-dev.yaml
[spring.application.name].yaml, 例如:userservice.yaml
无论profile如何变化,[spring.application.name].yaml这个文件一定会加载,因此多环境共享配置可以写入这个文件