分布式系统

分布式系统

随着计算机系统规模变得越来越大,将所有的业务单元集中部署在一个或若干个大型机上的体系结构,已经越来越不能满足当今计算机系统,尤其是大型互联网系统的快速发展,各种灵活多变的系统架构模型层出不穷。分布式的处理方式越来越受到业界青睐,计算机系统正在经历一场前所未有的从集中式向分布式架构的变革。

所有的业务单元集中部署在一个或若干个大型机上的体系结构,就是集中式,我们开始了解下集中式。

集中式的概念

集中式系统有一个大型的中央处理系统,中央处理系统时一台高性能、可扩充的计算机,所有的数据、运算、处理任务全部在中央计算机系统上完成。

中央计算机连接多个终端,终端用来输入和输出,不具有数据处理能力。远程终端通过网络连接到中央计算机,它们得到的信息是一致的。

我们在日常生活中常用的银行自动提款机(ATM)、收款机(POS)等都是用的是集中式系统。

集中式的优点

  1. 数据容易备份,只需要把中央计算机上的数据备份即可;
  2. 不易感染病毒,只要对中央计算机做好保护,终端一般不需要外接设备,感染病毒的几率很低;
  3. 总费用较低,中央计算机的功能非常强大,终端只需要简单、便宜的设备。

集中式的缺点

  1. 中央计算机需要执行所有的运算,当终端很多时,会导致响应速度变慢;
  2. 如果终端用户有不同的需要,要对每个用户的程序和资源做单独的配置,在集中式系统上做起来比较困难,而且效率不高。
  3. 如果网络出现异常或者很卡,直接影响工作效率。如果是中央服务器挂了,那就集体瘫痪了。
  4. 安全度不高,重要的东西都放在一个中央服务器中,如果被黑,那损失就大了。

特点

集中式系统最大的特点就是部署结构简单。由于集中式系统往往基于底层性能卓越的大型主机,因此无需考虑如何对服务进行多个节点的部署,也就不用多个节点之间的分布式协作问题。

分布式的概念

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。

  • 分布式系统的出现是:为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务
  • 其目的是:利用更多的机器,处理更多的数据
  • 系统架构层面:集群+分布式   多机演变
  • 适用于:大型网站架构
  • 分布式系统分为:分布式计算(computation)与分布式存储(storage)。计算与存储是相辅相成的,计算需要数据,要么来自实时数据(流数据),要么来自存储的数据;而计算的结果也是需要存储的。
  • 学习前所需技能:计算机基础知识,如操作系统、计算机网络

分布式的特征

系统中的若干台计算机可以互相协作来完成一个共同的任务,一个标准的分布式系统应该具有以下几个主要特征:

分布性

分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分。

对等性
分布式系统中计算机没有主/从之分,即没有控制整个系统的应用,也没有被控制的从机,组成分布式系统的所有计算机都是对等的。

透明性

系统资源被所有计算机共享。每台计算机的用户不仅可以使用本机的资源,还可以使用本分布式系统中其他计算机的资源(包括CPU、文件、打印机等)。

并发性

在一个计算机网络中,程序运行过程中的并发性操作是非常常见的。例如同一个分布式系统的多个节点,可能并发地操作一些共享资源,诸如数据库或分布式存储等。

通信性

系统中任意两台计算机都可以通过通信来交换信息。

集群和分布式

集群:是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。
特点:多人一起作同样的事,同一个业务,部署在多个服务器上 。

分布式 :是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。
特点:多人一起作不同的事,一个业务拆分为多个子业务,部署在多个服务器上。

分布式的通信方式

1、基于Http网络协议
通过客户端发起的get、post请求,服务端接收request请求,处理请求,得到响应内容,通过网络传送到客户端,由浏览器解析出一个可视化的页面。
这种交互最大的优势是实时性,通过HTTP请求连接各个子系统,从而跨服务器来完成一个完整的业务流程。缺点协议请求头的信息较少,一般都是关键参数,完整数据由下一个子系统从数据库、文件系统来获取,从来保证前后的业务数据衔接。

2、基于消息队列的模式。
这种模式一个很重要前提是对实时性要求不高。优点可以有效降低模块的耦合性,减轻主干业务流程,将大量的业务交由后台任务来处理,有效缩短系统响应时间。目前市场上有很多成熟的消息框架:如Active MQ,IBM 的MQ,JBoss MQ,MSMQ。
Zookeeper是使用共享存储模型来实现应用间的协作和同步原语。

CAP理论

CAP理论告诉我们,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求。最多同时满足其中两项。
一致性(C)
在分布式环境中,一致性是指数据在多个副本之间是否能保持一致的特性。在分布式系统中,如果能做到针对一个数据项的更新操作执行完成后,所有的用户都可以读取到其最新的值,那么这样的系统就被认为具有强一致性(或严格的一致性)。

可用性(A)
指系统提供的服务必须一直处于可以的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。有限时间指对于用户的一个请求,系统必须在指定时间(即响应时间)内返回对应的处理结果,如果超过这个时间规范,那么系统就被认为不可以用。

分区容错性(P)
分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可以性的服务,除非是整个网络环境都发送了故障。

BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写,BASE是对CAP中一致性和可用性权衡的结果。
BASE理论是基于CAP定理逐步演化而来的,其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。
下面着重对BASE中的三要素进行详细讲解。

基本可用

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性。

软状态

弱状态也称为软状态,和硬状态相对,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据听不的过程存在延时。

最终一致性

最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

总结

BASE理论面向的是大型高可用可扩展的分布式系统,和传统事务的ACID特性使相反的,它完全不同于ACID的强一致性模型,而是提出通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性与BASE理论往往又会结合在一起使用。

分布式常用技术

1.分布式系统的架构体系

基于对象的体系机构

面向服务的架构(SOA)

REST风格的架构

微服务架构(MSA)

容器技术

Serverless架构

2.分布式消息服务

Apache ActiveMQ

RabbitMQ

RocketMQ

Apache Kafka

3.分布式计算

MapReduce

Apache Hadoop

Apache Spark

Apache Mesos

4.分布式存储

Bigtable

Apache HBase

Apache Cassandra

Memcached

Redis

MongoDB

5.分布式监控

Nagios

Zabbix

Consul

Zookeeper

6.分布式的版本控制

Bazaar

Mercurial

Git

7.RESTfulAPI、微服务及容器技术

Jersey

Spring boot

Docker
  
Dubbo

Spring Cloud

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值