精读《从零开始做架构》( 三 )


详细方案设计详细方案设计就是将方案涉及的关键技术细节给确定下来 。
架构模式实战高性能架构模式存储高性能关系型数据库 。单个数据库无法满足业务需要,必须考虑数据库集群的方式 。高性能数据库集群的第一种方式“读写分离”,将访问的压力分散到集群的多个节点上去 。第二种方式“分库分表”分散访问压力,分散存储压力 。常见的开源框架:淘宝TDDL,360的Atlas 。
高性能NOSQL:常见的NoSQL 方案有如下4 类:

  • K-V 存储:解决关系数据库无法存储数据结构的问题,以redis 为代表 。
  • 文档数据库:解决关系数据库强schema 约束的问题,以MongoDB 为代表 。
  • 列式数据库: 解决关系数据库大数据场景下的I/O 问题,以HBase 为代表 。
  • 全文搜索引擎:解决关系数据库的全文搜索性能问题,以Elasticsearch 为代表 。
缓存:缓存就是为了弥补存储系统在这些复杂业务场景下的不足,其基本原理是将可能重复使用的数据放到内存中,一次生成、多次使用,避免每次使用都去访问存储系统 。缓存常见问题有缓存雪崩、缓存穿透、缓存预热、缓存热点等 。
  • 缓存雪崩是指当缓存失效(过期)后引起系统性能急剧下降的情况 。
  • 缓存穿透是指缓存没有发挥作用,业务系统虽然去 查缓存,但没有命中,就需要再次去存储系统查询数据 。
  • 缓存预热(warm up)指系统上线后,将相关的缓存数据直接加载到缓存系统,而不是等待用户访问才来触发缓存加载 。
  • 缓存热点:对于一些特别热点的数据,如果大部分甚至所有的业务请求都命中同一份缓存数据,则这份数据所在的缓存服务器的压力也很大
计算高性能计算高性能主要集中在两方面:
(1 )尽量提升单服务器的性能,将单服务器的性能发挥到极致 。
(2 )如果单服务器无法支撑性能,设计服务器集群方案 。
单机服务器高性能 。单机高性能关键之一网络编程模型涉及到两个关键点:I/O 模型和进程模型
  • I/0 模型:阻塞、非阻塞、同步、异步 。
  • 进程模型:单进程、多进程、多线程 PPC,TPC,Reactor,Proactor
集群高性能 。高性能集群的本质很简单,通过增加更多的服务器来提升系统整体的计算能力 。高性能集群的复杂性主要体现在负载均衡和分配算法 。
  1. 负载均衡:常用的负载均衡系统包括3种:DNS负载均衡、硬件负载均衡和软件负载均衡 。DNS负载均衡实现简单、成本低,但也存在粒度太粗、负载均衡算法少等缺点 。软件和硬件的最主要区别就在于性能,硬件负载均衡性能远远高于软件负载均衡性能 。Nginx的性能是万级,一般的linux服务器上装一个Nginx大概能到5万/秒;LVS的性能是十万级,据说可达到80万/秒;而F5性能是百万级,从200万/秒到800万/秒都有 。
上述三种负载均衡的分类架构,各有自己的所长,其实可以遵循一个组合原则来使用它们 。
  1. 负载均衡常见算法:
根据算法期望达到的目的,大体可以分为这么几类:
(1)任务平分类:负载均衡系统将接收到的任务平均分配给服务器进行处理
(2)负载均衡类:负载均衡系统根据服务器的负载来进行分配,
(3)性能最优类:负载均衡系统根据服务器的响应时间来进行任务分配
(4)Hash类:负载均衡系统根据任务中的某些关键信息进行Hash运算
高可用架构模式高可用架构理论CAP理论:在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、 分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲 。
可以注意上述描述中着重强调了两点:互相连接和共享数据 。因为分布式系统并不一定会互联和共享数据,只有满足这两点的系统才符合CAP理论 。CAP原理是忽略网络延迟的 。
BASE是Basically Available(基本可用)、SofState(软状态)和Eventually Consistency(最终一致性)三个短语的缩写,其核心思想是即使无法做到强一致性(CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consistency) 。
当谈到数据一致性时,CAP、ACID、BASE难免都会被拿出来进行讨论的,原因在于这三者都是和数据一致性相关的理论 。ACID,数据库事务的特性 。CAP,分布式系统设计理论 。BASE,也是分布式系统设计理论,延伸了CAP理论中AP方案 。
FEMA分析方法FMEA(Failure mode and effects analysis,故障模式与影响分析)又称为失效模式与后果分析


推荐阅读