Dubbo成熟度

成熟度

功能成熟度

Feature Maturity Strength Problem Advise User
并发控制 Tested 并发控制 试用
链接控制 Tested 链接数控制 试用
直连提供者 Tested 点对点直连服务提供方,用于测试 测试环境使用 Alibaba
分组聚合 Tested 分组聚合返回值,用于菜单聚合等服务 特殊场景使用 可用于生产环境
参数验证 Tested 参数验证,JSR303验证框架集成 对性能有影响 试用 LaiWang
结果缓存 Tested 结果缓存,用于加速请求 试用
泛化引用 Stable 泛化调用,无需业务接口类进行远程调用,用于测试平台,开放网关桥接等 可用于生产环境 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服务 没有集群支持,可能单点故障 试用
Simple监控中心 Stable 支持JFreeChart统计报表 没有集群支持,可能单点故障,但故障后不影响RPC运行 可用于生产环境
Dubbo协议 Stable 采用NIO复用单一长链接,并使用线程池并发处理请求,减小握手和加大并发效率,性能较好(推荐使用) 在大文件传输时,单一链接会成为瓶颈 可用于生产环境 Alibaba
Rmi协议 Stable 可与原生RMI互操做,基于TCP协议 偶尔会链接失败,需重建Stub 可用于生产环境 Alibaba
Hessian协议 Stable 可与原生Hessian互操做,基于HTTP协议 需hessian.jar支持,http短链接的开销大 可用于生产环境
Netty Transporter Stable JBoss的NIO框架,性能较好(推荐使用) 一次请求派发两种事件,需屏蔽无用事件 可用于生产环境 Alibaba
Mina Transporter Stable 老牌NIO框架,稳定 待发送消息队列派发不及时,大压力下,会出现FullGC 可用于生产环境 Alibaba
Grizzly Transporter Tested Sun的NIO框架,应用于GlassFish服务器中 线程池不可扩展,Filter不能拦截下一Filter 试用
Hessian Serialization Stable 性能较好,多语言支持(推荐使用) Hessian的各版本兼容性很差,可能和应用使用的Hessian冲突,Dubbo内嵌了hessian3.2.1的源码 可用于生产环境 Alibaba
Dubbo Serialization Tested 经过不传送POJO的类元信息,在大量POJO传输时,性能较好 当参数对象增长字段时,需外部文件声明 试用
Json Serialization Tested 纯文本,可跨语言解析,缺省采用FastJson解析 性能较差 试用
Java Serialization Stable Java原生支持 性能较差 可用于生产环境
Javassist ProxyFactory Stable 经过字节码生成代替反射,性能比较好(推荐使用) 依赖于javassist.jar包,占用JVM的Perm内存,Perm可能要设大一些:java -XX:PermSize=128m 可用于生产环境 Alibaba
Jdk ProxyFactory Stable JDK原生支持 性能较差 可用于生产环境
Failover Cluster Stable 失败自动切换,当出现失败,重试其它服务器,一般用于读操做(推荐使用) 重试会带来更长延迟 可用于生产环境 Alibaba
Failfast Cluster Stable 快速失败,只发起一次调用,失败当即报错,一般用于非幂等性的写操做 若是有机器正在重启,可能会出现调用失败 可用于生产环境 Alibaba
Failsafe Cluster Stable 失败安全,出现异常时,直接忽略,一般用于写入审计日志等操做 调用信息丢失 可用于生产环境 Monitor
Failback Cluster Tested 失败自动恢复,后台记录失败请求,定时重发,一般用于消息通知操做 不可靠,重启丢失 可用于生产环境 Registry
Forking Cluster Tested 并行调用多个服务器,只要一个成功即返回,一般用于实时性要求较高的读操做 须要浪费更多服务资源 可用于生产环境
Random LoadBalance Stable 随机,按权重设置随机几率(推荐使用) 在一个截面上碰撞的几率高,重试时,可能出现瞬间压力不均 可用于生产环境 Alibaba
RoundRobin LoadBalance Stable 轮询,按公约后的权重设置轮询比率 存在慢的机器累积请求问题,极端状况可能产生雪崩 可用于生产环境
LeastActive LoadBalance Stable 最少活跃调用数,相同活跃数的随机,活跃数指调用先后计数差,使慢的机器收到更少请求 不支持权重,在容量规划时,不能经过权重把压力导向一台机器压测容量 可用于生产环境
条件路由规则 Stable 基于条件表达式的路由规则,功能简单易用 有些复杂多分支条件状况,规则很难描述 可用于生产环境 Alibaba
脚本路由规则 Tested 基于脚本引擎的路由规则,功能强大 没有运行沙箱,脚本能力过于强大,可能成为后门 试用
Spring Container Stable 自动加载META-INF/spring目录下的全部Spring配置 可用于生产环境 Alibaba
Jetty Container Stable 启动一个内嵌Jetty,用于汇报状态 大量访问页面时,会影响服务器的线程和内存 可用于生产环境 Alibaba
Log4j Container Stable 自动配置log4j的配置,在多进程启动时,自动给日志文件按进程分目录 用户不能控制log4j的配置,不灵活 可用于生产环境 Alibaba
相关文章
相关标签/搜索