2019-3-29 张子阳 推荐: 4 难度: 2
忘了从哪儿看到过这本书,因为自己也在做架构方面的工作,架构方面的书自然是多多益善,于是就买来读了。这本书的难度适中,基本上是从一个比较高的角度,把互联网系统采用的架构总结和梳理了一遍。这本书并没有深入到每一个技术的细节,因为很多细节都需要专门的一本书去讲解,而是讲解了每项技术用来解决的问题,以及应用该技术所可能产生的附加影响。
全书分为了20个章节,每个章节涉及一个技术点。全书330页,所以每章只有15页左右,比较短小精悍。在实际工作中,可以作为解决方案的参考,然后再根据选择的方案,进一步研究和实施。
下面是全书的一些要点:
架构设计的主要目的是解决软件系统复杂度带来的问题(这里不见得苟同。比如原本的系统很简单,为了提升性能,更改后的架构可能反而引入了复杂性)。
读写分离
主要问题:同步复制有延迟,注册完立即登录可能登录失败,因为登录时读操作,而此时还没有同步过去。
解决方案:
分库
主要问题:join操作、事务
分表
水平分表、垂直分表
这章还概括讲述了 NoSQL、列式存储数据库、文档型数据库 等几种数据存储。
计算高性能分为单机高性能和集群高性能。
对单机高性能,主要讲了服务器处理连接和请求的几种模式:PPC(Process per Connection)、prefork(提前创建子进程模式)、TPC(Thread per Connection)、prethread(提前创建子线程)
Reactor模式,就是创建一个进程池,进程处理完连接后并不销毁,而是继续服务新进来的连接。
对集群高性能,则主要采用负载均衡。
负载均衡分了几层:DNS负载均衡、硬件负载均衡(F5、A10)、软件负载均衡(Nginx、LVS)。
CAP
CAP是分布式计算的一个基础理论,CAP分别代表Consistency、Availability、Partition Tolerance。这里理论的内容是:在一个分布式系统( 指互相连接并共享数据的节点的集合)中,当涉及读写 操作时,只能保证一致性( Consistence )、可用性( Availability )、分区容错性( Partition Tolerance) 三者中的两个,另外一个必须被牺牲。
实际中,因为网络不可能100%可靠,所以P是一个常态,那么实际上就是CP和AP两种情况。显然,这是两个矛盾的状态:
假设集群中的两个节点N1、N2,当N1和N2之间的网络中断后,假设客户端C1向N1中写入了数据,客户端C2从N2中读取,那么必然是:如果要保证一致性,那么N2就只能返回错误信息:未能实现与N1的同步,此时就牺牲了可用性。如果要保证可用性,那么N2返回的就可能并非最新的数据。
ACID
CAP有时会和ACID进行比较,ACID是为了保证数据库事务正确性而提出来的理论。
BASE
BASE 是指基本可用( Basically Available )、软状态( Soft State )、最终一致性( Eventual Consistency )。是对CAP(强一致性)的补充。
分布式事务算法
本书后面部分讲述了SOA、微服务、微内核以及互联网架构的一些演进,这部分有点像前面章节基础知识的一些应用。
感谢阅读,希望这篇文章能给你带来帮助!