初识Dubbo 系列之5-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 在client运行部分逻辑   可用于生产环境 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 支持基于client双写的集群方式,性能高 要求server时间同步,用于检查心跳过期脏数据 可用于生产环境  
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框架。应用于GlassFishserver中 线程池不可扩展,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 失败自己主动切换。当出现失败,重试其他server,通经常使用于读操作(推荐使用) 重试会带来更长延迟 可用于生产环境 Alibaba
Failfast Cluster Stable 高速失败,仅仅发起一次调用,失败马上报错,通经常使用于非幂等性的写操作 假设有机器正在重新启动。可能会出现调用失败 可用于生产环境 Alibaba
Failsafe Cluster Stable 失败安全,出现异常时,直接忽略。通经常使用于写入审计日志等操作 调用信息丢失 可用于生产环境 Monitor
Failback Cluster Tested 失败自己主动恢复,后台记录失败请求,定时重发,通经常使用于消息通知操作 不可靠,重新启动丢失 可用于生产环境 Registry
Forking Cluster Tested 并行调用多个server。仅仅要一个成功即返回,通经常使用于实时性要求较高的读操作 须要浪费很多其它服务资源 可用于生产环境  
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,用于汇报状态 大量訪问页面时。会影响server的线程和内存 可用于生产环境 Alibaba
Log4j Container Stable 自己主动配置log4j的配置。在多进程启动时,自己主动给日志文件按进程分文件夹 用户不能控制log4j的配置,不灵活 可用于生产环境 Alibaba
时间: 2024-12-13 15:41:30

初识Dubbo 系列之5-Dubbo 成熟度的相关文章

dubbo系列四、dubbo启动过程源码解析

一.代码准备 1.示例代码 参考dubbo系列二.dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台) 2.简单了解下spring自定义标签 https://www.jianshu.com/p/16b72c10fca8 Spring自定义标签总共可以分为以下几个步骤 定义Bean 标签解析生成接收配置的POJO. 定义schema文件,定义自定义标签的attr属性 定义解析类parser,遇到自定义标签如何解析. 定义命名空间处理类namespaceSup

dubbo系列二、dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台)

一.zookeeper配置中心安装 1.下载安装包,zookeeper-3.4.6.tar.gz 2.解压安装包,修改配置文件 参考zookeeper-3.4.6/conf/zoo_sample.cfg文件,同步录下建立zoo.cfg,配置如下: # The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can tak

dubbo系列七、dubbo @Activate 注解使用和实现解析

一.用法 Activate注解表示一个扩展是否被激活(使用),可以放在类定义和方法上,dubbo用它在spi扩展类定义上,表示这个扩展实现激活条件和时机. @Activate(group = Constants.PROVIDER) public class DrpcServerInterceptor implements Filter{ private final ServerRequestInterceptor serverRequestInterceptor; private final S

初识Dubbo 系列之6-Dubbo 配置

配置 Xml配置 配置项说明 详细配置项,请参见:配置参考手册 (+) API使用说明 如果不想使用Spring配置,而希望通过API的方式进行调用,请参见:API配置 (+) 配置使用说明 想知道如何使用配置,请参见:快速启动 (+) 示例: provider.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/s

初识Dubbo 系列之7-Dubbo 示例

示例 想完整的运行起来,请参见:快速启动 (+),这里只列出各种场景的配置方式 以下示例全部使用基于Spring的Xml配置 (+)作为参考,如果不想使用Spring,而希望通过API的方式进行调用,请参见:API配置 (+) 启动时检查 (+) (#) Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true. 如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则

初识Dubbo 系列之9-Dubbo 负载均衡

负载均衡 (+) (#) 在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用. 可以自行扩展负载均衡策略,参见:负载均衡扩展 Random LoadBalance 随机,按权重设置随机概率. 在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重. RoundRobin LoadBalance 轮循,按公约后的权重设置轮循比率. 存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久

【dubbo系列】dubbo与Sentinel整合篇

在阿里巴巴中间件公众号了解的Sentinel框架,sentinel字面意思为哨兵,开始以为是redis的sentinel哨兵,了解后才发现并不是.微服务流行,相信很多团队拆分服务,进行服务和服务之间调用,Sentinel是分布式架构体系中流量控制框架,主要以流量为切入点,熔断降级,系统保护等功能额,来保护系统稳定性. Sentinel简要介绍:流量控制功能:提供服务负载能力有限,为防止某个服务流量过大,导致拖垮了整个系统的其它服务,可以对其接口流量监控,对其进行处理.sentinel具体的怎么进

Dubbo 系列(07-3)集群容错 - 负载均衡

目录 Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 1.1 负载均衡算法 1.2 继承体系 2. 源码分析 2.1 AbstractLoadBalance 2.2 RandomLoadBalance 2.3 LeastActiveLoadBalance 2.4 ConsistentHashLoadBalance Dubbo 系列(07-3)集群容错 - 负载均衡 Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 相关

Dubbo 系列(07-5)集群容错 - Mock

Dubbo 系列(07-5)集群容错 - Mock [toc] Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 相关文档推荐: Dubbo 实战 - 服务降级 Dubbo 实战 - 本地伪装 Dubbo 实战 - 本地存根 Dubbo 的集群容错中默认会组装 MockClusterWrapper,它实现了 Dubbo 的服务降级和本地伪装. 1.1 服务降级 服务降级配置方式,更多参考官网 Dubbo 实战 - 服务降级 <dubbo:reference

SpringBoot系列之集成Dubbo的方式

本博客介绍Springboot框架集成Dubbo实现微服务的3种常用方式,对于Dubbo知识不是很熟悉的,请先学习我上一篇博客:SpringBoot系列之集成Dubbo实现微服务教程,本博客只是对上篇博客的补充,上篇博客已经介绍过的就不重复介绍 还是使用上篇博客的例子,业务场景: 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在 需要创建两个服务模块进行测试 模块 功能 订单服务模块 创建订单等 用户服务模块 查询用户地址等 测试预期结果: 订单服务web模块在A服务器,