java面试题精解3:大型网站在架构上应当考虑哪些问题


1、分层:

分层是处理任何复杂系统最常见的手段之一,将系统横向切分成若干个层面,每个层面只承担单一的职责,通过下层为上层提供的支撑和服务以及上层对下层的调用来形成一个完整的复杂的系统。

比较常见的分层模式是MVC,将软件系统分为持久层(提供数据存储和访问服务)、业务层(处理业务逻辑,系统中最核心的部分)和表示层(系统交互、视图展示)。

需要指出的是:

  1. 分层是逻辑上的划分,在物理上可以位于同一设备上也可以在不同的设备上部署不同的功能模块,这样可以使用更多的计算资源来应对用户的并发访问;
  2. 层与层之间应当有清晰的边界,这样分层才有意义,才更利于软件的开发和维护。

2、分割

分割是对软件的纵向切分。我们可以将系统的不同功能和服务分割开,形成高内聚低耦合的功能模块(单元)。在设计初期可以做一个粗粒度的分割,将系统分割为若干个功能模块,后期还可以进一步对每个模块进行细粒度的分割,这样一方面有助于软件的开发和维护,另一方面有助于分布式的部署,提供网站的并发处理能力和功能的扩展。

3、分布式

除了上面提到的内容,网站的静态资源(JavaScript、CSS、图片等)也可以采用独立分布式部署并采用独立的域名,这样可以减轻应用服务器的负载压力,也使得浏览器对资源的加载更快。数据的存取也应该是分布式的,传统的商业级关系型数据库产品基本上都支持分布式部署,而新生的NoSQL产品几乎都是分布式的。当然,网站后台的业务处理也要使用分布式技术,例如查询索引的构建、数据分析等,这些业务计算规模庞大,可以使用Hadoop以及MapReduce分布式计算框架来处理。

4、集群

集群使得有更多的服务器提供相同的服务,可以更好的提供对并发的支持

5、缓存

所谓缓存就是用空间换取时间的技术,将数据尽可能放在距离计算最近的位置。使用缓存是服务器优化的第一定律。我们通常说的CDN、反向代理、热点数据都是对缓存技术的使用。

6、异步

异步是实现软件实体之间解耦合的又一重要手段。异步架构是典型的生产者消费者模式,二者之间没有直接的调用关系,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响,这对系统的扩展非常有利。使用异步处理还可以提高系统可用性,加快服务器的响应速度,同时还可以起到削峰作用,应对瞬时高并)。

能推迟处理的都要推迟处理是服务器优化的第二定律,而异步是践行服务器优化第二定律的重要手段。

7、容灾

各种服务器都要提供相应的容灾服务器以便在某台或某些服务器宕机时还能保证网站可以正常工作,同时也提供了灾难恢复的可能性。冗余是系统高可用性的重要保证。

你可能感兴趣的:(面试系列)