一.Nacos配置管理
1.导入依赖:
<!--nacos配置管理依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.创建一个bootstrap.yml让服务启动的时候直接加载到本地,它的优先级最高
3.添加配置类:
spring:
application:
name: userservice # 服务名称
profiles:
active: dev # 当前使用dev环境
cloud:
nacos:
server-addr: localhost:8848
config:
file-extension: yaml # 文件后缀名
4.启动Nacos,创建配置文件
5.定义一个xxxProperties类放到config包中,加入@ConfigurationProperties(prefix = "pattern"),自动刷新,@Component注解:
6.编写要注入的属性
二.配置自动刷新
第一种:在controller加@RefreshScope注解
第二种:在@ConfigurationProperties(prefix = "pattern")
三.多环境配置共享
1.创建一个配置文件不带dev的,如userservice.yaml
2.执行的优先级:
四.Nacos集群搭建
1.用nginx来做负载均衡
2.DNS做域名解析,写入网站名称会解析成地址+端口
3.SLB是负载均衡
4.进入nocos的conf目录下,把cluster.conf.example -->变cluster.conf。通过命令窗口运行ipconfig获取IP地址,换为自己的地址。
5.进application.properties,把数据连接给放开,把端口改为在cluster.conf的任意一个地址
6.有几个地址就复制几个nacos,然后逐个启动
7.最后访问nacos看追加的是哪个地址,替换就得了
8.用ngixn做反向代理,添加配置文件:
upstream nacos-cluster {
server 自己地址:8845;
server 127.0.0.1:8846;
server 127.0.0.1:8847;
}
server {
listen 80;
server_name localhost;
location /nacos {
proxy_pass http://nacos-cluster;
}
}
9.把yaml里nacos的端口改为nginx的端口,如何把端口指向一个端口而已就会导致有一个集群宕机就不会运行了
五.OpenFeign(主要是代替RestTemplate来调用个个服务的)
1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.在启动类注入@EnableFeignClients一个注解
3.创建一个client包,定义一个UserClient接口,里面写着要调用其他服务controller的接口
4.在接口上加注解@FeignClient("userservice"),userservice是服务名
5.然后根据它自带的id查询方法
六.配置feign日志
1.第一种直接使用配置文件(局部)
2.第二种使用配置类(全局):
3.在启动类加@EnableFeignClients(defaultConfiguration = FeignClientsConfiguration.class)
七.feign的性能优化
1.使用Apache HttpClient代替默认的URLConnection连接池(面试题)
2.引入feign-httpclient依赖
3.配置文件:
八.feign的最佳实践
1.先创建一个api模块,把clent都移到模块中,然后哪个模块想调用直接继承该模块就行
2.注意:换了网络就得换ip地址,如果启动报com.alibaba.nacos.api.exception.NacosException: server is DOWN now, please try again later!错,就得把nacos里的data/protocol删除,重新启动
3.要在消费方的启动类加@EnableFeignClients(basePackages = "cn.itcast.feign.client")注解
九.GateWay网关服务
1.创建一个模块,也要放在注册中心,易于去发现别的服务
2.导入网关依赖和nacos服务与注册依赖
3.配置文件
十.路由断言(类似于if判断,为false就会检测出来,为true就放行)
1.配置文件
2.最好是放到nacos里
十一.网关过滤器
1.需要在网关配置里添加过滤器,通过请求头(给单独的服务进行拦截)
2.对所有的请求value为185都放行
3.定义全局过滤器类实现GlobalFilter接口
4.注入到springbean容器中@Component
5.获取请求头、判断请求头、结果处理