我的GitHub地址:https://github.com/hiders1/cloud-demo
GitHub的使用见:https://www.cnblogs.com/jinjiyese153/p/6796668.html
VSC不见的话参考:https://blog.csdn.net/Ericjim/article/details/129215479
Nacos服务注册中心
下载安装:
1:Window系统远程下载GitHub地址:https://github.com/alibaba/nacos
2:下载解压之后,在bin的目录之下,地址栏输入cmd,输入命令:startup.cmd -m standalone启动即可(原因参考:https://www.cnblogs.com/jianping2012/p/13523456.html)
浏览器用控制台地址网页登录,账号密码都是:nacos
接下来是服务注册到naco:
1:父工程pom.xml中添加spring-cloud-alibaba的管理依赖
<!--nacos的管理依赖-->
<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>
2:添加nacos的客户端依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
远程调用
String url = "http://userservice/user/" + order.getUserId();//服务名称userservice
// 2.2.发送http请求,实现远程调用
User user = restTemplate.getForObject(url, User.class);
配置集群属性
spring:
cloud:
nacos:
discovery:
cluster-name: HZ #集群名称
负载均衡Ribbon优先访集群本地
userservice: #服务名称
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
权重配置
进入nacos页面,详情——编辑——修改权重
环境隔离namespace
namespace>Group>Service/Data
新建namespace
配置
spring:
cloud:
nacos:
server-addr: localhost:8848 # nacos服务地址
discovery:
cluster-name: HZ
namespace: 2b5e168e-ef79-4f2b-8470-affcbce058d0 # dev环境
隔离成功后(左上角有public[系统默认],和dev这个环境,说明已经隔离开来)
这个时候远程调用访问就会报错(不再同一个环境了)
临时实例和非临时实例
与Euraka先比,Nacos区别主要在于
1:临时健康的检查上,nacos会把服务提供者划分为临时实例和非临时实例(默认为true)
临时实例:心跳检测,每隔一段时间发送一次心跳给nacos(频率快些),心跳不跳时候,nacos从服务列表将之剔除
非临时实例(永久实例):不会做心跳,nacos自动发请求询问,服务挂了,nacos不会把该实例从列表剔除,等服务恢复健康
2:服务消费者
Euraka采用的是定时拉取pull,30s内有服务提供者挂了,就可能出现问题,服务更新效率差、不及时
nacos采用pull+push结合,nacos发现有消息(服务提供者)挂了,立马发送消息给服务消费者,服务消费者就立马更新消息,更及时些
非临时实例的配置
spring:标签:负载,SpringCloud,nacos,alibaba,实例,spring,组件,com,cloud From: https://www.cnblogs.com/-emo/p/17321170.html
cloud:
nacos:
discovery:
ephemeral: false # 是否是临时实例