深入浅出dubbo源码系列--走进Dubbo

深入浅出dubbo源码系列--走进dubbo

什么是RPC

了解dubbo之前,我们先来看下啥是RPC框架,他到底是用来干嘛的呢?

在这个微服务盛行的大环境下,很多人应该都有使用过RPC框架的经验;大白话来说:RPC框架最大的作用
就是对于client看来说,就像调用本地service方法一样调用远程的服务
。他是服务化最最基本的基础组件。

Rpc框架的底层架构来说,它大概有主要有代理模型和服务注册发现模型;当然也有最近比较火的service mesh模型。

代理模型:比较典型的就是我们的httpclient,gRpc,Thirft等产品;路由信息都是集中配置在proxy节点的,存在单点故障的风险。

服务发现模型: 本文所述的Dubbo,spring cloud等产品,也是目前主流的RPC框架;路由信息都是注册中心集中配置管理,但会同步到客户端,最终是由客户端自行路由
下面两个图说明下两者的异同点:
在这里插入图片描述
我觉得这几种架构各有优缺点,得看实际的业务场景才可以决定用哪种架构比较合适吧; 下面单介绍下Dubbo的相关概念。

什么是Dubbo

Dubbo是阿里巴巴公司开源的一个高性能优秀的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

Dubbo是基于java的RPC框架,与整个java的生态比较契合。

Dubbo整体架构设计介绍

整体架构图:

说明:
服务容器负责启动,加载,运行服务提供者。
服务提供者在启动时,向注册中心注册自己提供的服务。
服务消费者在启动时,向注册中心订阅自己所需的服务。
注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

扫描二维码关注公众号,回复: 5531223 查看本文章

核心流程图:
后面主要围绕官方的一张整体设计图给大家介绍几个核心的流程以及相关的实现原理。
在这里插入图片描述
1.从上面的图中可以看到整体架构,层次还是比较清晰;每个层次都是单向依赖,不会出现循环依赖的问题。
2.上图左边蓝色部分主要描述了服务消费者的启动流程,右边描述了服务提供者的启动流程。
3.从上往下看分了9层,从左边看按功能分了三类,分表是面向用户的biz,RPC核心层和负责传输的remotingcneg。从右边按用户分成了2类,一类是面向用户的API,另外一类是面向扩展提供者的SPI.
4.蓝色的虚线表示服务提供者的注册和消费者的订阅的过程;红色表示一次服务的调用过程。

猜你喜欢

转载自blog.csdn.net/xuxian6823091/article/details/88550969