初识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 |
初识Dubbo 系列之5-Dubbo 成熟度的更多相关文章
- dubbo系列四、dubbo服务暴露过程源码解析
一.代码准备 1.示例代码 参考dubbo系列二.dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台) 2.简单了解下spring自定义标签 https://w ...
- dubbo系列十一、dubbo transport层记录
前言 在dubbo接口方法重载且入参未显式指定序列化id导致ClassCastException分析时候用到了dubbo的通信层和编解码,dubbo有个transport层,默认使用netty4进行网 ...
- dubbo系列二:dubbo常用功能总结
准备工作: (1)启动zookeeper作为dubbo的注册中心 (2)新建一个maven的生产者web工程dubbo-provider-web和一个maven的消费者web工程dubbo-consu ...
- dubbo系列一:dubbo介绍、dubbo架构、dubbo的官网入门使用demo
一.dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成.简单地说,dubbo是一个基于Spri ...
- dubbo系列五、dubbo核心配置
一.配置文件 1.生产者配置provider.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...
- dubbo系列二、dubbo+zookeeper+dubboadmin分布式服务框架搭建(windows平台)
一.zookeeper配置中心安装 1.下载安装包,zookeeper-3.4.6.tar.gz 2.解压安装包,修改配置文件 参考zookeeper-3.4.6/conf/zoo_sample.cf ...
- dubbo系列一、dubbo启动流程
目录 dubbo启动流程分析记录 一.dubbo provider启动流程 1.自动装配 2.ServiceBean处理 3.服务暴露export() 3.1.检测dubbo.xxx.配置属性,配置到 ...
- dubbo系列一、dubbo背景介绍、微服务拆分
一.背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 二.传统应用到分布式应用的演进过程 ...
- dubbo系列七、dubbo @Activate 注解使用和实现解析
一.用法 Activate注解表示一个扩展是否被激活(使用),可以放在类定义和方法上,dubbo用它在spi扩展类定义上,表示这个扩展实现激活条件和时机. @Activate(group = Cons ...
- dubbo系列二、dubbo请求流程记录
目录 1.dubbo请求处理流程 1.1. consumer端处理流程 1.2.provider端处理流程 1.3.dubbo请求分析记录-图 泳道图 xmind图 2.dubbo请求核心说明 1.d ...
随机推荐
- ClientProtocolException
用httpclient 去訪问页面是会出现org.apache.http.client.ClientProtocolException 我这里出现的原因是在http请求时.请求头缺少user-agen ...
- win10 bcdedit加入vhdx启动
第一步,先用hyper-v.imagex或者其他vhd安装器.将win10 系统安装到一个vhd文件里(vhdx更好.动态扩展等诸多优良特性).比方d:\win10tp.vhdx 第二步,运行例如以下 ...
- MAME 0.201 发布,重温童年的街机模拟器
MAME 0.201 已发布,MAME 最初是街机模拟器,随着时间的推移,MAME 吸收了姊妹项目 MESS(多机种模拟器超级系统),所以 MAME 现在还记录了各种各样的(大多是老式的)电脑游戏.掌 ...
- Java RTTI(类型信息)(.class 类对象)
RTTI:Run-Time Type Information,关键词在 Run-Time,运行时的,而非编译期确定的关于类型的信息.运行时的类型信息(RunTime Type Information) ...
- jQuery插件开发的两种方法
1 类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(object); $. ...
- POJ 3150 循环矩阵的应用
思路: 首先 先普及一个性质: 循环矩阵*循环矩阵=循环矩阵 由于此题是距离小于d的都加上一个数. 那么 构造矩阵的时候 我们发现 诶呦 这是个循环矩阵 看看数据范围 n^2log(k)可以过. 那就 ...
- 视图 Model转集合
@{ Layout = null;}@using MvcApplication2.Models <!DOCTYPE html> <html><head> ...
- sql导出到excel
1.先查询数据ID,别名 导出到excel 2.增加标准名称,标识错误数据,导入sqlServer select distinct [StandardName] from [GMSOA].[dbo] ...
- 入门 IT 行业,该具备哪些技能?
对于刚开始进入IT的新人来说,“必备技能”往往意味着一个长长的.标有重要度的学习列表,但是过长的列表通常会导致新人不知如何开始学习,压力倍增.本文尝试列举出最重要的几个技能,也期望通过此列表能给新人一 ...
- 手把手教你写带登录的NodeJS爬虫+数据展示
其实在早之前,就做过立马理财的销售额统计,只不过是用前端js写的,需要在首页的console调试面板里粘贴一段代码执行,点击这里.主要是通过定时爬取https://www.lmlc.com/s/web ...