初识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 ...
随机推荐
- 游戏开发人员眼中的Unity 3D网页游戏測评报告
眼下.能够实现3D页游的主流技术有Silverlight.XNA.Flash.HTML5和Unity3D. 当中.Unity3D作为一款专注于3D游戏的浏览器插件.最近在国内外页游产品线骚动异常:本人 ...
- C语言实现使用动态数组实现循环队列
我在上一篇博客<C语言实现使用静态数组实现循环队列>中实现了使用静态数组来模拟队列的操作. 因为数组的大小已经被指定.无法动态的扩展. 所以在这篇博客中,我换成动态数组来实现. 动态数组能 ...
- 数据结构(Java语言)——LinkedList简单实现
下面是一个能够使用的LinkedList泛型类的实现.这里的链表类名为MyLinkedList,避免与类库中反复. MyLinkedList将作为双链表实现,并且保留到该表两端的引用.这样仅仅要操作发 ...
- 菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t
菜鸟nginx源代码剖析数据结构篇(九) 内存池ngx_pool_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第一步---開始界面&关卡选择
/* 说明: **1.本次游戏实例是<cocos2d-x游戏开发之旅>上的最后一个游戏,这里用3.0重写并做下笔记 **2.我也问过木头本人啦.他说:随便写,第一别全然照搬代码:第二能够说 ...
- Android持久化保存cookie
在解析网页信息的时候,需要登录后才能访问,所以使用httpclient模拟登录,然后把cookie保存下来,以供下一次访问使用,这时就需要持久化cookie中的内容. 在之前先科普一下基础知识: 什么 ...
- php生产随机数
php生产随机数 要求 生产三种随机数 1.全数字 2.全字母,大小写 3.数字和大小写字母 代码 <?php class RandString{ //这个属性表示我们随机数的长度,也就是个数 ...
- java 中的静态(static)代码块
类字面常量 final 静态域不会触发类的初始化操作 非 final static 静态域(以及构造器其实是一种隐式的静态方法) Class.forName():会自动的初始化: 使用 .class来 ...
- 杂项:ExtJS
ylbtech-杂项:ExtJS extjs是一种软件.自动生成行号,支持checkbox全选,动态选择显示哪些列,支持本地以及远程分页,可以对单元格按照自己的想法进行渲染,这些也算可以想到的功能. ...
- float类型和double类型的二进制存储
在32位环境下, float占用32位,double占用64位, 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算.这种结构是一种科学计数法,用符号.指数和 ...