网站演化与架构模式

读书记笔记,我一直感觉是一个好习惯,尤其是对技术类书籍。把书上的目录列出来,如果你能看着目录描述出来书中讲述的大致内容,那么这本书讲述的内容你至少已经了解一半了。为什么说是一半,因为你读书只是了解了书中讲述的内容,实践内容需要你自己去亲身体会,然后在结合自己的实践验证书中的讲述,这样一本书才能够被你吃透。最近我在读《大型网站技术架构核心原理与案例分析》,这本书很老了,也不知道被多人读过了,这本书的各种片段在各大博客网站也频繁被人记录。但我感觉他讲述的内容很适合我,所以我也需要记录下我的读书笔记。

一、大型网站特点

1、高并发、大流量

2、高可用

3、海量数据、用户分布广泛

4、安全环境恶劣

5、需求快速变更,发布频繁

6、渐进式发展。:几乎所有的大网站都是从一个小网站发展而来的,天生就是大网站的网站比较少。

二、大型网站的价值观

1、核心价值观是随网站所需,灵活应付。

2、驱动网站技术发展的主要力量是业务。

三、网站架构设计的误区

1、一味追随大公司的技术方案

2、为了使用技术而使用某项技术

3、视图用技术解决一切问题

四、网站的架构模式

1、分层

a、逻辑分层:传说中的三层,应用层、服务层、数据层。各层独立,只要接口不变,实现方式可以自由改变。在细分下去,应用层可以分为:模型、视图、控制器。服务层也可以分为:输入输出格式层、逻辑处理层。

b、物理分层:三层可以部署到一台机器上,随着业务发展,三层可以分别部署在不同的服务器上。

2、分隔

大网站大系统、其“大”的概念,就包含功能多。比如在B2B2C系统中,我们可以按照业务进行分割:商品、支付、评论、订单、购物车、商家CMS、店铺、广告、搜索。等等

3、分布式

分层和分割的目标就是为了后期的分布式部署。分布式意味着可以使用更多的计算机来完成网站功能,提高网站性能(业务处理能力、数据存储能力等等)。常用的分布式方式:

a、分布式应用服务

b、静态资源独立

c、分布式数据和缓存

d、分布式计算:搜索引擎构建、数据仓储分析,缓存预热等等

4、集群

分布式一般针对不同功能,集群是:对单一功能,通过部署多台相同的服务器,构成一个“群体”。

5、异步

a、单一的服务/应用内,可以使用多线层共享内存的方式来实现实现/控制。上层业务往内存中写数据,下层业务通过读取内存来触发新的业务处理事件。

b、多个分布式服务/应用间、可通过消息队列,基于事件驱动来处理。

优点:提高系统的可用性、加速网站系统的性能、消除并发网络高峰、降低业务的耦合、易扩展等等。

缺点:可能会影响用户体验(具体还要看业务如何设计)

7、冗余

冗余是为了高可用,高性能和安全。冗余主要是数据/缓存的冗余,比如主从、冷热备份。

8、安全

互联网从诞生起,就一直被各类安全性问题挑战,其重要不用解释。

a、注意防御别人csrf,xss,sql注入攻击。

b、自己通过各种加密方式以及秘钥的管理。 

c、安全策略过滤,敏感词匹配、黑名单,交易风控评估与风控开发。

d、各类防火墙和安全软件。

9、自动化

自动化代码管理,自动化发布、自动化测试、自动化安全监测、自动化部署、自动化报警、自动化转移时效、自动化恢复、自动化降级、自动化资源分配等等。

五、网站的核心要素

1、性能

性能是一个网站的指标,除非没得选择,否则,用户不可能会忍受一个性能不好的网站。

2、可用性

网站是7*24服务模式。对于大型网站,网站挂掉,服务器宕机,对整个公司来说都是一场事故。事实上任何网站都不可能达到7*24完全可用,咱们能做的就是尽量靠近7*24完全可用。

3、伸缩性

伸缩性是指,通过不断向集群中增加服务器,来应对不断变化的用户并发与业务需求。加入的服务器能否提供和原来服务器无差别的服务是衡量网站伸缩性的一个指标。

4、扩展性

网站的功能需求变化非常快,考验网站扩展性的主要指标是网站能否快速响应新的需求变化。新加业务的时候,是否对现有业务无影响,不同产品是否无耦合等等。

5、安全性

安全无小事。互联网的安全性是指,针对现存和潜在的安全问题,是否能够提供持续的高质量网站服务。

 

添加评论

Loading