您的位置:首页 > 其它

初识Dubbo 系列之5-Dubbo 成熟度

2017-05-28 21:19 309 查看

成熟度

功能成熟度

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訪问日志,用于记录调用信息本地存储,影响性能。受磁盘限制大小试用
分布式事务ResearchJTA/XA三阶段提交事务不稳定不可用

策略成熟度

Feature特征Maturity成熟度Strength强度Problem问题Advise建议User用户
Zookeeper注冊中心Stable支持基于网络的集群方式,有广泛周边开源产品,建议使用dubbo-2.3.3以上版本号(推荐使用)依赖于Zookeeper的稳定性可用于生产环境
Redis注冊中心Stable支持基于client双写的集群方式,性能高要求server时间同步,用于检查心跳过期脏数据可用于生产环境
Multicast注冊中心Tested去中心化。不须要安装注冊中心依赖于网络拓普和路由,跨机房有风险小规模应用或开发測试环境
Simple注冊中心TestedDogfooding,注冊中心本身也是一个标准的RPC服务没有集群支持。可能单点故障试用
FeatureMaturityStrengthProblemAdviseUser
Simple监控中心Stable支持JFreeChart统计报表没有集群支持,可能单点故障,但故障后不影响RPC执行可用于生产环境
FeatureMaturityStrengthProblemAdviseUser
Dubbo协议Stable採用NIO复用单一长连接,并使用线程池并发处理请求,降低握手和加大并发效率,性能较好(推荐使用)在大文件传输时,单一连接会成为瓶颈可用于生产环境Alibaba
Rmi协议Stable可与原生RMI互操作,基于TCP协议偶尔会连接失败,需重建Stub可用于生产环境Alibaba
Hessian协议Stable可与原生Hessian互操作。基于HTTP协议需hessian.jar支持,http短连接的开销大可用于生产环境
FeatureMaturityStrengthProblemAdviseUser
Netty TransporterStableJBoss的NIO框架。性能较好(推荐使用)一次请求派发两种事件,需屏蔽无用事件可用于生产环境Alibaba
Mina TransporterStable老牌NIO框架,稳定待发送消息队列派发不及时,大压力下,会出现FullGC可用于生产环境Alibaba
Grizzly TransporterTestedSun的NIO框架。应用于GlassFishserver中线程池不可扩展,Filter不能拦截下一Filter试用
FeatureMaturityStrengthProblemAdviseUser
Hessian SerializationStable性能较好,多语言支持(推荐使用)Hessian的各版本号兼容性不好,可能和应用使用的Hessian冲突,Dubbo内嵌了hessian3.2.1的源代码可用于生产环境Alibaba
Dubbo SerializationTested通过不传送POJO的类元信息。在大量POJO传输时,性能较好当參数对象添加字段时,需外部文件声明试用
Json SerializationTested纯文本,可跨语言解析。缺省採用FastJson解析性能较差试用
Java SerializationStableJava原生支持性能较差可用于生产环境
FeatureMaturityStrengthProblemAdviseUser
Javassist ProxyFactoryStable通过字节码生成取代反射。性能比較好(推荐使用)依赖于javassist.jar包,占用JVM的Perm内存。Perm可能要设大一些:java -XX:PermSize=128m可用于生产环境Alibaba
Jdk ProxyFactoryStableJDK原生支持性能较差可用于生产环境
FeatureMaturityStrengthProblemAdviseUser
Failover ClusterStable失败自己主动切换。当出现失败,重试其他server,通经常使用于读操作(推荐使用)重试会带来更长延迟可用于生产环境Alibaba
Failfast ClusterStable高速失败,仅仅发起一次调用,失败马上报错,通经常使用于非幂等性的写操作假设有机器正在重新启动。可能会出现调用失败可用于生产环境Alibaba
Failsafe ClusterStable失败安全,出现异常时,直接忽略。通经常使用于写入审计日志等操作调用信息丢失可用于生产环境Monitor
Failback ClusterTested失败自己主动恢复,后台记录失败请求,定时重发,通经常使用于消息通知操作不可靠,重新启动丢失可用于生产环境Registry
Forking ClusterTested并行调用多个server。仅仅要一个成功即返回,通经常使用于实时性要求较高的读操作须要浪费很多其它服务资源可用于生产环境
Broadcast ClusterTested广播调用全部提供者,逐个调用,随意一台报错则报错,通经常使用于更新提供方本地状态速度慢,随意一台报错则报错可用于生产环境
FeatureMaturityStrengthProblemAdviseUser
Random LoadBalanceStable随机,按权重设置随机概率(推荐使用)在一个截面上碰撞的概率高,重试时,可能出现瞬间压力不均可用于生产环境Alibaba
RoundRobin LoadBalanceStable轮循,按公约后的权重设置轮循比率存在慢的机器累积请求问题,极端情况可能产生雪崩可用于生产环境
LeastActive LoadBalanceStable最少活跃调用数。同样活跃数的随机,活跃数指调用前后计数差,使慢的机器收到更少请求不支持权重,在容量规划时。不能通过权重把压力导向一台机器压測容量可用于生产环境
ConsistentHash LoadBalanceStable一致性Hash,同样參数的请求总是发到同一提供者,当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其他提供者,不会引起剧烈变动压力分摊不均可用于生产环境
FeatureMaturityStrengthProblemAdviseUser
条件路由规则Stable基于条件表达式的路由规则,功能简单易用有些复杂多分支条件情况,规则非常难描写叙述可用于生产环境Alibaba
脚本路由规则Tested基于脚本引擎的路由规则。功能强大没有执行沙箱,脚本能力过于强大,可能成为后门试用
FeatureMaturityStrengthProblemAdviseUser
Spring ContainerStable自己主动载入META-INF/spring文件夹下的全部Spring配置可用于生产环境Alibaba
Jetty ContainerStable启动一个内嵌Jetty,用于汇报状态大量訪问页面时。会影响server的线程和内存可用于生产环境Alibaba
Log4j ContainerStable自己主动配置log4j的配置。在多进程启动时,自己主动给日志文件按进程分文件夹用户不能控制log4j的配置,不灵活可用于生产环境Alibaba
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: