近我在阅读2本关于大型网站架构的书:《大型网站技术架构——核心原理与案例分析》李智慧、《大型网站系统与Java中间件实践》曾宪杰。
  我期望从这些书中学习到大型网站是如何做架构的,这个过程会遇到什么问题。当看完这2本书后,我总结出两个大问题:
  1.网站技术架构为什么会演进?换个说法是为什么网站会变大?
  2.演进的过程会遇到什么问题?或者说为了演进,会遇到什么问题?
  网站技术架构为什么会演进
  我个人总结出来我们的技术架构演进的两种驱动力,驱动着我们为什么演进网站的技术架构:
  1.内在驱动力:我们期望把当前的业务做得更好,开发更多新业务
  2.外在驱动力:用户量的上升、用户种类的多样化
  这两种驱动力不是独立的,更多时候是并行的。我想淘宝是两种驱动力并行驱动的结果。
  演进的原因很简单。但是在什么时机我们应该演进网站的技术架构了,以及如何演进?面对这些问题,说实话,我没有任何经验,再说现实中每家企业当时都面临的问题都不一样,所以,我很难从经验中总结出什么是演进的时机。
  但是我可以从另一个角度切入这个问题:研究网站内外结构,找到这些结构可能出现的问题点,知道或者预见到问题点了,你当然知道应该怎么演进了。类似于你了解了PC机的结构,你也知道什么时候要加内存了,什么时候要加硬盘了。
  那么我们先看看网站的外部结构:

  外部结构中,我们可以看由以下几个部分构成:
  U:代表用户群。当用户群变了,我们的网站如何演进?用户群的分析,我目前能知道的维度有:数量,种类,地理位置(区域)。
  N:代表网络环境。网络环境在每个地区都不同。你可以想像我们为什么需要CDN。当我们期望每个区域的用户都能得到好的体验,我们的网站如何演进?
  S:代表安全。是我们要安全到什么程度?这与网站当前所处阶段及你网站的性质有关。
  C:代表我们的网站。属于内部结构
  网站的内部结构:

  内部结构的组成:
  A:应用服务。
  D:数据服务
  总结下来是我们在考虑网站是否应该演进了或者如何演进时,这些组成部分为我们提供了考虑问题的基准。
  那么我们为什么不一开始把网站设计成“大型”的。李智慧在后记里写到:“不要企图去设计一个大型网站”,“原因是互联网发展运行有其自己的规律,短暂的互联网历史已经一再证明这种企图行不通”。还说了:“大型网站不是设计出来的,而是逐步演化出来的”。对于后这句话,我需要提醒下:“不是设计出来的”并不代表“随意设计”。
  对于“大型网站的设计”,我个人的看法是现在我们的有“云”了,计算是可以买的,只要我们的设计能适应“云”,我是不是可以一开始设计大型网站了?