Dubbo是阿里开源的分布式框架,使得应用可通过高新能的RPC(远程调用协议,通过网络从远程计算机上请求服务)实现服务的输出和输入功能,以及SOA(面向服务的架构)服务治理方案,和spring框架集成(通过spring加载dubbo的配置)。
其核心部分包含:
1. 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。
软负载均衡及容错机制:
负载均衡4种:
· Random LoadBalance:随机策略,配置值为random。可以设置权重,有利于充分利用服务器的资源,高配的可以设置权重大一些,低配的可以稍微小一些
· RoundRobin LoadBalance:轮询策略,配置值为roundrobin。
· LeastActive LoadBalance:最少加载数策略,配置值为leastactive。根据请求调用的次数计数,处理请求更慢的节点会受到更少的请求
· ConsistentHash LoadBalance:一致性Hash策略
容错模式有多种:
1、Failover Cluster模式 默认的模式选择,调用失败时,会自动切换,重新尝试调用其他节点上可用的服务。
· 2、Failfast Cluster模式:快速失败模式,调用只执行一次,失败则立即报错。可用于交易系统
· 3、Failsalf cluster 失败安全,出现异常,直接忽略
· 4、Failback cluster 失败恢复,后台记录,定时重发。
· 5、forKing cluster 并行调用,就是同时调用所有,只要成功返回一个即可。
· 6、broadcast cluster 逐个调用,任意一个报错则报错。
dubbo架构图:
====================================================
本文是在学习dubbo时自己的一些总结,可能有错误的认识,有大神进来望指正。