《大型网站技术架构之核心原理与案例分析》读书笔记

      架构!对于工作经验尚浅的我是理应远远不用考虑的俩字。不过就像这本书所说到的一个好的网站架构体系,不仅仅是架构师个人的架构,而是和参与共同建设的人共同贡献,让参与的人觉得自己是架构体系的建设者之一,就越是自动承担开发过程的责任和共同维护架构和改善软件。

     所以对于这本书,千万不要被名字吓到,这本书读完后,发现这就像平常游戏中的引导操作动画,虽然不能给你带来太过高深的技术,但是能让我们对于网站的组成和构造以及以后的发展会有一个清晰的思路,让我们在解决问题的时候提供多种多样解决方法的思路 。而不是单纯的代码+服务器,敲完代码就快乐完事。这本书有讲网站架构的演化、模式、核心要素和各种优化以及其伸缩、可扩展、安全的架构方案和例子。其中让我印象最深刻的是:

网站架构的模式

 

1.分层

分层:将网站软件系统横向分为三层:应用层、服务层、数据层。

应用层 网站业务和视图展示、 如网站的购物功能、搜索显示的结果等
服务层 为应用层提供服务支持,如用户管理服务、购物车服务等
数据层 提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

     并且,更具实际的应用条件,其中

       应用层还可以细分为:

    (1)视图层(美工负责)

    (2)业务逻辑层(开发负责)

       服务层也可以细分为:

     (1)数据接口层(适配各种输入和输出数据格式)

     (2)逻辑层(代码实现)

     上面的分层是逻辑上的分层,在实际上,我们可以是物理的分层把三层结构分别部署到三台服务器或者三类服务器集群上,使网站有更多的资源应对用户访问。在网站规模很小的时候就采取分层的架构,在网站升级的时候就拥有一个扎实的基础可以更友好面对网站往高并发和分布式发展。

 

2.分割

分割:将软件纵向切分,例如将大型网站分割成很小的粒度

例如: 应用层的分割:按照不同业务进行分割,由独立团队负责,部署在不同的服务器上,

     应用层

分割成下面业务

购物业务
论坛业务
搜索业务等等

如果一个业务庞大复杂的话,会继续把该业务进行分割。

例如购物业务会继续分割成:机票酒店业务、3c业务、小商品业务等更小的粒度。而在这个更微小的粒度上,可以继续分割成首页、搜索列表、商品详情等模块。

  

3.分布式

  分布式:使用更多的计算机将上面分层分割的业务或者模块部署在不同的服务器上,通过远程协同工作。

  优点:解决网站高并发问题

  缺点:

         (1) 分布式服务器越多,宕机概率越大。而宕机导致业务流程不能走通,使网站可用性降低。

         (2) 分布式环境中,数据的同步、一致性很困难

         (3) 开发管理维护困难

总结: 分布式要根据实际情况量力而行,不能为分布式而分布式。

应用:

          (1)分布式应用和服务。便于开发和维护,提高不同应用复用共同的服务

          (2)分布式静态资源。减轻服务负载压力

          (3)分布式数据和存储。Mysql等传统数据库结合NoSql数据库分布式存储巨量数据。

          (4)分布式计算。

 

4.集群

  在上面分层分割的基础上使用分布式把业务模块独立部署,但是对于网站某个模块的并发量高(用户访问集中),例如:网站的秒杀活动页面,还需要将其独立部署在服务器集群化(例如:负载均衡)目的是为了提高系统的高可用性

 

5.缓存

缓存: 把数据存放在计算最近的位置加快处理速度。

应用: 

        (1)CND

        (2)反向代理

        (3)本地缓存

        (4)分布式缓存

优点: 减轻后端应用数据存储和负载压力,加快数据访问速度。

 

6.异步

  异步:业务之间的消失传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段通过共享数据的方式异步执行进行协助。

  而实现异步的方式有两种:

         (1) 单一服务器通过多线程共享内存队列实现异步。

         (2) 多个服务器通过分布式消息队列实现异步。(Redis或者RabbitMQ等等消息队列

  而异步架构的模式是: 生产者消费者模式

  优点: 

         (1) 提高系统可用性

         (2) 加快网站响应速度

         (3) 消除并发高峰

 

7.冗余

冗余: 预防某些突发情况,而部署的服务器冗余运行数据冗余备份。

         (1) 服务器冗余运行:当某台服务器罢工的时候,可以把其上面的服务和数据访问转移到其他机器上。所以访问、负载很少的服务也必须部署两台服务器构成一个集群

         (2) 数据冗余备份 : 数据库定期存档备份实现冷备份,还要对数据库进行主从分离,实现同步实现热备份

 

8.自动化

自动化:在无人值守的情况下网站可以正常运行。

自动化有哪些?

         (1) 发布网站过程自动化。

         (2) 自动化代码管理

         (3) 自动化测试

         (4) 自动化安全检测

         (5) 工程代码自动化部署

         (6) 自动化监控+自动化报警

         (7) 自动化失效管理

         (8) 自动化失效恢复

         (9) 自动化降级

         (10)  自动化分配资源

9.安全 : 数据加密,防止xss攻击、Sql注入,对垃圾信息过滤,对于交易等交易模式进行风险控制。

 

         书中的技术大部分都是围绕上面九点来开展深入分析的,不过除了这些引导性质的内容,还有书的一句话让我深有同感:

一群优秀的人做一件他们热爱的事情,一定能取得成功。

 

posted @ 2018-11-11 06:12  QinXiao.Shou  阅读(200)  评论(0编辑  收藏  举报