初识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 ...
随机推荐
- [React Router] Create a ProtectedRoute Component in React Router (setState callback to force update)
In this lesson we'll create a protected route just for logged in users. We'll combine a Route with a ...
- 使用gridlayout布局后,因某些原因又删除,并整理文件夹结构时,Unable to resolve target 'android-7'
出现的问题 [2013-01-11 10:52:39 - gridlayout_v7] Unable to resolve target 'android-7' 事由:在一次做九宫格时.误使用了gri ...
- remote debug
https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging https://docs.microsoft.com/e ...
- poj--3678--Katu Puzzle(2-sat 建模)
Katu Puzzle Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Submit S ...
- USACO 2.1 Sorting a Three-Valued Sequence
Sorting a Three-Valued Sequence IOI'96 - Day 2 Sorting is one of the most frequently performed compu ...
- 利用Spring Hibernate注解packagesToScan的简化自动扫描方式
转自:https://blog.csdn.net/wzygis/article/details/28256045
- (转)用Lottie制作动画,我的月薪翻了一番!!
Lottie是Airbnb发布的开源动画库. 帮助动效落地.学会使用Lottie,会极大地提高工作效率. Lottie是一种新的开发动画的方式. 学会使用Lottie,会极大改善你和开发小哥哥撕逼的情 ...
- 如何让NSURLConnection在子线程中运行
可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...
- Python使用functools模块中的partial函数生成偏函数
所谓偏函数即是规定了固定参数的函数,在函数式编程中我们经常可以用到,这里我们就来看一下Python使用functools模块中的partial函数生成偏函数的方法 python 中提供一种用于对函数固 ...
- golden gate的DDL配置
DDL复制的配置 目前只支持oracle和teradata的ddl复制 oracle能复制除了系统对象之外的所有对象 两种配置方法: 基于trigger的DDL:对于生产库有一定影响. 原理: 源库建 ...