Nacos 服务注册中心,配置中心,服务管理平台(页面管理平台)
下载安装启动nacos(部署注册中心)
Windows版本下载安装。
(nacos默认集群启动,练习中使用单机启动,修改配置文件)
打开bin文件夹下的startup.cmd(Linux下为startup.sh),更改一处配置。
点击startup.cmd,启动nacos。
服务注册和发现(服务客户端)
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
配置
server.port= 客户端端口
spring.application.name= 客户端服务名称
spring:
cloud:
nacos:
discovery:
# 地址
server-addr: localhost:8848(nacos服务中心地址)
# 命名空间
# namespace: 默认是public
客户端启动后,自动把客户端的ip,端口,客户端的服务名注册在服务中心。
Nacos集群
为什么要做集群,有什么用?
- 其实就是为了应用的高可用,避免一台挂了,导致应用不可用
我们要实现的集群形式如下:需要1个Nginx+3个nacos注册中心+1个mysql
spring:
cloud:
nacos:
discovery:
# 地址
server-addr: localhost:8848(Nginx地址和监听的端口)
具体操作参考(Linux系统中nacos集群搭建看这一篇就够了_彤彤的小跟班的博客-CSDN博客_linux nacos集群
少走99%的弯路!目前B站最好的SpringCloudAlibaba入门教程,保姆级教程通俗易懂!_哔哩哔哩_bilibili
Ribbon负载均衡
在 Nacos 中,调用主要是通过 RestTemplate + Ribbon 实现的,RestTemplate 是 Spring 提供的 Restful 请求实现类,而 Ribbon 是客户端负载均衡器,通过 Ribbon 可以获取服务实例的具体信息(IP 和端口号),之后再通过 RestTemplate 加服务实例的具体信息就可以完成一次服务调用了。 nacos-discovery 依赖了Ribbon,可以不再引入。
@LoadBalanced // 使 RestTemplate 自动支持 Ribbon 负载均衡
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
// 请求并获取结果(springcloud-nacos-provider 为 Nacos 服务id)
String result =
restTemplate.getForObject("http://springcloud-nacos-provider/call/" + name, String.class);
Ribbon负载均衡策略默认是轮询
修改Ribbon负载均衡策略
方法一:配置类
@Configuration
public class RibbonRandomRuleConfig {
//方法名一定要是 iRule
@Bean
public IRule iRule(){
return new RandomRule();
}
}
方法二:配置文件
stock-service:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule #指定使用Nacos提供的负载均衡策略(优先调用同一集群的实例,基于随机&权重)