ribbon是基于netfilx ribbon实现的一个工作在consumer端的负载均衡工具,提供了很多负载均衡策略:轮询、随机
nacos集成了ribbon 不需要启动器
先配置一个RestTemplate
RestTemplate
是由Spring
框架提供的一个可用于应用中调用rest
服务的类它简化了与http
服务的通信方式,统一了RESTFul
的标准,封装了http
连接,我们只需要传入url
及其返回值类型即可。相较于之前常用的HttpClient
,RestTemplate
是一种更简单的调用RESTFul
服务的方式。
@Configuration
public class BeanConfig {
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
利用注解开启负载均衡 @LoadBalanced//开启负载均衡
负载均衡默认轮询策略 可以自行配置随机策略
@Configuration
public class BeanConfig {
@Bean
/**
* 添加了@LoadBalanced注解之后,Ribbon会给restTemplate请求添加一个拦截器,在拦截器中获取
* 注册中心的所有可用服务,通过获取到的服务信息(ip,port)替换 serviceId 实现负载请求。
*/
@LoadBalanced//开启负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
//随机策略
@Bean
public IRule iRule(){
return new RandomRule();
}
}
application.yml
server:
port: 8090
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.81.130
application:
name: ribbon-provider
server:
port: 8099
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.81.130
application:
name: ribbon-provider
测试
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@Autowired
private RestTemplate restTemplate;
@Autowired
private DiscoveryClient discoveryClient;//获取服务的实例的工具类
@RequestMapping("/getUserById/{id}")
public User getUserById(@PathVariable("id") Integer id){
String url ="http://ribbon-provider/provider/getUserById/"+id;
return restTemplate.getForObject(url,User.class);
}
}
//不使用ribbon:ip:port
//String serviceUrl = "127.0.0.1:9090";
//使用ribbon:不再使用ip:port的方式,而是改成了serviceId(即Nacos中注册的服务名称)
nacos集群搭建
1)修改nacos的cluster.conf,配置3台nacos的通讯地址
cd /usr/local/nacos/conf
cp cluster.conf.example cluster.conf
vim cluster:
192.168.81.130:8848
192.168.81.130:8849
192.168.81.130:8850
复制3台nacos
cd /usr/local
mkdir nacos_cluster
cp -r nacos nacos_cluster/nacos_8848
cp -r nacos nacos_cluster/nacos_8849
cp -r nacos nacos_cluster/nacos_8850
修改3台nacos的port
vim /usr/local/nacos_cluster/nacos_8849/conf/application.properties:
server.port=8849
vim /usr/local/nacos_cluster/nacos_8849/conf/application.properties:
server.port=8850
启动集群
cd /usr/local/nacos_cluster/nacos_8848/bin
./startup
cd /usr/local/nacos_cluster/nacos_8849/bin
./startup
cd /usr/local/nacos_cluster/nacos_8850/bin
./startup
搭建nginx
1)安装c语言环境
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
2)下载nginx
cd /usr/upload
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
3)解压
tar -zxvf nginx-1.12.0.tar.gz
4)配置安装路径
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx
5)编译并安装
make && make install
6)启动和关闭
启动:
cd /usr/local/nginx/sbin
./nginx
关闭:
cd /usr/local/nginx/sbin
./nginx -s stop
7)配置nginx代理nacos集群
upstream nacos {
server 192.168.81.130:8848;
server 192.168.81.130:8849;
server 192.168.81.130:8850;
}
server {
location / {
proxy_pass http://nacos;
}
}