架构基础认识

系统与子系统

一个系统的架构,只包括顶层这一个层级的架构,而不包括下属子系统层级的架构。所以微信架构,就是指微信系统这个层级的架构。当然,微信的子系统,比如支付系统,也有它自己的架构,同样只包括顶层。

模块与组件

业务--模块

技术--组件

框架与架构

框架关注的是“规范”,架构关注的是“结构”。

软件架构指软件系统的顶层(Rank)结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。

架构设计的目的

架构设计的主要目的是为了解决软件系统复杂度带来的问题。

高性能

软件系统中高性能带来的复杂度主要体现在两方面,一方面是单台计算机内部为了高性能带来的复杂度;另一方面是多台计算机集群为了高性能带来的复杂度。

单机

进程和线程

有了多线程后,操作系统调度的最小单位就变成了线程,而进程变成了操作系统分配资源的最小单位。

集群

任务分配

分配算法:轮询、权重、负载

存储系统、运算系统、缓存系统都可以按照任务分配的方式来搭建架构

任务拆解

简单的系统更加容易做到高性能

可以针对单个任务进行扩展

高可用

高性能增加机器目的在于“扩展”处理性能;高可用增加机器目的在于“冗余”处理单元。

CAP理论

一致性、可用性、分区容错性

决策方式

独裁式

协商式

主备决策

民主式

民主式决策指的是多个独立的个体通过投票的方式来进行状态决策。

可扩展性

方案一

提炼出变化层和稳定层

方案二

提炼出抽象层和实现层

核心思想是封装变化

复杂度来源

低成本、安全、规模

低成本

nosql数据库、全文搜索引擎、hadoop(解决传统文件系统无法对海量数据存储和计算的问题)

安全

功能安全

常见的 XSS 攻击、CSRF 攻击、SQL 注入、Windows 漏洞、密码破解等

架构安全

互联网系统的架构安全目前并没有太好的设计手段来实现,更多地是依靠运营商或者云服务商强大的带宽和流量清洗的能力,较少自己来设计和实现。

规模

规模带来复杂度的主要原因就是“量变引起质变”,当数量超过一定的阈值后,复杂度会发生质的变化。

架构设计的三个原则

合适优于业界领先、简单优于复杂、演化优于一步到位

合适原则

简单原则

结构的复杂性

逻辑的复杂性

演化原则

你可能感兴趣的:(#,架构学习,数据库,系统架构,database)