Dubbo背景了解

Dubbbo背景了解

​ 最近有时间了,同时工作中用到了Dubbo,所以后面慢慢会写一些相关的博客。

​ 作为一个技术,我认为最开始的学习要先了解其背景,知道这项技术为什么产生,我们项目中为什么使用这项技术,以及这项技术的优点在什么地方。其实这个在面试中也会经常问到。知道这些后,才能在项目技术选择中更加游刃有余。不多说了,直接开始吧。

​ 这一部分知识其实来源于Dubbo的官网,大家也可以在官网上直接查看,我一直认为官方文档应该是第一手参考资料。

​ 官网地址:dubbo官网

网站应用演进

​ 网站其实是按照用户量来慢慢演进的。最开始用户少,只有几百个用户,所以简单的单体应用就能满足需求,这里和我们平时编写的练手项目相差不多。

​ 但是随着用户慢慢增多,单体应用不再满足我们的需求,需要将应用按照业务拆分开来,即将不相关的业务拆分成不同的项目,部署在不同的机器上。

​ 但是这种情况比较特殊,只适合特定的几个情况,大多数的业务都是有一定依赖条件的。这个时候就产生了远程过程调用(RPC),Dubbo就是一种RPC框架。这种框架能够自动注册到中心,发现需要的服务并且调用。这样,我们就能够在不同的机器上跑业务相关的代码了。

​ 其实这一阶段基本在用户层面就已经满足了,随着用户的增多,只需要增加服务基本就能满足需求了。但是在我们的角度来看,仍然不是很好,因为不同的业务访问量是不一样的,所以如何让资源随着访问量动态的变化就显得极为重要。这个也是网站演进的下一步:流动计算架构。这里了解不多,不再现眼了。

​ 以上都是个人的理解,可能部分地方有出入,还希望大佬们指正。

image-20210823231313441

Dubbo是什么

​ 看完了上面关于网站架构的演进,下面我们就来说一下Dubbo是什么。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

这个是百度百科上面找到的解释。可以看到Dubbo是一个能够无缝整合到spring中的rpc框架。它能够提供服务的发现,服务的调用和服务的负载均衡。

说白了,就相当于一个中间件,能够让我们的消费者(相当于业务调用方,有点类似于mvc中controller)调用消费者(业务实现方,有点类似于controller调用的service)。当然消费者可以和生产者不在同一台机器上,这就要做到服务的发现。最后的负载均衡就是服务调用的优化,让每一个消费者的调用频率相差不多(消费者权值相同的情况下)。

Dubbo解决了什么问题

Dubbo解决了什么问题呢?对于不同服务的调用,我编写http服务,传json也可以达到类似的效果。这就要说到Dubbo的优点了。

  • Dubbo是面向代理的高性能RPC调用。我们自己编写的http调用能够满足一些对性能要求不高的接口,但是如果某个接口对性能要求比较高,我们编写的代码就显得很吃力了。Dubbo毕竟是阿里出的,性能这一块肯定要比我们自己的强(大佬除外)。所以我认为Dubbo基本满足了大部分项目的需求。
  • 服务的自动注册发现。我们服务少还好说,我们甚至可以将服务的地址写到代码中或者做成配置文件,但是服务多了后,这个代码或者配置文件就显得臃肿,而且有些服务挂掉后,及时的更新配置文件也是我们要考虑的问题。Dubbo也是能够自动的注册服务,并且发现自己需要的服务,在某些服务挂掉后,也能够及时的更新。
  • 我们自己编写的服务调用对于每次的调用很难监控起来,多数情况下,我们自己的监控系统考虑的情况都是比较少的。但是随着业务的增长,这一部分无法监控的地方也是格外重要,例如:什么时间段访问量增多,哪个服务的调用最多,哪个服务调用的最少。我们根据这些监控信息来达到对不同服务的定制化维护,减少资源的消耗和对系统峰值的把控。
  • 扩展能力。Dubbo里面有很多的扩展点,所有核心能力如Protocol、Transport、Serialization都被设计为扩展点,可以达到自己系统独特的定制效果。(目前这一块了解较少)

Dubbo的一些基础结构

看了Dubbo的背景,了解了Dubbo是什么东西,并且知道了Dubbo解决了什么问题后,我们就可以看看Dubbo的基础结构。我一直认为学技术要总体的看一遍这个技术,知道各个部分大概是什么东西,代表了什么意思,再去扣细节比较容易理解。

image-20210823231413386

Dubbo分为五个大块,生产者、消费者、注册中心、监控中心、运行容器。

  • Provider:服务的提供方。一般是我们代码的实现部分,例如查询数据库的操作。

  • Consumer:服务的消费方,消费生产者提供的服务。一般和web层交互的一方。

  • Registry:注册中心,一般是zookeeper,只提供服务的注册和发现,不对请求做转发。

  • Monitor:监控中心,独立的服务或者应用,是否启动和是否正常不对系统整体有影响,只是对每次的调用做记录和统计。

  • Container:运行容器,负责启动、加载、运行生产者的服务。

​ 概念其实不难理解,后面上手代码的时候也会发现这些东西很容易就明白了。

总结

​ 这片博客简单的介绍了Dubbo的历史背景,解决了什么问题,以及Dubbo的一些基础的结构。没有经历过网站用户量的增长过程,所以对于这些背景都是看过,没有实际接触过。也算是一个遗憾吧,不知道自己经历了这些场景,会不会有一些不一样的想法。

​ 下一篇博客会简单的写一个Dubbo的例子,从搭建注册中心和监控中心开始,一直到写一个Hello world的例子为止。

​ 就这样吧,结束。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值