分布式简要说明

news/2024/11/24 13:32:45/

1.分布式简要说明

《分布式系统原理与范型》定义:

分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。

分布式系统 (distributed system) 是建立在网络之上的软件系统。

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

2.应用架构及发展演变

在这里插入图片描述

2.1.单一应用 ORM

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

在这里插入图片描述

适用于小型网站,小型管理系统,将所有功能都部署到一个功能里,简单易用。

缺点

  1. 性能扩展比较难
  2. 协同开发问题
  3. 不利于升级维护

2.2.垂直应用架构 MVC

将应用切割成几个互不相干的小应用,在将每个小应用独立放到一个服务器上,如果哪一个应用的访问数量多就多加几台服务器。

在这里插入图片描述

缺点

  1. 公用模块无法重复利用,开发性的浪费

2.3.分布式服务架构

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

在这里插入图片描述

2.4.流动计算架构

当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。

流动计算架构:在分布式应用架构的基础上增加了一个调度、治理中心基于访问压力实时管理集群容量、提高集群的利用率,用于提高机器利用率的 资源调度和治理中心(SOA) 是关键 (不浪费计算机资源)

在这里插入图片描述

3.RPC

3.1.什么叫RPC

  1. **RPC【Remote Procedure Call】**是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。
  2. RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

3.2.RPC基本原理

在这里插入图片描述

  1. Client像调用本地服务似的调用远程服务
  2. Client stub接收到调用后,将方法、参数序列化
  3. 客户端通过sockets将消息发送到服务端
  4. Server stub 收到消息后进行解码(将消息对象反序列化)
  5. Server stub 根据解码结果调用本地的服务
  6. 本地服务执行(对于服务端来说是本地执行)并将结果返回给Server stub
  7. Server stub将返回结果打包成消息(将结果消息对象序列化)
  8. 服务端通过sockets将消息发送到客户端
  9. Client stub接收到结果消息,并进行解码(将结果消息发序列化)
  10. 客户端得到最终结果。

RPC 调用分以下两种

同步调用:客户方等待调用执行完成并返回结果。

异步调用:客户方调用后不用等待执行结果返回,但依然可以通过回调通知等方式获取返回结果。若客户方不关心调用返回结果,则变成单向异步调用,单向调用不用返回结果。

RPC步骤解析

在这里插入图片描述

RPC两个核心模块:通讯,序列化。


http://www.ppmy.cn/news/97529.html

相关文章

Linux-0.11 文件系统char_dev.c详解

Linux-0.11 文件系统char_dev.c详解 模块简介 char_dev.c文件主要负责字符设备的访问方法。 函数详解 rw_ttyx static int rw_ttyx(int rw,unsigned minor,char * buf,int count,off_t * pos)该函数是串口终端的读写函数。 return ((rwREAD)?tty_read(minor,buf,count):…

使用PyTorch构建神经网络,并计算参数Params

文章目录 使用PyTorch构建神经网络,并计算参数Params举例计算具有全连接层的神经网络的参数数量计算卷积神经网络的参数数量Params计算过程 总结 使用PyTorch构建神经网络,并计算参数Params 在深度学习中,模型的参数数量是一个非常重要的指标…

学习WiFi,怎么入手?

欢迎大家一起学习探讨通信之WLAN。在工作和平时与朋友交流中,时不时有人问到,“想学WiFi,不知道如何入手?”,“搞了一两年WiFi,但感觉还是一头雾水,啥都没掌握,怎么办?”…

vue字符串拼接的多种方法

在 vue项目中,我们可以使用多个不同的方法来拼接字符串。今天我们就来介绍一下 vue中各种方法的用法。 第一种方法:使用 lodash进行字符串拼接,这是最简单的一个方法,它最大的缺点就是它比较慢,需要时间去执行拼接&…

windows安装python开发环境

最近因工作需要,要学习一下python,所以先安装一下python的开发环境,比较简单 下载和安装Python 首先,在浏览器中打开Python的官方网站(https://www.python.org/downloads/) 然后,从该网站下载与你的操…

设计模式之模板方法

设计思想: MyBeanFactory 类实现创建bean的功能,后面需求升级, System.out.println("依赖注入"bean); 也就是依赖注入这一部分,因之前没有支持 Autowried依赖注入,现在需要添加上,如果直接添加在 getBean() 方法中&…

哈希表(哈希函数和处理哈希冲突)_20230528

哈希表(哈希函数和处理哈希冲突) 前言 关于哈希表的主题的小记原计划5月23日完成,由于本人新冠阳性,身体发烧乏力,周末感觉身体状况稍加恢复,赶紧打开电脑把本文完成,特别秉承“写是为了更好地思考&#…

尝试在UNet的不同位置添加SE模块

目录 (1)se-unet01(在卷积后,下采样前,添加SE模块) (2)se-unet02(在卷积后,上采样前,添加SE模块) (3)se-un…