一、下载
发布历史 | Nacos 官网https://nacos.io/download/release-history/?spm=5238cd80.2ef5001f.0.0.3f613b7cj5lVIM我这里是2.4.3版本,下载好之后解压到无中文空格目录下,推荐放在开发环境的文件夹下,没有的从现在开始,养成良好的学习习惯
二、原神启动
去bin目录下cmd打开
startup.cmd -m standalone
如图所示 启动之后:http://localhost:8848/nacos
三、引入坐标
<!-- 服务注册发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 负载均衡-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
四、配置
pring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
#暂未⽤到配置中⼼功能,需要关闭配置检查
spring.cloud.nacos.config.import-check.enabled=false
五、配置类与启动类
1、启动类注解@EnableDiscoveryClient以开启服务注册与发现功能
@EnableDiscoveryClient //开启服务注册与发现功能
public class OrderMainApplication {
public static void main(String[] args) {
SpringApplication.run(OrderMainApplication.class, args);
}
2、
@LoadBalanced // 注解式负载均衡
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
六、注入并调用
@Autowired
RestTemplate restTemplate;
调用之后就实现了远程调用以及负载均衡
private Product getProductFromRemoteWithLoadBalanceAnnotation(Long productId) {
String url = "http://service-product/product/" + productId;
// 3.发送http请求,获取到商品信息 service-product会被动态替换
Product product = restTemplate.getForObject(url, Product.class);
return product;
}
第二次写,希望大家多多指点,互相提升,不玻璃心
1. 负载均衡调⽤只需要传⼊ 服务名
2. 请求发起之前会⾃动去注册中⼼确定微服务地址
3. 如果微服务宕机,会⾃动剔除在线名单,请求将不会发过去
经典⾯试题: 如果注册中⼼宕机,远程调⽤是否可以成功?
1. 从未调⽤过,如果宕机,调⽤会⽴即失败
2. 调⽤过,如果宕机,因为会缓存名单,调⽤会成功
3. 调⽤过,如果注册中⼼和对⽅服务宕机,因为会缓存名单,调⽤会阻塞后失败(Connection Refused)