极客时间 - 从0开始学架构

架构设计的主要目的:解决复杂度带来的问题

复杂度的六个来源:

1、高性能

体现在两方面:

一、单台计算机内部
最关键的部分是操作系统,操作系统和性能最相关的是 进程和线程

单任务 -> 多任务批处理 -> IO操作导致 CPU 利用率底下 -> 多进程 -> 进程间通信(管道、消息队列、信号量、共享存储) 
-> 进程内部串行处理效率底下 -> 多线程,共享一份进程数据 -> 互斥锁机制 

单 CPU 模拟并行处理 -> 多 CPU 并行处理:目前的解决方案:SMP、NUMA、MPP

操作系统调度最小单位:线程,分配资源最小单位:进程 

二、多台计算机集群

1、任务的分配
这里写图片描述
2、任务的分解;

将任务处理器,按照不同的业务进行拆分,不同的业务给不同的任务处理器处理,但是这种拆分对性能的提升是有一个上限的

2、高可用

高可用定义:系统无中断地执行其功能的能力,代表系统的可用性程度,是系统进行设计时的准则之一;

本质上,都是通过 “冗余” 实现高可用,通过冗余增强了可用性,同时也带来了复杂性;

计算高可用

存储高可用

存储高可用的难点在于,如何减少或者规避数据不一致对业务造成的影响。
因为如果不做冗余,系统的整体高可用无法保证

CAP 定理:存储高可用不可能同时满足 一致性、可用性、分区容错性,最多满足其中两个

状态决策高可用

几种常见的决策方式:
1、独裁式
2、协商式,主备决策
3、民主式 - Paxos 算法

3、可扩展性

可扩展性是指,系统为了应对将来需求变化而提供的一种扩展能力

扫描二维码关注公众号,回复: 2632409 查看本文章

设计具备良好可扩展性的系统,有两个基本条件:1、正确预测变化;2、完美封装变化

预测变化的复杂性:
* 不能每个设计点都考虑可扩展性;
* 不能完全不考虑可扩展性;
* 所有的预测都存在出错的可能性;

应对变化的复杂性:

  • 系统需要拆分出变化层和稳定层;
  • 需要设计变化层和稳定层之间的接口;

4、低成本

在保证高性能和高可用的前提下,满足成本约束,要么引进新的技术,
要么创造新的技术,无论那种,都增加了复杂度

5、安全

从技术的角度来讲,安全分为两类:一类是功能上的安全,一类是架构上的安全;

功能安全,常见的如 XSS 攻击、CSRF 攻击、SQL 注入、Windows漏洞等,本质上是系统有漏洞,
让黑客有了可乘之机,形象地说,功能安全就是“防小偷”;

架构安全,如果说 功能安全是 防小偷,那么架构安全就是防强盗。传统的架构安全主要依靠防火墙,
但是防火墙的性能一般。互联网系统的架构安全较少由自己来设计和实现,只能依靠运营商或者云服务商
强大的带宽和流量清洗能力。

6、规模

1、功能越多,系统复杂度指数级上升;
2、数据越来越多,系统复杂度发生质变;

  目前的大数据理论基础是 Google 发表的三篇大数据相关论文

  * Google File System 大数据文件存储的技术理论 
  * Google Bigtable    列式数据存储的技术理论 
  * Google MapReduce   大数据运算的技术理论 

猜你喜欢

转载自blog.csdn.net/liangjiu2009/article/details/81501921