技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决。

大型网站架构模式

每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必重复工作。

1.分层(横向切分)

计算机硬件、操作系统、应用软件可以看做一种分层机构。

在大型网站架构中也采用分层架构,将网站软件系统分为应用层、服务层、数据层。

大部分分层结构内部还可以继续分层,如应用层可以再细分成视图层(美工、前端)和业务逻辑层(攻城狮负责);服务层也可以细分成数据接口层(适配各种输入和输出的数据格式)和逻辑处理层。

2.分割(纵向切分)

将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。

例如将购物、论坛、搜索、广告分割成不同的应用,由独立的团队负责,部署在不同的服务器上。

在同一个应用内部,如果规模庞大业务复杂,可以继续分割,比如购物业务,可以进一步分割成机票酒店业务,3C业务、小商品业务等。

3.分布式(将不同模块部署在不同的服务器上,通过远程调用协同工作)

分布式意味着服务调用必须通过网络,这可能会对性能造成比较严重的影响。

其次,服务器越多,服务器宕机的概率也就越大。

另外,数据在分布式的环境中,保持数据一致性也非常困难。

分布式还导致网站依赖关系错综复杂,开发管理维护困难。

根据具体情况量力而行

1)分布式应用和服务

将分层和分割后的应用和服务模块分布式部署。

2)分布式静态资源

JS、CSS、图片等资源独立分布式部署,并采用独立的域名。

3)分布式数据和存储

4)分布式计算

搜索引擎的索引构建、数据仓库的数据分析统计等计算规模庞大,进行加速计算和分布式计算。

4.集群(对于用户访问集中的模块,首页,需将独立部署的服务器集群化)

即多台服务器部署相同应用构成一个集群,通过负载均衡设备,共同对外提供服务。

5.缓存(将数据存放在距离计算最近的位置)

1.CDN,内容分发网络。缓存网站的一些静态资源,可以就近以最快的速度返回给用户。

2.反向代理。

3.本地缓存

4.分布式缓存

6.异步

在单一服务器内部,可以通过多线程共享内存队列的方式实现异步。

在分布式系统中,多个服务器集群通过分布式消息队列实现异步。

7.冗余

数据库定期备份,存档保存,实现冷备份。

保证在线业务高可用,还需对数据库进行主从分离,实时同步实现热备份。

8.自动化

自动化代码管理,

自动化测试,

自动化安全检测,

自动化部署,

自动化监控,

自动化报警,

自动化失效转移,

自动化失效恢复

等等

9.安全

密码,手机校验码进行身份认证。

垃圾信息过滤。

防止sql注入。

交易转账等重要操作进行风险控制。

好的设计绝对不是模仿,不是生搬硬套。而是对问题深刻理解之上的创造与创新,即使是“微创新”,也是让人耳目一新的似曾相识。