dubbo(2.7.3) 7.成熟度

简介: dubbo(2.7.3) 7.成熟度

介绍 Dubbo 各个功能、策略的成熟度

功能成熟度

Feature Maturity Strength Problem Advise User
并发控制 Tested 并发控制 试用
连接控制 Tested 连接数控制 试用
直连提供者 Tested 点对点直连服务提供方,用于测试 测试环境使用 Alibaba
分组聚合 Tested 分组聚合返回值,用于菜单聚合等服务 特殊场景使用 可用于生产环境
参数验证 Tested 参数验证,JSR303 验证框架集成 对性能有影响 试用 LaiWang
结果缓存 Tested 结果缓存,用于加速请求 试用
泛化引用 Stable 泛化调用,无需业务接口类进行远程调用,用于测试平台,开放网关桥接等 可用于生产环境 Alibaba
泛化实现 Stable 泛化实现,无需业务接口类实现任意接口,用于 Mock 平台 可用于生产环境 Alibaba
回声测试 Tested 回声测试 试用
隐式传参 Stable 附加参数 可用于生产环境
异步调用 Tested 不可靠异步调用 试用
本地调用 Tested 本地调用 试用
参数回调 Tested 参数回调 特殊场景使用 试用 Registry
事件通知 Tested 事件通知,在远程调用执行前后触发 试用
本地存根 Stable 在客户端执行部分逻辑 可用于生产环境 Alibaba
本地伪装 Stable 伪造返回结果,可在失败时执行,或直接执行,用于服务降级 需注册中心支持 可用于生产环境 Alibaba
延迟暴露 Stable 延迟暴露服务,用于等待应用加载 warmup 数据,或等待 spring 加载完成 可用于生产环境 Alibaba
延迟连接 Tested 延迟建立连接,调用时建立 试用 Registry
粘滞连接 Tested 粘滞连接,总是向同一个提供方发起请求,除非此提供方挂掉,再切换到另一台 试用 Registry
令牌验证 Tested 令牌验证,用于服务授权 需注册中心支持 试用
路由规则 Tested 动态决定调用关系 需注册中心支持 试用
配置规则 Tested 动态下发配置,实现功能的开关 需注册中心支持 试用
访问日志 Tested 访问日志,用于记录调用信息 本地存储,影响性能,受磁盘大小限制 试用
分布式事务 Research JTA/XA 三阶段提交事务 不稳定 不可用

策略成熟度

Feature Maturity Strength Problem Advise User
Zookeeper 注册中心 Stable 支持基于网络的集群方式,有广泛周边开源产品,建议使用 dubbo-2.3.3 以上版本(推荐使用) 依赖于 Zookeeper 的稳定性 可用于生产环境
Redis 注册中心 Stable 支持基于客户端双写的集群方式,性能高 要求服务器时间同步,用于检查心跳过期脏数据 可用于生产环境
Multicast 注册中心 Tested 去中心化,不需要安装注册中心 依赖于网络拓扑和路由,跨机房有风险 小规模应用或开发测试环境
Simple 注册中心 Tested Dogfooding,注册中心本身也是一个标准的 RPC 服务 没有集群支持,可能单点故障 试用
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Simple 监控中心 Stable 支持 JFreeChart 统计报表 没有集群支持,可能单点故障,但故障后不影响 RPC 运行 可用于生产环境
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Dubbo 协议 Stable 采用 NIO 复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用) 在大文件传输时,单一连接会成为瓶颈 可用于生产环境 Alibaba
Rmi 协议 Stable 可与原生 RMI 互操作,基于 TCP 协议 偶尔会连接失败,需重建 Stub 可用于生产环境 Alibaba
Hessian 协议 Stable 可与原生 Hessian 互操作,基于 HTTP 协议 需 hessian.jar 支持,http 短连接的开销大 可用于生产环境
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Netty Transporter Stable JBoss 的 NIO 框架,性能较好(推荐使用) 一次请求派发两种事件,需屏蔽无用事件 可用于生产环境 Alibaba
Mina Transporter Stable 老牌 NIO 框架,稳定 待发送消息队列派发不及时,大压力下,会出现 FullGC 可用于生产环境 Alibaba
Grizzly Transporter Tested Sun 的 NIO 框架,应用于 GlassFish 服务器中 线程池不可扩展,Filter 不能拦截下一 Filter 试用
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Hessian Serialization Stable 性能较好,多语言支持(推荐使用) Hessian 的各版本兼容性不好,可能和应用使用的 Hessian 冲突,Dubbo 内嵌了 hessian3.2.1 的源码 可用于生产环境 Alibaba
Dubbo Serialization Tested 通过不传送 POJO 的类元信息,在大量 POJO 传输时,性能较好 当参数对象增加字段时,需外部文件声明 试用
Json Serialization Tested 纯文本,可跨语言解析,缺省采用 FastJson 解析 性能较差 试用
Java Serialization Stable Java 原生支持 性能较差 可用于生产环境
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Javassist ProxyFactory Stable 通过字节码生成代替反射,性能比较好(推荐使用) 依赖于 javassist.jar 包,占用 JVM 的 Perm 内存,Perm 可能要设大一些:java -XX:PermSize=128m 可用于生产环境 Alibaba
Jdk ProxyFactory Stable JDK 原生支持 性能较差 可用于生产环境
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Failover Cluster Stable 失败自动切换,当出现失败,重试其它服务器,通常用于读操作(推荐使用) 重试会带来更长延迟 可用于生产环境 Alibaba
Failfast Cluster Stable 快速失败,只发起一次调用,失败立即报错,通常用于非幂等性的写操作 如果有机器正在重启,可能会出现调用失败 可用于生产环境 Alibaba
Failsafe Cluster Stable 失败安全,出现异常时,直接忽略,通常用于写入审计日志等操作 调用信息丢失 可用于生产环境 Monitor
Failback Cluster Tested 失败自动恢复,后台记录失败请求,定时重发,通常用于消息通知操作 不可靠,重启丢失 可用于生产环境 Registry
Forking Cluster Tested 并行调用多个服务器,只要一个成功即返回,通常用于实时性要求较高的读操作 需要浪费更多服务资源 可用于生产环境
Broadcast Cluster Tested 广播调用所有提供者,逐个调用,任意一台报错则报错,通常用于更新提供方本地状态 速度慢,任意一台报错则报错 可用于生产环境
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Random LoadBalance Stable 随机,按权重设置随机概率(推荐使用) 在一个截面上碰撞的概率高,重试时,可能出现瞬间压力不均 可用于生产环境 Alibaba
RoundRobin LoadBalance Stable 轮询,按公约后的权重设置轮询比率 存在慢的机器累积请求问题,极端情况可能产生雪崩 可用于生产环境
LeastActive LoadBalance Stable 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差,使慢的机器收到更少请求 不支持权重,在容量规划时,不能通过权重把压力导向一台机器压测容量 可用于生产环境
ConsistentHash LoadBalance Stable 一致性 Hash,相同参数的请求总是发到同一提供者,当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动 压力分摊不均 可用于生产环境
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
条件路由规则 Stable 基于条件表达式的路由规则,功能简单易用 有些复杂多分支条件情况,规则很难描述 可用于生产环境 Alibaba
脚本路由规则 Tested 基于脚本引擎的路由规则,功能强大 没有运行沙箱,脚本能力过于强大,可能成为后门 试用
Feature Maturity Strength Problem Advise User
--- --- --- --- --- ---
Spring Container Stable 自动加载 META-INF/spring 目录下的所有 Spring 配置 可用于生产环境 Alibaba
Jetty Container Stable 启动一个内嵌 Jetty,用于汇报状态 大量访问页面时,会影响服务器的线程和内存 可用于生产环境 Alibaba
Log4j Container Stable 自动配置 log4j 的配置,在多进程启动时,自动给日志文件按进程分目录 用户不能控制 log4j 的配置,不灵活 可用于生产环境 Alibaba


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
API 开发工具 C++
【专栏:工具与技巧篇】使用代码编辑器(VS Code/Sublime Text)提升开发效率
【4月更文挑战第30天】在VS Code与Sublime Text两大流行代码编辑器中,开发者可借助其高效特性提升编程效率。VS Code拥有丰富的插件生态、内置Git集成、强大的调试工具、智能提示和多文件导航功能。Sublime Text则以其轻量级、快速响应、多光标编辑及自定义构建系统见长。学习编辑器的键盘快捷键、自定义配置、使用内置终端以及键绑定和宏,将助开发者进一步提高开发效率。选择适合自己的编辑器并不断适应新技术是提升开发工作流的关键。
679 1
|
C++ Python Java
Java每日一练(20230501) 路径交叉、环形链表、被围绕的区域
Java每日一练(20230501) 路径交叉、环形链表、被围绕的区域
182 0
Java每日一练(20230501) 路径交叉、环形链表、被围绕的区域
|
Java Spring
Spring Boot Admin 自定义健康检查
Spring Boot Admin 自定义健康检查
252 0
Modbus4j核心代码讲解
Modbus4j核心代码讲解
611 1
|
缓存 算法 网络架构
【网络层】IP组播(多播)、硬件组播、IGMP、组播路由选择协议、移动IP、路由器详解、路由表和路由转发
【网络层】IP组播(多播)、硬件组播、IGMP、组播路由选择协议、移动IP、路由器详解、路由表和路由转发
403 0
|
缓存 Dubbo 应用服务中间件
生产故障|Dubbo泛化调用引发的“血案”
生产故障|Dubbo泛化调用引发的“血案”
生产故障|Dubbo泛化调用引发的“血案”
|
Kubernetes Cloud Native Perl
带你读《云原生应用开发:Operator原理与实践》——2.2.8 Controller 关于 Client-go 典型场景
带你读《云原生应用开发:Operator原理与实践》——2.2.8 Controller 关于 Client-go 典型场景
|
存储 网络协议 算法
注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd(二)
经过近2周的学习,原来注册中心除了ETCD和Zookeeper,常用的还有Eureka、Nacos、Consul,下面我们就对这些常用的注册中心,初探它们的异同,便于后续技术选型。
3617 0
注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd(二)
|
数据采集 机器学习/深度学习 IDE
Anaconda 的认识以及和它相关的一些编辑器的简单介绍【上】
认识anaconda 之前听别人说过这个软件。但是自己一般用的pycharm。pycharm是一款很好的编辑器,但是一个缺点就是可能电脑不是很高的会出现卡顿。但是编辑代码是十分方便的。 但是其实pycharm和IJ一样只是ide,并并没有集成大量的python需要的环境。所以我们需要自己去安装python环境。 然后对比一下anaconda,它其实是一个集成环境。什么是集成环境呢?首先说到环境,就一定认为是其有基本的代码编译环境。不错,它包含了python运行的基本环境。也有自己的控制终端。可以创建虚拟环境。虚拟环境就是为了适用不同的python版本。以便不会对基本的运行包造成不方便的结果。
437 0
Anaconda 的认识以及和它相关的一些编辑器的简单介绍【上】
|
存储 NoSQL Linux
表格存储快速上手准备
表格存储 Tablestore 提供了阿里云控制台、命令行工具、Tablestore SDK 三种访问方式。本章节将为您介绍表格存储命令行工具( Tablestore CLI )的使用方法。通过命令行工具,您使用简单的命令体验表格存储服务。在使用 Tablestore CLI 工具之前,您需要做以下准备工作。
660 0
表格存储快速上手准备