git源码下载:
https://github.com/
下载后,在解压目录下编译
mvn clean install -DskipTests -Drat.skip=true -f pom.xml
原理
1.启动后,将服务名称和实例注册到注册中心
2.每 隔五秒发送一次心跳,如果超过15,表示这个实例服务不稳定,超过30秒表示该实例挂了
3.调用的时候,从服务端拉取服务,然后通过负载均衡进行访问
4.服务每隔10秒拉取一次,保证服务列表的准确性(当列表发生变化的时候,会发送广播给订阅者,让订阅者更新服务列表 基于UDP协议)
springBoot集成nacos
1引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.添加配置
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848,localhost:8858,localhost:8888 注册中心地址
service: msb-stock 实例名,相同的实例名相同
4.启动类中添加注解
@EnableDiscoveryClient //nacos作为注册中心启用
@SpringBootApplication
public class StockApplication {
public static void main(String[] args) {
SpringApplication.run(StockApplication.class);
}
}
5.restTemplate
springCloud通过restTemplate发起http请求进行远程调用
//集成nacos后因为nacos中集成Ribbon,生成的restTemplate bean,
@Autowired
private LoadBalancerClient loadBalancerClient;
@Bean
public RestTemplate restTemplate(){
RestTemplate restTemplate = new RestTemplate();
restTemplate.setInterceptors(Collections.singletonList(new LoadBalancerInterceptor(loadBalancerClient)));;
return restTemplate;
}
//注解实现restTemplate Bean
@LoadBalanced //ribbon
@Bean
public RestTemplate restTemplate(){
return new RestTemplate();
}
6.restTemplate发起http请求
// msb-stock nacos中配置的实例名,多个实例可以同名
restTemplate.getForObject("http://msb-stock/stock/reduce/"+ productId,String.class);
//发起请求后,需要经过一个拦截器,拦截机会获取该请求的实例名msb-stock,再通过实例名获取注册的服务列表,在经过负载均衡,发起请求
nacos集群
1.复制相同的nacos实例,配置不同的端口号
application.properties
#端口号
server.port=8848
#If use MySQL as datasource:使用mysql数据库需要放开
spring.datasource.platform=mysql
#Count of DB:
db.num=1
#Connect URL of DB: 数据库配置
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=#####
db.password.0=####
2.获取本地网络ip,配置的端口号到新建的配置文件
3.配置文件内容
#2023-05-04T19:48:18.929
192.168.0.104:8848 网络ip:端口号
192.168.0.104:8858
192.168.0.104:8888
集群启动nacos startup.cmd -m -cluster
关闭nacos shutdown.sh
4.nginx负载均衡(配置)
nginx配置文件:需要完善,仅作测试
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream nacos{
server 30.42.102.145:8848 max_fails=3 fail_timeout=5s weight=1;
server 30.42.102.145:8858 max_fails=3 fail_timeout=5s weight=1;
server 30.42.102.145:8888 max_fails=3 fail_timeout=5s weight=1;
}
server {
listen 88;
proxy_pass nacos;
}
}
```
>nginx启动 start nginx.exe
>nginx重新加载配置文件 nginx -s reload
>nginx停止 nginx -s stop