windows命令
startup.cmd -m standalone
服务注册到Nacos
- 在cloud-demo父工程中添加spring-cloud-alibaba的管理依赖
1 2 3 4 5 6 7
| <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.2.5.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency>
|
1 2 3 4 5
| <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
|
1 2 3 4
| spring: cloud: nacos: server-addr: localhost:8848
|
Nacos服务分级存储模型
- 一个服务分为多个集群
- 一个集群有多个实例
- 服务跨集群调用问题
- 服务调用尽可能选择本地集群的服务,跨集群调用较迟较高
- 本地集群不可访问时,再去访问其它集群
修改指定实例集群
逐个修改,逐个启动
1 2 3 4 5
| spring: cloud: nacos: discovery: cluster-name: HZ
|
NacosRule负载均衡
- 默认使用轮询规则
- 在服务端中设置负载均衡的IRule为NacosRule,这个规则优先会寻找与自己同集群的服务
1 2 3
| userservice: ribbon: NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
|
- 注意将客户端权重都设置为1
- NacosRule优先选择本地集群,在本地多个集群进行随机负载均衡
- 跨集群访问服务端会发出警告
权重负载均衡
- 服务器设备性能有差异,部分实例所在机器性能差别,我们希望好的机器承担更多用户请求
- Nacos提供了权重配置来控制访问频率,权重越大访问频率越高
- 在控制台编辑页面修改,范围0-1,0不会访问
环境隔离
- Nacos中服务存储和数据存储的最外层都是namespace,用来做最外层空间隔离
- 从外到内:Namespace → Group → Service/Data
- 在控制台新建命名空间
- 在配置文件添加namespace
1 2 3 4 5
| spring: cloud: nacos: discovery: namespace: 7550979b-3a00-4833-b82f-19f2d9e22b2e
|
Nacos注册中心细节
- 消费者定时拉取服务,存储在服务列表缓存,直接使用
- 健康检测与Eureka区别
- 实例分为临时实例与非临时实例
- 默认是临时实例,采用心跳检测,实例给注册中心提供信息
- 非临时实例不会做心跳检测,由nacos主动询问
- nacos不会剔除非临时实例,会等待恢复
- 有服务变更,会主动推送消息给消费者,更新缓存
临时实例和非临时实例
修改配置文件
1 2 3 4 5
| spring: cloud: nacos: discovery: ephemeral: false
|