分布式系统、RPC

分布式

在这里插入图片描述
分布式系统是若干独立系统的集合,这些计算机对于用户来说就像单个相关系统。
可能淘宝有100个独立的服务器,但是用户访问只用访问www.taobao.com,在用户眼里就只有一个系统。
分布式系统通过网络进行通信(通过http协议或RPC协议)。

Dubbo官网介绍的网站应用的演进:
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
在这里插入图片描述

单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。
在这里插入图片描述
缺点:

  1. 性能扩展比较难
  2. 协同开发问题
  3. 不利于升级维护(硬要升级就要把系统关掉,让用户等待)

垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。
在这里插入图片描述
通过切分业务来实现各个模块的独立部署,降低了维护和部署的难度,团队各司其职更易管理,性能扩展也更加方便,更有针对性。

缺点:公共模块无法重复利用,开发性的浪费。

分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务(公共模块)抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。
在这里插入图片描述

流动计算架构
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
在这里插入图片描述
写完一个模块就将其放到注册中心,用户用的时候从注册中心拿。
类比你去婚介所注册,才有人来找你。


RPC

两种负责网络通信的协议:Http、RPC

RPC:远程过程调用

那什么是本地方法调用呢?本地有一个A方法,调用本地的B方法。
远程过程调用就是A电脑的A方法去调用了B电脑的B方法。
分布式系统产生的问题就来源于网络不可靠。
在这里插入图片描述
在这里插入图片描述
通讯是为了传输
序列化是为了方便数据传输。因为网线中传的不是对象,是01010101二进制流。
Dubbo是基于java的高可用的RPC框架。

RPC步骤:
1)服务消费方(client)调用以本地调用方式调用服务;
2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
3)client stub找到服务地址,并将消息发送到服务端;
4)server stub收到消息后进行解码;
5)server stub根据解码结果调用本地的服务;
6)本地服务执行并将结果返回给server stub;
7)server stub将返回结果打包成消息并发送至消费方;
8)client stub接收到消息,并进行解码;
9)服务消费方得到最终结果。

参看知乎第一条回答:https://www.zhihu.com/question/25536695

如果要研究网络通信的原理,去研究Netty框架

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-玫瑰少年-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值