安装NACOS后使用启动命令
startup.cmd -m standalone //win
bin
sh startup.sh -m standalone //linux
启动后在浏览器访问
http://localhost:8848/nacos
//默认密码是
账号:nacos
密码:nacos
进入主界面
将product微服务注册到nacos
1.在pom.xml中添加nacos的依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
在启动类添加注解(由于新版本特性,可加可不加,但是为了规范性还是添加为好)
@EnableDiscoveryClient
如果使用window系统可将虚拟机网络禁用此时地址变为本机ip
可以再application.properities中修改配置
修改过后可在nacos中查询到
通过修改其他model可以展示出同样的效果
负载均衡
什么是负载均衡
通俗的讲, 负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上 进行执行。
根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。
服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡
而客户端负载均衡指的是发生在服务请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请 求。
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
由于版本问题不添加运行时会报错!!
使用时引入负载均衡客户端
使用轮询方法
发现客户端
使用随机方法
OpenFeign 组件之间的调用
默认负载均衡的策略就是一个轮询
添加依赖
<!--使用openFeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在类上添加
@EnableFeignClients
说明开启了对OpenFeign的支持
括号里面写什么就代表要去找哪个微服务
配置策略
具体代码(包路径自己填写)。
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.loadbalancer.core.RandomLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ReactorLoadBalancer;
import org.springframework.cloud.loadbalancer.core.ServiceInstanceListSupplier;
import org.springframework.cloud.loadbalancer.support.LoadBalancerClientFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
public class LoadBalancerConfig {
@Bean
ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME); //loadbalancer.client.name
// 对应的需要进行负载均衡的名字是什么
System.out.println("======"+name);
// product
return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
}
}
添加注解
防止服务熔断
添加实现类
是实现类生效添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
之前的接口上加一个fallback
the last one ~ 开启feign 对sentinel的支持
feign.sentinel.enabled=true