首页 > 代码库 > 大型网站技术架构的演进

大型网站技术架构的演进

最近我在阅读 2 本关于大型网站架构的书:《大型网站技术架构——核心原理与案例分析》李智慧、《大型网站系统与 Java 中间件实践》曾宪杰。

我期望从这些书中学习到大型网站是如何做架构的,这个过程会遇到什么问题。当看完这 2 本书后,我总结出两个大问题:

1. 网站技术架构为什么会演进?换个说法就是为什么网站会变大?

2. 演进的过程会遇到什么问题?或者说为了演进,会遇到什么问题?

网站技术架构为什么会演进

我个人总结出来我们的技术架构演进的两种驱动力,驱动着我们为什么演进网站的技术架构:

1. 内在驱动力:我们期望把当前的业务做得更好,开发更多新业务

2. 外在驱动力:用户量的上升、用户种类的多样化

这两种驱动力不是独立的,更多时候是并行的。我想淘宝就是两种驱动力并行驱动的结果。

演进的原因很简单。但是在什么时机我们就应该演进网站的技术架构了,以及如何演进?面对这些问题,说实话,我没有任何经验,再说现实中每家企业当时都面临的问题都不一样,所以,我很难从经验中总结出什么是演进的时机。

但是我可以从另一个角度切入这个问题:研究网站内外结构,找到这些结构可能出现的问题点,知道或者预见到问题点了,你当然就知道应该怎么演进了。类似于你了解了 PC 机的结构,你也就知道什么时候要加内存了,什么时候要加硬盘了。

那么我们先看看网站的外部结构:

技术分享

外部结构中,我们可以看由以下几个部分构成:

U:代表用户群。当用户群变了,我们的网站如何演进?用户群的分析,我目前能知道的维度有:数量,种类,地理位置(区域)。

N:代表网络环境。网络环境在每个地区都不同。你可以想像我们为什么需要 CDN。当我们期望每个区域的用户都能得到好的体验,我们的网站如何演进?

S:代表安全。就是我们要安全到什么程度?这与网站当前所处阶段及你网站的性质有关。

C:代表我们的网站。属于内部结构

网站的内部结构:

技术分享

内部结构的组成:

A:应用服务。

D:数据服务

总结下来就是我们在考虑网站是否应该演进了或者如何演进时,这些组成部分为我们提供了考虑问题的基准。

那么我们为什么不一开始就把网站设计成“大型”的。李智慧在后记里写到:“不要企图去设计一个大型网站”,“原因是互联网发展运行有其自己的规律,短暂的互联网历史已经一再证明这种企图行不通”。还说了:“大型网站不是设计出来的,而是逐步演化出来的”。对于最后这句话,我需要提醒下:“不是设计出来的”并不代表“随意设计”。

对于“大型网站的设计”,我个人的看法是现在我们的有“云”了,计算是可以买的,只要我们的设计能适应“云”,我是不是就可以一开始就设计大型网站了?

演进的过程会遇到什么问题

- 最初

从一个小网站说起。一台服务器也就足够了。

技术分享

- 数据服务与应用服务分离

越来越多的用户代表着越来越多的数据,一台服务器已经满足不了。我们将数据服务和应用服务分离,给应用服务器配置更好的 CPU,内存。而给数据服务器配置更好更大的硬盘。

大型网站技术架构的演进