web架构设计

高性能

高可用

系统的高可用方案很多,但本质都是通过冗余实现的。
高性能增加机器目的在于扩展处理性能;高可用增加机器目的在于冗余处理单元

计算高可用
存储高可用

应用层 数据层 服务层
应用层主要实现业务逻辑处理;服务层提供可复用的服务;数据层负责数据读写

高可用更复杂

可扩展性
封装变化 隔离可变性

复杂度来源
低成本
当我们设计高性能、高可用的架构时,通用的手段都是增加更多服务器满足高性能和高可用要求;而低成本正好相反,我们需要减少服务器才能达到低成本。因此低成本本质上与高性能、高可用是冲突的,所以低成本很多时候不会是架构设计的首要目标,而是架构设计的附加约束。
低成本架构设计带来的主要复杂度体现在,往往只有”创新”才能达到低成本目标。这里的创新既包括开创一个全新的技术领域,也包括引入新技术。

    例如
        nosql的出现是为了解决关系数据库无法应对高并发访问带来的访问压力。
        全文搜索(ES\SOLOR等)的出现是为了解决关系型数据库like查询低效的问题
        linkedin为了处理每天5千亿的时间,开发了高效的kafka消息系统
        新浪微博将传统的redis/mc+mysql方式,扩展为redis/mc+ssd cache+mysql方式,ssd cache作为二级缓存使用,既解决了mc/redis成本过高,容量小的问题,也解决了穿透DB带来的数据库访问压力
安全
规模