大型网站技术架构(二)模式

2018-03-27  本文已影响20人  俊杰的笔记

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

大型网站架构模式

一、网站架构模式

分层

大型网站一般分为三层:

实践中,每一层还可以细分。如应用层又分为视图层和业务逻辑层;服务层分为数据接口层和逻辑处理层。

分层是逻辑上的。在物理部署上,三层可以部署在同一个物理机器上。但随着网站业务的发展,必然要做分离部署。

分割

按功能纵向分割。大型网站的分割粒度会很细。如应用层按业务,将购物、论坛、搜索、广告分割成不同的应用,由独立团队负责,部署在不同服务器上;在同一个应用内部,如果业务复杂,会继续进行分割,如购物业务可以细分成机票酒店、3C、小商品等业务。

分布式

分层和分割是为了切分后的模块便于分布式部署,但分布式部署也带来其他问题。

因此切莫为了分布式而分布式。

常用的分布式方案有以下几种:

集群

集群、负载均衡提高可用性。

缓存

缓存可以加快访问速度,减轻后端应用和数据存储的负载压力。

使用缓存有两个前提条件:

异步

单一服务器内部可以通过多线程共享内存队列的方式实现异步;分布式系统中,多个集群通过分布式消息队列实现异步。

分布式消息队列可以看做内存队列的分布式部署

异步架构是典型的生产者消费者模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化。

异步消息队列还有如下特性:

需要注意的是,使用异步方式处理业务可能会对用户体验、业务流程造成影响,需要网站产品设计方面的支持。

冗余

自动化

安全

二、新浪微博

架构

新浪微博最初是一个小网站,采用LAMP架构。应用程序使用PHP开发,所有数据都存储在MySQL数据库中。

后来业务增长,用户增加,新浪微博架构几经重构,形成现在的架构。

部署

新浪微博在早期还使用过一种MPSS(MultiPort Single Server)的分布式集群部署方案。集群中每台服务器都部署多个服务,每个服务使用不同端口对外提供服务。现在网站应用中常见的是将物理机虚拟化成多个虚拟机,在虚拟机部署应用。这样更加简单,还可以在不同虚拟机使用相同端口号。

消息队列

新浪微博的早期架构中,微博发布使用同步推送模式。用户发表微博后,系统立即将微博插入到数据库所有粉丝的订阅列表中。当用户量比较大时,特别是明星用户发微博,会引发大量数据库写操作,超出数据库负载,导致系统性能急剧下降。后来改用异步推拉结合的模式,用户发表微博后,系统将微博写入消息队列后立即返回,用户迅速得到响应。消息队列的消费者任务将微博推送给所有当前在线粉丝的订阅列表中,非在线用户登陆后再根据关注列表拉去订阅列表。

缓存

由于微博频繁刷新,新浪微博采用多级缓存策略:

微博操作中的“刷微博”几乎全部都是缓存访问操作,可以获得很好的系统性能。

多数据中心

自动化工具

安全

三、总结

山寨与创新的区别在于对问题和需求的真正理解与把握。

上一篇 下一篇

猜你喜欢

热点阅读