Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(Spring Cloud回顾)
-
Spring Cloud服务协作流程图
(1)在微服务启动时,会向服务发现中心上报自身实例信息,这里ServiceB 包含多个实例。每个实例包括:IP地址、端口号信息。
(2)微服务会定期从Nacos Server(服务发现中心)获取服务实例列表。
(3)当ServiceA调用ServiceB时,ribbon组件从本地服务实例列表中查找ServiceB的实例,如获取了多个实例如
Instance1、Instance2。这时ribbon会通过用户所配置的负载均衡策略从中选择一个实例。
(4)最终,Feign组件会通过ribbon选取的实例发送http请求。
采用Feign+Ribbon的整合方式,是由Feign完成远程调用的整个流程。而Feign集成了Ribbon,Feign使用Ribbon
完成调用实例的负载均衡。
-
负载均衡(Ribbon)
服务器端负载均衡
在负载均衡器中维护一个可用的服务实例清单,当客户端请求来临时,负载均衡服务器按照某种配置好的规则(负载均衡算法)从可用服务实例清单中选取其一去处理客户端的请求。这就是服务端负载均衡。
例如Nginx,通过Nginx进行负载均衡,客户端发送请求至Nginx,Nginx通过负载均衡算法,在多个服务器之间选择一个进行访问。即在服务器端再进行负载均衡算法分配。
客户端服务负载均衡
Ribbon就属于客户端负载均衡。在ribbon客户端会有一个服务实例地址列表,在发送请求前通过负载均衡算法选择一个服务实例,然后进行访问,这是客户端负载均衡。即在客户端就进行负载均衡算法分配。
Ribbon是一个客户端负载均衡器,它的责任是从一组实例列表中挑选合适的实例,如何挑选?取决于负载均衡策略 。
Ribbon核心组件IRule是负载均衡策略接口,它有如下实现,大家仅做了解:
- RoundRobinRule(默认):轮询,即按一定的顺序轮换获取实例的地址。
- RandomRule:随机,即以随机的方式获取实例的地址。
- AvailabilityFilteringRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,以及并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;
- WeightedResponseTimeRule: 根据平均响应时间计算所有服务的权重,响应时间越快,服务权重越大,被选中的机率越高;刚启动时,如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够时,会切换到WeightedResponseTimeRule
- RetryRule: 先按照RoundRobinRule的策略获取服务,如果获取服务失败,则在指定时间内会进行重试,获取可用的服务;
- BestAvailableRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;
- ZoneAvoidanceRule: 默认规则,复合判断server所在区域的性能和server的可用性选择服务器;
可通过下面方式在spring boot 配置文件中修改默认的负载均衡策略
account‐service.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
account-service 是调用的服务的名称,后面的组成部分是固定的。
-
Feign
Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。Feign的英文表意为“假装,伪装,变形”, 可以理解为将HTTP报文请求方式伪装为简单的java接口调用方式。
详情请参考:https://blog.csdn.net/qq_28497823/category_9581324.html
推荐阅读
-
Spring-Cloud-Alibaba-Nacos-Discovery 安装使用
-
Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(Spring Cloud回顾)
-
Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(服务注册+配置管理示例)
-
Spring Cloud Alibaba(1) 实现服务注册与发现 Nacos Discovery
-
Spring Cloud Alibaba系列使用(二)----Nacos注册中心
-
Spring Cloud Alibaba-使用nacos做注册中心
-
Spring Cloud Alibaba(三)——使用 Nacos config 实现配置管理
-
记录使用spring-cloud-starter-alibaba-nacos-config 注册到 nacos 时配置问题。
-
Spring Cloud Alibaba 学习(4)- 客户端使用nacos config
-
使用 Spring Cloud Alibaba Nacos Config 作为配置中心