系统设计总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一篇、分布式系统设计总结

系统设计总结

分布式系统设计总结

分布式系统简介

说到分布式系统,首先要了解什么是分布式系统,分布式系统,就是组成于系统的硬件、软件存在于网络,相互之前只通过消息进行协作。这里其实很好理解,有一个概念,叫大系统小做,就是把系统功能清晰的细分为很多小模块,每个模块都很容易实现,分而治之。相互之间通过消息组件协作,其中消息组件也就是整个系统的关键了。

分布式系统有三个特征

并行网络中的模块,各自运行,相互之间并行处理问题,通过消息进行协作。他们之间的资源共享是非常重要。

容错任何系统都有可能出错,设计者的一个职责就是容错性。分布式系统中

随时都可能有系统错误,包括挂机,网络故障,失联。而且一旦出现错误,其他模块可能不会立即感知。

透明分布式系统对于用户来说是透明的,这样能够方便的管理用户所需数据,处理好负载均衡,分布式另一个目标是将它的进程和资源实际分布在多台计算机上这一事实隐藏起来。

分布式系统的作用体现在它可以让多台服务器协同工作,完成单台服务器无法处理的任务,尤其是高并发或者大数据量的任务,同时能提供稳定可靠的服务。

分布式系统基本原则

分布式系统遵循几个基本原则

CAP原理

分布式系统基础理论CAP为分布式的应用提供了理论基础。CAP是CONSISTENCY、AVAILABILITY、TOLERANCE OF NETWORK PARTITION三个词组的简写,分别表示

CCONSISTENCY,一致性;包括强一致性和弱一致性

AAVAILABILITY,可用性(主要指的是快速获取数据的能力,即性能);

PTOLERANCE OF NETWORK PARTITION,分区容错性(亦包括可分布性)CAP理论告诉我们,一个分布式系统不可能同时满足一致性,可用性和分区容错性这三个需求,三个要素中最多只能同时满足两点。三者不可兼顾,此所谓鱼与熊掌不可兼得也。而对于分布式数据系统而言,可分布性和分区容错性是基本要求,否则就不称其

为分布式系统了。因此架构设计师不要把精力浪费在设计如何能同时满足三者的完美分布式系统上,而是应该进行权衡取舍。这也意味着分布式系统的设计过程,也就是根据业务特点在C(一致性)和A(可用性)之间寻求平衡的过程,要求架构师真正理解系统需求,把握业务特点.

●BASE理论酸碱平衡

【BASE】来自于互联网的电子商务领域的实践,它是基于CAP理论逐步演化而来,核心思想是即便不能达到【强一致性】,但可以根据应用特点采用适当的方式来达到【最终一致性】的效果。BASE是BASICALLY AVAILABLE、SOFT STATE、EVENTUALLY CONSISTENT三个词组的简写,是对CAP中C & A的延伸,说起来很有趣,BASE的英文意义是碱,而ACID是酸,真的是水火不容。我们稍微花点时间展开BASE的含义

①BASICALLY AVAILABLE基本可用;

②SOFT-STATE软状态/柔性事务,即状态可以有一段时间的不同步;

③EVENTUAL CONSISTENCY最终一致性;

分布式系统设计理念

分布式系统设计的几个基本理念

●分布式系统对服务器硬件要求很低

●分布式系统强调横向可扩展性

●分布式系统不允许单点失效

●分布式系统应用服务最好做成无状态的

目前比较流行的服务架构从逻辑上划分都是三层架构接入层、业务层、数据层,因此分布式系统要提供高可用的服务,则需要分别提高这三层的可靠性。容灾备份

◆接入层方面

外网环境在不同的ISP机房部署,外网环境恶劣时提供稳定服务。

◆业务层方面

●内网环境每个地区最少两个IDC,地区内实现流量穿越,避免内网网络故障。●单点故障每个模块在每个地区至少两台机器,避免单点故障,在出现故障时

B进行流量迁移。

◆数据层方面

●主备(热备)

●依靠仲裁者切换备机。

●依靠一致性控制中心实现数据的强一致性容灾。

●热备

●冷备

过载保护

根据“业务响应时长”、“线程池数量”和“调用方超时时长”设置最大等待队列,出现过载时拒绝请求,避免雪崩现象。

柔性可用

●分离业务场景,拆分业务模块并单独部署,一个模块出现问题,不会影响整个

系统不可用。

●补偿逻辑,在系统恢复后,采用补偿逻辑恢复故障时段内的数据。

多地部署根据用户所在地区就近接入,减少时延,提升访问速度。

调用方式采用“并行”或“异步”方式调用接口,提升访问速度。

处理方式采用“队列”或“异步”方式处理请求,提升访问速度。

缓存支持借用缓存系统缓存数据,避免从DB中获取数据,实现快速响应。

数据压缩如对返回的数据,文件,图片等进行压缩,节省带宽,实现快速响应。批量处理,提高系统吞吐量

分布式系统可扩展性

扩展性主要关注以下几个方面

1、并发扩展

●接入层、业务层方面实现无状态设计,无状态的优势在于良好的水平伸缩,

无论机器恢复、扩容还是裁剪都变的十分简单。

●数据层方面无论是CACHE还是DB,都可以采用读写分离方式实现并发扩展。2、功能扩展(业务层方面)

●架构方面系统拆分,大系统小做,分离业务场景,寻求简单设计。●设计方面善用设计模式解决复杂业务问题,使业务实现可扩展性。

●协议方面可以采用XML/JSON来定义接口协议,实现接口协议的可扩展

性。3、存储扩展(数据层方面)

●表设计方面对业务进行抽象,使用横表,竖表,主表、扩展表等方式实现数

据存储的可扩展性。

●容量方面可以通过分库分表方式实现存储容量的可扩展性,关于如何数据映

射到表或库中,可以采用“一致性哈希算法”。

分布式系统低成本

第二篇、信息系统分析与设计心得报告

系统设计总结

信息系统分析与设计

专业信息与计算科学

相关文档
最新文档