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