轻松认识分布式中RPC

        在认识RPC框架前,请允许我先介绍,项目从小到大所用框架的一个过程。这样为什么在当今时代越来越多公司选择使用微服务、分布式架构开发。这样是我的一个开发历程心得。

  1. 在许多年前,可能项目数据量不大,且功能模块不复杂的情况。为了减少部署成本和节点。大部分会选择单一应用框架(ORM)开发

单一应用框架适用于小型项目(应用、管理系统等)。将所有功能模块都放在了一个系统里面。

优点:

        1.结构简单。

        2.方便测试和部署。

        3.开发成本不高,适合小成本项目。

缺点:

        1.不易维护开发。

        2.多人员开发时,容易造成代码混乱,代码显得臃肿。

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

        3.因为是单个计算机所以服务器性能不高。

2.随着计算机不断发展,网站的浏览量也逐渐增多。单一应用框架不在满足当前现状。将一个应用拆分成多个应用,于是就出现了垂直应用架构(MVC)。将各个。应用进行切分然后独立部署,每个小组负责对应自己的功能模块。这样就提高了每个功能模块的独立性。提高了各模块的性能,也方便了开发人员维护工作

 优点:

        1.系统应用被拆分,起到了分流作用,避免了并发问题。

        2.各组成员方便对自己负责的模块进行开发和维护。

        3.各应用互不影响,新业务也容易增加。

缺点:

        1.服务之间调用方式不统一。

        2.系统不方便统一监测。

        3.系统中各应用之间相互调用,如果一方IP或者路由地址以及端口号发生改变,需要开发人员手动对系统调整。

        4.因为各应用都有高独立性,所以如何维护各应用模块交互有一定难度。

3.随着垂直应用架构越来越多,交互显的十分困难。为了让前端页面响应速度更快,并且能支持多需求多变的情况下将核心业务模块抽取出来,作为独立的服务,逐渐形成稳定的服务中心,那么如何提高业务整合功能,分布式服务框架(RPC)就极其关键。其中通过RPC或者webService进行通信交互。

分布式具备两种拆分方式一种为水平拆分,一种为垂直拆分

1.水平拆分为。我们可以把项目拆分成表示层(Rest层也可以叫JSP+ServerLet)、业务层(Service) 、数据访问层(DAO)。然后将各层分别部署到不同服务器上。这种部署方式是分布式部署但不是微服务部署。

2.垂直拆分,就是将一整个业务拆分成多个功能模块例如上面所举的用户模块、日志模块等等。然后分别部署到不同服务器上。这算是微服务架构设计,并且也使用了分布式部署。

 讨论到这里有人肯定有疑惑,分布式和微服务之间有啥区别?是不是一个东西?

这里我要表示他们不是一个概念,千万不能弄混。

分布式是指服务部署在不同服务器上,一个服务能提供多个功能。是一种系统部署方式。而微服务只是一个架构设计方式,微服务可以是很小的服务,哪怕小到一个功能都算微服务,而且这个服务厉害到能单独部署,并且在不同服务之间通过RPC调用。

分布式部署不一定是微服务架构,而微服务的应用不一定是用分布式来部署。但在实际开发中,分布式部署的一般都是微服务项目。

那么微服务和微服务架构

上面介绍了微服务这里不做多的介绍。

这里主要将微服务架构,微服务架构是架构师们在根据需求大小的情况进行划分的,如果是访问量小的应用,用单体开发架构即可。如果浏览量大,且计算量大的应用,此时就需要我们对应用进行拆分。这就是微服务架构。

说了这么多,终于要到我们今天主讲内容-RPC框架

什么是RPC?

RPC是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简单讲就是就是因为RPC以为自己是在调用本地对象,所以不需要HTTP/HTTPS这些通信协议。并且调用者不需要关心传来的数据格式。

用生活中的例子:上级打电话叫你该需求。那么你和上级用电话通信的,这个通信方式就是RPC。

它的优点:

        1.跨语言

        2.协议私密,安全性较高

        3.数据传输效率高

        4.支持动态扩展

缺点:

        1.RPC需要不断完善,典型例子就是Dubbo

        2.需要有专业团队进行维护

运用到RPC的规范的有Dubbo、Thrift、GRPC、Hetty。

RPC框架实现的几个核心技术点:

(1)被调用者需要以某种形式提供服务调用相关的信息,包括但不限于服务接口定义、数据结构、或者中间态的服务定义文件。例如Facebook的 Thrift的IDL文件,Web service的WSDL文件;调用者需要通过一定的图景获取远程服务调用相关的信息。

(2)远程代理对象:调用者用的服务实际是远程服务的本地代理。就是通过动态代理来实现。

(3)通信:RPC框架与具体的网络通信协议无关。

拓展:RPC与其他框架的区别:

MVC架构:当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者负载均衡器实现负债分流;此时,分离前后台逻辑的MVC架构是关键。

RPC架构:当分布式中垂直应用越来越多,应用之间交互增多,将核心和公共业务抽取出来,作为独立的服务,实现前后台逻辑分离。此时,用于提高业务复用及拆分的RPC框架是关键。

SOA架构:随着业务发展,服务数量越来越多,服务生命周期管控和运行态的治理成为瓶颈,此时用于提升服务质量的SOA服务治理是关键。

微服务架构:将应用进行拆分多个服务。

猜你喜欢

转载自blog.csdn.net/weixin_51220967/article/details/128370714
今日推荐