采用Nacos作为注册中心和配置中心,Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
网关框架
采用Spring Cloud Gateway网关控制框架,Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。
SpringCloud Gateway功能特征如下:
1)基于Spring Framework 5, Project Reactor 和 Spring Boot 2.0 进行构建;
2)动态路由:能够匹配任何请求属性;
3)集成 Spring Cloud 服务发现功能;
4)可以对路由指定 Predicate(断言)和 Filter(过滤器);
5)易于编写的 Predicate(断言)和 Filter(过滤器);
6)集成Hystrix的断路器功能;
7)请求限流功能;
8)支持路径重写。
负载均衡框架
采用Ribbon解决客户端负载均衡问题,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等解决方案,Ribbon的负载均衡算法有:
1)RoundRobinRule:轮询;
2)RandomRule:随机;
3)AvailabilityFilteringRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问;
4)WeightedResponseTimeRule:根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高。刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule
5)RetryRule:先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务;
6)BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务;
7)ZoneAvoidanceRule:默认规则,复合判断server所在区域的性能和server的可用性选择服务器。
软件服务部署在服务器上,启动后,会将服务的接口注册在Nacos注册中心中,并采用心跳机制,告诉注册中心该服务是否健康,注册中心可以查看服务的健康状况,出现调用不到的情况后,注册中心会剔除该服务,客户端在调用服务后,Ribbon从注册中心中取出可以正常服务的接口,并采用轮询、随机等方式实现负载均衡效果。
延迟容错框架
采用Hystrix延迟容错框架,来处理分布式系统的延迟和容错情况,在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。Hystrix的主要功能:
1)服务降级:整体资源不够了,忍痛将某些服务先关掉,带服务正常后,再开启;
2)服务熔断机制是应对雪崩效应的一种微服务链路保护机制,当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。
Hystrix提供了准实时的调用监控(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。