架构基础认识

系统与子系统

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

模块与组件

业务--模块

技术--组件

框架与架构

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

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

架构设计的目的

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

高性能

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

单机

进程和线程

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

集群

任务分配

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

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

任务拆解

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

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

高可用

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

CAP理论

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

决策方式

独裁式

协商式

主备决策

民主式

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

可扩展性

方案一

提炼出变化层和稳定层

方案二

提炼出抽象层和实现层

核心思想是封装变化

复杂度来源

低成本、安全、规模

低成本

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

安全

功能安全

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

架构安全

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

规模

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

架构设计的三个原则

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

合适原则

简单原则

结构的复杂性

逻辑的复杂性

演化原则

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值