Dubbo框架学习-01-分布式系统相关概念

背景

    传统项目和互联网项目,传统项目面向企业,互联网项目面向网民。互联网项目相比于传统项目要求更严格,面向网民,用户要求的美观,功能,速度,和稳定性更好,其中对于速度和稳定性对于后台息息相关。
针对于互联网项目和企业项目的大规模数据,单个计算机无法完成数据的计算任务和存储任务,分布式系统能帮我们解决这个问题,利用多台计算机来完成计算任务和存储任务。通过分布式系统能解决流量大,并发高的问题。

    开发一个大型互联网项目架构目标:

  • 高性能:提高快速的访问体验
  • 高可用: 网站服务可以一直正常访问
  • 可伸缩: 可以通过硬件增加或减少,提高/降低处理能力
  • 高可拓展性: 系统间耦合性低,方便拓展
  • 安全性 :提供网站安全访问,和数据加密,安全存储策略
  • 敏捷性:随机应变,快速响应

    对于开发大型互联网项目,衡量网站性能的指标有:1.响应时间 2.并发数 3.吞吐量

  • 响应时间:执行一个请求从开始到最后收到响应数据所花费的时间
  • 并发数:系统同时能处理的请求数量
  1. 并发连接数: 指的是客户端向服务端发起请求,并建立TCP连接。每秒钟服务器连接的总TCP数量
  2. 也称为QPS,指的是每秒多少请求
  • 吞吐量:单位时间内系统能处理的请求数量
  1. QPS :Query Per Second每秒查询数
    2.TPS :Transcations Per Second每秒事务数

QPS>=并发数>=TPS
在这里插入图片描述
OA(办公自动化系统),HR(人力资源系统),CRM(关系管理系统)

什么是分布式

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

    在《分布式系统管理与范型》一书中说到:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统”。在网络操作系统中,对于用户调用远程程序,需要用户在远程机器上操作,而分布式系统调用远程程序,就像本地程序一样,让用户察觉不到,体验感极佳。


    分布式系统是多个处理机通过通信线路互联构成的松散耦合的系统,从系统单个处理机来看,只有它自己的资源是本地的,其余的资源都是远程的。

    分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。

分类

  • 第一种是面向计算任务的分布并行计算机系统和分布式多用户计算机系统,它们要求尽可能高的耦合度,以便发展成为能分担大型计算机和分时计算机系统所完成的工作。 [2]
  • 第二种是面向管理信息的分布式数据处理系统。耦合度可以适当降低。 [2]
  • 第三种是面向过程控制的分布式计算机控制系统。耦合度要求适中,当然对于某些实时应用,其耦合度的要求可能很高。

集群和分布

    集群是很多人一起,干一件事情。
    分布式很多人一起,干不一样的是,合起来是一件大事

举例: 有一个餐馆,有两个厨子,一个叫老王,一个叫老李,老李和老王干一样的活,进行洗菜,切菜,炒菜,构成一个集群,两个合起来可以做更多的菜,这样能做到高性能。如果老王生病了,餐馆可以不用歇业,因为还有老李上班。这下给餐馆招人,招了两个员工,一个负责洗菜,一个负责切菜,他们同时完成一项事情,就是煮一道菜这件事情,这就是分布式,能大大提高效率。对于洗菜太慢了,我们可以多雇一名洗菜的,来满足我们的需求,这就是可伸缩性。随着时代的发展,发现切菜不符合现状了,于是用机器人替换了切菜这个任务,实现了可拓展性。
集群能实现高性能,高可靠性。

在这里插入图片描述
    在软件开发中进行的集群和分布式
在这里插入图片描述

架构引进

  1. 单一应用架构
    在这里插入图片描述

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

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

缺点:

  • 性能拓展比较难
  • 协同开发问题
  • 不利于升级维护
  • 可靠性差
  1. 垂直应用架构
    在这里插入图片描述

当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。

通过切分业务来实现各个模块独立部署,降低了维护和部署的难度,团队各持其职更以管理,性能拓展也更方便,更有针对性。

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

  1. 分布式服务架构
    在这里插入图片描述
    分布式架构是在垂直架构的基础上,将公共业务模块抽取出来,形成独立的服务,供其他调用者消费,逐渐形成稳定的服务中心,使前端应用能快速的响应多变的市场需求。此时,用于提高业务的复用及整合的分布式服务框架(RPC)是关键。

存在的问题:

    服务提供方一旦变更,所有消费方都需要变更,缺乏统一管理。

  1. (SOA)面向服务架构架构

SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。交给服务中介统一管理服务。

ESB:企业服务总线,服务中介,主要是提供了一个服务于服务之间的交互,ESB包含的功能如:负债均衡,浏览控制,加密处理服务监控,异常处理,监控告急等等。

在这里插入图片描述

  1. 微服务架构
    在这里插入图片描述
  • 微服务脚骨是在SOA做的升华,微服务架构强调的重点是"业务需要彻底的组件化和服务化",原有的单个业务系统会拆分为多个可以独立开发、设计、运行、维护的小应用,这些应用之间通过服务完成交互和集成。

  • 微服务架构=80%的SOA架构思想+100%的组件化架构思想+80%的领域建模思想

特点:

  • 服务实现组件化,开发者可以自由选择开发技术,也不需要协调其他团队
  • 服务之间交互一般使用REST API
  • 去中心化: 每个微服务有自己私有的数据库持久化业务数据
  • 自动化部署:将每个应用拆分为一个一个独立的单个服务,方便自动化部署,测试,运维。

特征

  1. 分布性。分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。
  2. 自治性。分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。通常,彼此在地位上是平等的,无主次之分,既能自治地进行工作,又能利用共享的通信线路来传送信息,协调任务处理。
  3. 并行性。一个大的任务可以划分为若干个子任务,分别在不同的主机上执行。
  4. 全局性。分布式系统中必须存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进程通信,并且不区分本地通信与远程通信。同时,还应当有全局的保护机制。系统中所有机器上有统一的系统调用集合,它们必须适应分布式的环境。在所有CPU上运行同样的内核,使协调工作更加容易。

优缺点

  1. 资源共享
  2. 加快计算速度
  3. 可靠性高
  4. 通信方便、快捷

RPC

在这里插入图片描述

RPC【Remote Procedure Call】是指远程过程调用,是一种进程间通信方式,他是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。

也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用。RPC就是要像调用本地的函数一样去调远程函数;

步骤
在这里插入图片描述
核心就是通讯和序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值