Apache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源 Java 服务框架
提供了六大核心能力:面向接口代理的高性能RPC调用,智能容错和负载均衡,服务自动注册和发现,高度可扩展能力,运行期流量调度,可视化的服务治理与运维。
1.基本概念
服务提供者(Provider):暴露服务的服务提供方,服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者(Consumer): 调用远程服务的服务消费方,服务消费者在启动时,向注册中心订阅自己所需的服务,服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
注册中心(Registry):注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者
监控中心(Monitor):服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
2.Dubbo解决的问题
单体和垂直应用架构已经无法满足需求,分布式服务架构及流动计算架构势在必行。dubbo主要解决以下的基本问题
高性能、透明的RPC调用:Dubbo可以让开发者像调用本地的方法一样调用远程服务。不需要显示在代码中指定远程调用。dubbo会自动完成后续所有操作,例如负载均衡、路由、协议转换、序列化等
服务的注册和发现:
Dubbo适配多种用户中心,服务消费方可以通过订阅注册中心,及时知道其他服务提供者的信息,全程无需人工干预。
自动负责和容错:Dubbo提供了完成的集群容错机制,可以实现软件层面容错,降低硬件的压力。还提供了调用失败的各种容错机制,如Failover、Failfast、结果集合并等
动态流量调度:Dubbo提供了管理控制台,用户可以在界面上动态的调整服务的权重、路由规则、启用/禁用,实现运行时的流量调度。
依赖分析与调用统计:Dubbo可以接入三方APM做分布式链路追踪和性能分析,或者使用已有的独立监控中心来监控接口的调用次数和耗时,用户可以根据这些数据反推出系统容量。
APM (Application Performance Management) 即应用性能管理,属于IT运维管理范畴。主要是针对企业 关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。