ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[info] RPC ### **1. 什么是RPC** RPC,是一种远程调用方式(Remote Procedure Call),通过 RPC 我们可以像调用本地方法一样调用别的机器上的方法,用户将无感服务器与服务器之间的通讯。 ***** 说的通俗点,大家应该都用过MVC,说白了,RPC就相当于把控制器(C)放在服务器a,然后把模型(M)放在服务器b, 虽然控制器和模型位于不同服务器,但RPC可以实现服务器a上的控制器对服务器b上的模型的调用。 ***** ### **2. 为什么选用RPC** 随着业务的发展我们的项目从简单的单体结构逐渐的演化成微服务结构,我们为什么要拆分成微服务呢?那我们来说说微服务和单体架构的优缺点。 ![](https://img.kancloud.cn/9d/c6/9dc636203cd7866fac0c4acaa70862b0_819x655.png) #### **2.1 单体架构局限性** * **代码维护难开发效率低** 由于所有的代码都写在一个项目里面,要想要修改某一个功能点那么需要对项目的整体逻辑和设计有较深的理解,否则代码耦合严重,导致维护难,特别对于新入职的员工来说这将是最容易出现问题的地方。 加之所有功能在一块,导致一个项目很大很笨重,开发难度增加。 * **扩展性** 在高并发的情况下,我们往往不是整个项目的每一个功能都处于高流量高请求的情况下的,很多时候都是某一个功能模块使用的人数比较多,在单体结构下我们没有办法针对单个功能实现分布式扩展,必须整个项目一起部署。 ***** #### **2.2 微服务调用** **【**下图的5个项目,可以分别在5台5服务器上**】** ![](https://img.kancloud.cn/cc/e6/cce69d6b55041b73f0699f6f4bd2e063_867x319.png) >[] 微服务做的事情是按照项目颗粒度进行服务的拆分,把模块单独拿出来做成每一个单独的小项目。微服务的主要特点有:每一个功能模块是一个小项目、独立运行在不同进程或者机器上、不同功能可以又不同的人员开发独立开发不松耦合、独立部署不需要依赖整体项目就可以启动单个服务、分布式管理。每一个服务只要做好自己的事情就好了。 ***** #### **2.3 微服务架构优点** * 拆分业务,把整体大项目分割成不同小项目运行在不同进程或者机器上实现数据隔离 * 技术栈,每个服务可以由不同的团队或者开发者进行开发,外部调用人员不需要操心具体怎么实现的,只需要类似调用自己方法一样或者接口一样按照服务提供者给出来的参数传递即可 * 独立部署,每一个服务独立部署,部署一个服务不会影响整体项目,如果部署失败最多是这个服务的功能缺失,并不影响其他功能的使用 * 按需部署,针对不同的需求可以给不同的服务自由扩展服务器,根据服务的规模部署满足需求的实例 * 局部修改,当一个服务有新需求或者其他修改,不需要修改整体项目只要管好自己的服务就好了 ***** #### **2.4 为什么客户端和服务端要分开?** 因为客户端与服务端,相当于传统框架中的控制器和模型。想想看传统框架的订单模块调用商品模块,肯定不需要加载商品模块的控制器的,直接加载模型就好了。所以分开之后,我们可以直接调用,而不需增加画蛇添足的一层。