Java技术栈选择初级指南

Java技术栈选择初级指南

一文读懂Eureka,Feign,Ribbon,Hystrix,Zuul核心组件间的关系

限流和熔断:Sentinel、Hystrix、Resillience4j

参考: 书籍《spring cloud微服务架构 实战派》龙中华-电子工业出版社-P157

Sentinel Hystrix Resilience4j
隔离策略 信号量隔离(并发线程数限流) 线程池隔离/信号量隔离 信号量隔离
熔断降级策略 基于响应时间、异常比率、异常数 基于异常比率 基于异常比率、响应时间
实时统计实现 滑动窗口(LeapArray) 滑动窗口(基于RxJava) 环形缓冲器(Ring Bit Buffer)
动态规则配置 支持多种数据源 支持多种数据源 有限支持
扩展性 多个扩展点 插件的形式 接口的形式
基于注解的支持 支持 支持 支持
限流 基于QPS,支持基于调用关系的限流 有限的支持 rate limit
流量整形 支持预热模式、匀速器模式、预热排队模式 不支持 简单的Rate Limiter模式
系统自适应保护 支持 不支持 不支持
控制台 提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等 简单的监控查看 不提供控制台,可对接其他监控系统

微服务网关:Zuul、Spring Cloud Gateway

参考: 微服务网关对比和选型:Zuul、Spring Cloud GetWay、Kong和Traefik - 掘金

Spring Cloud Gateway VS Zuul 比较,怎么选择? 书籍《spring cloud微服务架构 实战派》龙中华-电子工业出版社-P172

组件 Zuul 1.x Spring Cloud Gateway
底层实现 Servlet 2.5 Spring 5+
API特点 阻塞式API、不支持websockets 非阻塞式API、支持websockets
请求方式 同步请求 异步请求
服务器 tomcat netty(不支持tomcat)

WebSockets 它可以在用户的浏览器和服务器之间打开交互式通信会话。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

spring cloud gateway实现了熔断和限流

Zuul 2.x 在底层上有了很大的改变,使用了异步无阻塞式的 API,性能改善明显,不过现在 Spring Cloud 也没集成 Zuul 2.x,也无计划整合Zuul2.x. Netflix旗下产品均进入漫长的停更期,知名产品有eureka、hystrix、zuul、ribbon. 在spring cloud 2021更新后,除了eureka仍在使用,其他产品均不再支持。

eureka从1.x于2022年12月升级到了2.x,但此次更新并非Netflix官方,而是由spring完成. eureka2.x最低springboot版本要求3.x

spring cloud zuul 原理简介及使用

基础工具类:Guava、Hutool

JSON处理:JackSon

安全:Spring Security、Sa-Token

10 种保证接口数据安全的方案!

日志:Logback、Log4j2

接口文档:Swagger-UI、Knife4j

负载均衡:ribbon

序号 实现类 负载均衡策略
1 RoundRobinRule 按照线性轮询策略,即按照一定的顺序依次选取服务实例
2 RandomRule 随机选取一个服务实例
3 RetryRule 按照 RoundRobinRule(轮询)的策略来获取服务,如果获取的服务实例为 null 或已经失效,则在指定的时间之内不断地进行重试(重试时获取服务的策略还是 RoundRobinRule 中定义的策略),如果超过指定时间依然没获取到服务实例则返回 null 。
4 WeightedResponseTimeRule WeightedResponseTimeRule 是 RoundRobinRule 的一个子类,它对 RoundRobinRule 的功能进行了扩展。

根据平均响应时间,来计算所有服务实例的权重,响应时间越短的服务实例权重越高,被选中的概率越大。刚启动时,如果统计信息不足,则使用线性轮询策略,等信息足够时,再切换到 WeightedResponseTimeRule。 | | 5 | BestAvailableRule | 继承自 ClientConfigEnabledRoundRobinRule。先过滤点故障或失效的服务实例,然后再选择并发量最小的服务实例。 | | 6 | AvailabilityFilteringRule | 先过滤掉故障或失效的服务实例,然后再选择并发量较小的服务实例。 | | 7 | ZoneAvoidanceRule | 默认的负载均衡策略,综合判断服务所在区域(zone)的性能和服务(server)的可用性,来选择服务实例。在没有区域的环境下,该策略与轮询(RandomRule)策略类似。 |

Excel处理:easyExcel、Apache poi

关于阿里easyExcel和poi的差异_easyexcel与poi优劣_博渊同学的博客-CSDN博客

关于Easyexcel | Easy Excel

GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具