RPC的原理以及演变

本文将从简单的网络请求(客户端/服务器端),到RPC的使用,逐步分析。

一、普通的网络请求流程(java web、C/S)

在这里插入图片描述
(1)客户端(一般为浏览器)通过提交表单或者点击链接等等方式通过form、ajax、a链接、js等方式发送http请求,url即为服务器地址,包含在http请求头中。
(2)http请求头除了包含url之外,还有一些必要信息(如cookie等)。http请求体包含了http请求携带的数据,比如如果是填写的表单,那么请求体携带参数。如果是上传文件,那么请求体里包含文件内容(并且此时请求头中contenttype参数设置为。。。。,以供服务器端程序识别)。
(3)http请求传输至服务器端,url中包含具体端口信息,所以服务器的操作系统会将http数据传输至对应端口(Tomcat占用并监听的端口)暂存,然后定期轮询端口的tomcat程序会取出端口的http数据,并将其解析(解析url),将数据定向的传输至对应web项目的对应程序。
(4)程序处理数据,并做出适当响应。一般情况下,程序操作离不开对数据库的操作,所以程序操作包含对数据库的交互。并且当数据库内容过多并且程序对某些集中的数据访问频率更高时,一般服务器还会设置redis缓存,提高查询等对数据操作的速度,间接提高程序运行速度。
在这里插入图片描述

二、网络请求增多

当网络请求增多时,单个服务器顶不住压力,就需要对服务器端做出一些升级和改良。主要措施有:
(1)升级服务器硬件设备。升级设备硬件设备是最简单粗暴的改良策略,但是硬件的改良是单向并且有上限的,当硬件升级达到瓶颈时,就需要寻求软件策略。
(2)采用多服务器分布式部署Web服务。使用多个相同的服务器,每个服务器上均部署相同的web服务器程序。但是多个服务器意味着有多个IP地址,所以就需要一个代理服务器Ngix,用于接收并分配http请求给各个服务器。
在这里插入图片描述

三、数据库的集群

虽然复制了服务器缓解了单个单个服务器的网络请求压力,但是数据库目前仍然是单服务器,数据库的访问量依然很大(因为这些多个服务器仍然是操作同一数据库)。所以数据库的访问也要做出优化:数据库集群
数据库集群分为主、从服务器,并将数据库的读写分离,数据库读操作从数据库,写操作主数据库:
在这里插入图片描述

四、服务(功能)的提炼以及复用

前面讲到,面对高并发网络请求时,采用了复制添加多个服务器并部署相同的web应用程序。但是,当请求量再次增大时,一些问题也就随之产生了。每台服务器都部署着完整的、相同的程序,然而,并不是每个功能都会有较为接近的请求量,所以就会出现一些浪费。比如,每次用户请求服务器都会走一遍登录以及校验的功能模块。因此就有了对功能的抽取、管理和复用
对每个可复用的功能模块提取出来,分布在其他各个单独的服务器,作为一个微服务。一些服务器只部署实现了特定功能的程序,使功能模块化。而使用这些功能的程序,就像是一个客户机,发送一些必要的参数,等待返回数据,继续本地程序的执行。
在这里插入图片描述
但是,把服务从整体程序中拆分部署到不同的服务器中,那么我从controller层调用service层从本地调用改成了远程调用,怎样做到屏蔽远程调用,像是在本地调用一样。生产者消费者之间密集的通信。这些都是分布式、远程调用需要解决的问题。

五、RPC、dubbo、Zookeeper

在这里插入图片描述
RPC微服务调用原理

前边我们说,把功能模块单独部署到服务器,其他程序调用这些功能从本地调用改为了远程调用。那么远程调用时如何通信的,对于这些服务的生产者和消费者又是怎样管理的,这里就要引入RPC、RPC框架(以dubbo为例)、中央管理平台(zookeeper为例)。

RPC全名远程过程调用,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。实现远程过程调用的框架成为RPC框架。RPC框架的作用就是屏蔽网络细节,使得微服务的消费调用就像是本地调用。即消费方像是调用本地方法一样调用服务,消费者就像是为本地程序提供了一个接口。

常见的RPC框架为dubbo、dubbox、grpc、thrift等等,其中较为热门的是dubbo,而grpc和thrift的优点是跨语言。
dubbo是阿里巴巴开发的高性能服务框架,而dubbo搭配使用的中央注册管理平台是zookeeper。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值