张子阳的博客

首页 读书 技术 店铺 关于
张子阳的博客 首页 读书 技术 关于

从零开始学架构

2019-03-29 张子阳 推荐:

忘了从哪儿看到过这本书,因为自己也在做架构方面的工作,架构方面的书自然是多多益善,于是就买来读了。这本书的难度适中,基本上是从一个比较高的角度,把互联网系统采用的架构总结和梳理了一遍。这本书并没有深入到每一个技术的细节,因为很多细节都需要专门的一本书去讲解,而是讲解了每项技术用来解决的问题,以及应用该技术所可能产生的附加影响。

全书分为了20个章节,每个章节涉及一个技术点。全书330页,所以每章只有15页左右,比较短小精悍。在实际工作中,可以作为解决方案的参考,然后再根据选择的方案,进一步研究和实施。

下面是全书的一些要点:

架构设计的主要目的是解决软件系统复杂度带来的问题(这里不见得苟同。比如原本的系统很简单,为了提升性能,更改后的架构可能反而引入了复杂性)。

架构设计的原则

存储高性能

读写分离

主要问题:同步复制有延迟,注册完立即登录可能登录失败,因为登录时读操作,而此时还没有同步过去。

解决方案:

  1. 紧随“写操作”后的“读操作”也读主库。
  2. 二次读取,当从库读无数据时,从主库读。
  3. 关键业务使用主库,非关键业务采用读写分离。(后台管理使用主库,前台用户读写分离)

分库

主要问题: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、微服务、微内核以及互联网架构的一些演进,这部分有点像前面章节基础知识的一些应用。

感谢阅读,希望这篇文章能给你带来帮助!