Dubbo(六)------为什么要用Dubbo

众所周知,Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架。

从这段话中,我们提取 关键字:分布式、RPC

一、为什么需要使用分布式系统

1、单机系统

项目工程比较简单,可能全部代码就在一个工程中, 或者按照模块来划分工程结构。

将项目放入tomcat就可以直接运行。用户流量增多,那么就多部署几台tomcat服务器,外层做负载均衡,实现分流。如果一台服务器挂了,系统还可以正常使用,相对实现“高可用”。
在这里插入图片描述
弊端: 实现项目结构比较单一的项目,如何项目开发团队上10人,系统代码具有100万行代码,几十人共同维护一个项目,涉及冲突会让人崩溃。并且项目新模块A需要上线,需要测试全部模块才可以保证系统正常,很容易造成新模块影响原有功能。每次发布需要全部代码重新发布,费事又费力。

2、分布式系统

分布式系统:庞大系统分而治之。

在我的理解中,分布式系统就是一个不断拆分的过程。把一个大整系统分划为多个小的子系统。众多的子系统合在一起便过程整个系统。

一个大的系统拆分为很多小的系统,甚至很多小的服务,然后几个人组成一个小组就专门维护其中一个小系统,或者每个人维护一个小服务。

简单来说,就是分而治之,这样每个人可以专注维护自己的代码。

不同的小系统自己开发、测试和上线,都不会跟别人耦合在一起,可以自己独立进行,非常的方便,大大简化了大规模系统的开发成本。
在这里插入图片描述
当然使用分布式,随之也带来了许多问题。

1、使用什么分布式服务框架

不同的子系统或者服务之间互相通信,必须有一套分布式服务框架。dubbo以及spring cloud都可以。

2、分布式事务

一旦你的系统拆分为了多个子系统之后,那么一个贯穿全局的分布式事务应该怎么来实现?

这个你需要了解TCC、最终一致性、2PC等分布式事务的实现方案和开源技术

3、分布式锁

不同的系统之间如果需要在全局加锁获取某个资源的锁定。使用synchronized无法解决问题。

4、分布式缓存

多个子系统,如果要共享一个缓存,需要引入Redis等缓存系统。

5、分布式消息系统

多个子系统之间要进行消息队列的传递,需要引入类似RabbitMQ之类的分布式消息中间件

6、分布式搜索系统

系统里引入一个外部的分布式搜索系统,比如Elasticsearch。

二、什么是RPC

RPC(remote procedure call):远程调用过程。我理解:本质并不是一个技术,只是远程调用的一种方式,我们一般使用的dubbo也可以理解为一种RPC实现。

为什么要用RPC呢?
在早期的项目中,代码全在一个工程中,对于简单的项目来说还好,如果后期涉及的功能增多。涉及订单、物流等多个功能模块,只是简单的一个项目的话,就变得十分糟糕。

那么如果项目具有多个系统,各个系统需要实现相互通讯,哪怎么办呢。一般来说使用RPC框架,如dubbo、Thrift。

三、RPC与HTTP对比

使用什么技术最重要的是看项目适合哪项技术,不是盲目的追求技术。

RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议)他们最本质的区别,就是RPC主要工作在TCP协议之上,而HTTP服务主要是工作在HTTP协议之上,我们都知道HTTP协议是在传输层协议TCP之上的。

RPC=Remote Produce Call 是一种技术的概念名词. HTTP是一种协议,RPC可以通过HTTP来实现,也可以通过Socket自己实现一套协议来实现。

所以本质上用http交互其实就已经属于rpc了。

HTTP优缺点分析

HTTP接口由于受限于HTTP协议,需要带HTTP请求头,导致传输起来效率或者说安全性不如RPC。

http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议 进行传输。

但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http 一样去3次握手什么的,减少了网络开销。

备注:HTTP/1.0中默认使用短连接,也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议

RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统 一化的操作。第三个来说就是安全性。

最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑。

四、为什么使用Dubbo

1、Dubbo一款优秀的分布式服务框架

2、Dubbo提供高性能的RPC服务

3、Dubbo具有注册中心、监控中心。

发布了168 篇原创文章 · 获赞 213 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/qq_29914837/article/details/104046492