初识Dubbo 系列之5-Dubbo 成熟度
Posted brucemengbm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识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 成熟度的主要内容,如果未能解决你的问题,请参考以下文章