分布式服务框架 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
SOA 面向服务的架构(Service Oriented Architecture),也就是把工程按照业务逻辑拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外 提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。SOA架构中有两个主要角 色:服务提供者(Provider)和服务使用者(Consumer)。 核心能力:
- 面向接口代理的高性能RPC远程方法调用
- 智能容错和负载均衡
- 服务自动注册和发现(注册中心)但是调用哪个服务器应该是由Dubbo决定。
- 运行期流量调度:内置条件,脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能。
- 高度可扩展能力:遵循微内核+插件的设计原则,所有核心能力如Protocol,Transport,Serialization被设计为扩展点,平等对待内置实现和第三方实现。
- q可视化的服务治理与运维:提供丰富治理,运维工具:随时查询服务元数据,服务健康状态及调用统计,实时下发路由策略,调整配置参数。
RPC
核心部分包含: 1 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 2 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 FailoverCluster: 失败转移,当出现失败,重试其它服务器,通常用于读操作,但重试会带来更长延迟; 3 服务注册与自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。(Zookeeper) 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
Dubbo 的四点特性:
1负载均衡——同一个服务部署在不同的机器时该调用那一台机器上的服务
2服务调用链路生成——随着系统的发展,服务越来越多,服务间依赖关系变得错踪复杂。Dubbo 可以为我们解决服务之间互相是如何调用的
3服务访问压力以及时长统计、资源调度和治理——基于访问压力实时管理集群容量,提高集群利用率。
4服务降级——某个服务挂掉之后调用备用服务
重要知识点总结: 1注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注 册中心不转发请求,压力较小 2监控中心负责统计各服务调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示 注册中心,服务提供者,服务消费者三者之间均为长连接,监控中心除外 3注册中心通过长连接感知服务提供者的存在,服务提供者宕机,注册中心将立即推送事件通知消费者 4注册中心和监控中心全部宕机,不影响已运行的提供者和消费者,消费者在本地缓存了提供者列表 5注册中心和监控中心都是可选的,服务消费者可以直连服务提供者 6服务提供者无状态,任意一台宕掉后,不影响使用 7服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
负载均衡: 负载平衡旨在优化资源使用,大化吞吐量,小化响应时间,并避免 任何单个资源的过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性和可用性。负载平衡通常涉及专用软件或硬件。
Dubbo 提供的负载均衡策略 在集群负载均衡时,Dubbo 提供了多种均衡策略,默认为 random 随机调用。但可以自行扩展均衡策略。
!!