SpringCloud(二)
目录
1.Ribbon负载均衡
1.1负载均衡原理
负载均衡流程
1.2负载均衡策略
1.3懒加载
饥饿加载
总结
2.Nacos注册中心
2.1Nacos快速入门
2.2Nacos服务分级存储模型
Nacos服务分级存储模型
服务跨集群调用问题:
服务集群属性
选择调用userservice时优选选择本地集群部署
根据集群负载均衡
根据权重负载均衡
2.3Nacos环境隔离
Nacos和eureka的区别:
3.Nacaos配置管理
3.1统一配置管理
将配置交给Nacos管理的步骤
3.2配置热更新
总结:
3.3配置共享
服务共享配置
3.4搭建Nacos集群
1.Ribbon负载均衡
1.1负载均衡原理
负载均衡流程
1.2负载均衡策略
Ribbon的负载均衡规则是一个叫做IRule的接口来定义的,每个子接口都是一种规则:
通过定义IRule实现可以修改负载均衡规则,有两种方式:
- 1.代码方式:zaiorder-service中的OrdewrApplication类中,定义一个新的Irule:
- 2.配置文件方式:在order-service的application.yml文件中,添加新的配置也可以修改规则
1.3懒加载
饥饿加载
Ribbon默认采用的是懒加载,即第一次访问才会创建LoadBalanceClient,请求时间会很长。
而饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:
总结
2.Nacos注册中心
2.1Nacos快速入门
服务注册到Nacos
1.在cloud-demo父工程中添加spring-cloud-alibaba的管理依赖:
2.注释掉原来erueka的依赖
3.添加nacos的客户端依赖:
4.修改application.yml文件,注释掉eureka地址,添加nacos地址:
2.2Nacos服务分级存储模型
Nacos服务分级存储模型
服务跨集群调用问题:
服务调用尽可能选择本地集群服务,跨集群调用延迟较高
本地集群不可访问时,再去访问其他集群
服务集群属性
1.修改application.yml,添加一下内容:
2.控制台可以看到集群变化:
选择调用userservice时优选选择本地集群部署
根据集群负载均衡
1.修改order-service中的application.yam,设置集群为HZ:
2.然后再order-service中设置负载均衡的IRUle为NacosRule,这个规则会优先寻找与自己同集群的服务:
3.注意将user-service的权重都设置为1
NacosRule负载均衡的策略:
根据权重负载均衡
实际部署会出现这样的场景:
服务器性能有差异,有性能好的,有性能差的,希望好的服务器承担用户更多的请求
Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高
--以前需要对服务器版本升级,就需要重启
总结:
2.3Nacos环境隔离
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离
1.再Nacos控制台可以创建namespace用来隔离不同的环境
3.保存后会再控制台看到这个命名空间的id:
4.修改order-service的application.yaml,添加namespace:
要想服务可以访问需要放到相同的环境下
Nacos和eureka的区别:
3.Nacaos配置管理
3.1统一配置管理
配置获取的步骤如下:
1.引入Nacos的配置管理客户端依赖:
2.再userservice中的resource目录添加一个bootstrap.yaml文件,这个文件是引导类文件,优先级高于application.yml:
将配置交给Nacos管理的步骤
3.2配置热更新
Nacos中的配置文件变更后,微服务无需重启就可以感知。不过需要通过下面两种配置实现:
方法一:再@value注入的变量所在类上添加注解@RefreshScope
方式二:使用@ConfigurationProperties注解
总结:
3.3配置共享
多环境共享的一个需求
微服务启动时会从nacos读取多个配置文件:
服务共享配置
3.4搭建Nacos集群
nacos生产环境下一定要部署为集群状态,
- 集群搭建步骤:
- 搭建MySQL集群并初始化数据库表
- 下载nacos
- 修改集群配置(节点信息),数据库配置
- 分别启动多个nacos节点
- nginx反向代理