Dubbo是阿里巴巴公司开源的高性能优秀服务框架,通过高性能应用可以使用 RPC 可以实现服务的输出和输入功能Spring框架无缝集成。阿里巴巴作为中国互联网巨头,大家都很熟悉,是阿里精心打造的开源Java RPC框架,学会Dubbo技术,高薪指日可待。
Dubbo技术实际上,它是一个致力于提供高性能和透明度的分布式服务框架RPC远程服务调用方案和SOA服务治理方案。简而言之,Dubo是提供分布式需求的服务框架后者或远程服务调用的分布式框架。
Dubbo它提供了三种核心能力:远程调用接口、智能容错和负载平衡,以及自动注册和发现服务。具体来说:
1. 远程通讯: 提供基于长连接的各种NIO框架抽象包装,包括各种线程模型、序列化和“请求-响应”信息交换模式。
2. 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持、软负荷平衡、失败容错、地址路由、动态配置等集群支持。
3. 自动发现: 基于注册中心目录服务,服务消费者可以动态找到服务提供商,使地址透明,使服务提供商能够平稳地增加或减少机器。
Dubbo技术的特性:
- 面向接口代理的高性能RPC调用
以代理为基础,提供高性能的远程调用能力,以接口为粒度,为开发者屏蔽远程调用底层细节。
2.平衡智能负载
内置多种负载均衡策略,智能感知下游节点的健康状况,显著减少调用延迟,增加系统吞吐量。
3.自动注册和发现服务
支持各种注册中心服务,服务实例上下线实时感知。
4.可扩展性高
遵循微内核+Protocoll等所有核心能力的设计原则、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现。
5.运行期流量调度
通过配置不同的路由规则,内置条件、脚本等路由策略可以轻松实现灰度发布,同机房优先。
6.可视化服务治理与运维
提供丰富的服务治理和运维工具:随时查询服务元数据、服务健康状况和调用统计,实时发布路由策略,调整配置参数。
Dubo采用全Spring配置,透明接入应用,对应用没有任何API入侵,只需使用Spring加载Dubo配置,Dubo基于Spring的Schema扩展进行加载。如果您不想使用Spring配置,您希望通过API进行调用。以下是一个完整的远程调用过程。
1.从一个开始Proxy开始,Proxy持有Invoker对象,然后触发Invoke调用。
2在在invoke调用过程中,需要使用cluster,cluster负责容错,如果调用失败,则重试。cluster将通过directory获得所有可调用的远程服务invoker列表。
3.然后通过负载平衡选择一个可调用的Invoker。Invoker在调用前通过过滤链,通常用于处理上下文、限流、计数等。
4.接下来通过Client做数据传输,比如常见的Netty Client。Codec接口将在传输前进行一些私人协议结构。结构完成后,对数据包进行序列化,然后传输到服务提供商端。当服务提供商收到数据包时,还将使用Codec处理协议头和一些半包、粘包等。处理完毕后,对完整的数据报纸进行反序列化处理。
5.随后这个Request被分配到线程池进行处理。Server将处理这些Request,并根据要求找到相应的Exporter(它内部持有Invoker)。
6.最后,接口的真实实现和调用,然后原路返回调用结果。
在当今流行的微服务环境下,设计一套高并发性、高可扩展性、自动容错性和高可用性的分布式系统无疑离不开一套优秀的系统RPC框架。Dubbo技术阿里旗下的开源学好Dubbo的RPC框架无疑可以增强我们的核心竞争力,也是我们高薪就业的垫脚石!