Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)
其核心部分包含:
Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。
Spring Container
Jetty Container
Log4j Container
配置 | 配置说明 |
---|---|
dubbo service | 服务配置 |
dubbo refrerence | 引用配置 |
dubbo protocol | 协议配置 |
dubbo application | 应用配置 |
dubbo module | 模块配置 |
dubbo registry | 注册中心配置 |
dubbo monitor | 监控中心配置 |
dubbo provider | 提供方配置 |
dubbo consumer | 消费方配置 |
dubbo method | 方法配置 |
dubbo argument | 参数配置 |
配置关系:
集群容错方案 | 说明 |
---|---|
Failover Cluster | 失败自动切换,自动重试其它服务器(默认) |
Failfast Cluster | 快速失败,立即报错,只发起一次调用 |
Failsafe Cluster | 失败安全,出现异常时,直接忽略 |
Failback Cluster | 失败自动恢复,记录失败请求,定时重发 |
Forking Cluster | 并行调用多个服务器,只要一个成功即返回 |
Broadcast Cluster | 广播逐个调用所有提供者,任意一个报错则报错 |
负载均衡策略 | 说明 |
---|---|
Random LoadBalance | 随机,按权重设置随机概率(默认) |
RoundRobin LoadBalance | 轮询,按公约后的权重设置轮询比例 |
LeastActive LoadBalance | 最少活跃调用数,相同活跃数的随机 |
ConsistentHash LoadBalance | 一致性 Hash,相同参数的请求总是发到同一提供者 |
Dubbo 默认使用 Netty 框架,也是推荐的选择,另外内容还集成有Mina、Grizzly。
没有好坏,只有适合不适合。
dubbo的优势
SpringCloud优势
两者相比较
根据具体的团队水平,业务情况等特点,dubbo和SpringCloud各自可以发挥各自不同的优势,没有最好的框架,只有最合适的。