您的位置:首页 > 运维架构 > 网站架构

大型网站技术架构-概要

2015-10-26 00:00 591 查看
摘要: 大型网站的架构所面临的问题和技术挑战,无穷无尽。我这蜗牛在进入大型网站架构行列之前,还要很多路要爬。 现在先规划一下自己的路,好让爬行的路线明朗。

网站架构的模式

1. 分层

分层大家并不陌生,主要 分为 应用层,服务层,数据层,比较著名的MVC就是这样子的。

开发中,严格遵守分层约束。禁止跨层 或 逆向 调用。

根据实际需要,还可以把每一层进行细分。如:应用层分为视图层 和 业务逻辑层;服务层可细分为数据接口层,逻辑处理层。只要合理,就可以进行细分。

扩展: 现在前段也越来越先进,也可以进行MVC格式分层,例如angular等技术。蜗牛的加油啊,真是赶不上了。

基础:分层 为 分割,分布式,集群等建立了基础。

2.分割

分割就是对比较独立,且较为复杂或者较大的模块进行分割。这样可能一个系统被分割成数个,甚至较大的系统被分割成几十个,独立的小系统(模块),彼此之间通过 彼此认识的协议 进行通信。

如此以来,不仅提高了网站的并发处理能力和功能扩展能力,更是让网站的维护 更加的容易。

同样也为分布式提供了基础。

3.分布式

分布式应用和服务:分割和分层的应用和服务分布式部署。

分布式静态资源:JS/Css/图片等资源分布式部署,且可采用独立的域名

分布式数据存储:NoSql基本上都是分布式的,云存储更是让分布式存储变得简单

分布式计算:这里适用于计算型系统,对应技术Hadoop及其MapReduce(这一块将是十万五千里长征,甚至是一个无头路)

另外,支持网站线上服务器配置实施更新的分布式配置;分布式下实现并发和协同的分布式锁;支持云存储的分布式文件系统等

缺点:

分布式固然好,但是大家一定要量力而行,且能对症下药,症状如下:

1.分布式系统之间,必须通过网络通信,如此一来 降低了性能。

2.服务器数增多,服务宕机的概率增大。一旦个别服务宕机,将影响局部甚至整个系统(所以需要集群)。

3.数据分布式的一致性保持也需要重点解决。

4.分布式事务更是很难保证。

5.分布式使网站的依赖错综复杂,开发管理维护困难。

4.集群

集群就是将分层 分割 后的独立的系统进行集群化,即根据实际情况进行两台或者数台,数十台部署

集群通过负载均衡提供 高效,稳定的服务。

5.缓存

CDN:网络服务商提供。

反向代理:部署在网站的前端,请求数据中心前的反向代理服务器。

本地缓存:服务器本地缓存 热点数据。

分布式缓存:提供高效,稳定的缓存服务

使用缓存的前提条件:

1. 数据访问热点不均衡,将频繁访问的数据放在缓存。

2. 一段时间内数据有效,不会过期。

严格把控 缓存的有效性:不脏,不雪崩,不穿透

6.异步

异步请求,异步消息队列(分布式消息队列),异步加载(热点缓存),

优点:系统解耦,提高系统的可用性,加快网站的响应速度,消除并发网站的高峰(异步消息队列)

7.冗余

服务器冗余:集群

数据冗余:冷备份,定期备份,存档保存;热备份,主从分离

全球范围内的 灾难备份中心

8.自动化

理想状态下,是无人值守的情况下网站可以正常运营,一切可以自动化。

发布自动化

代码管理自动化

测试自动化

安全检测自动化

部署自动化

报警自动化

失效转移自动化

失效恢复自动化

降级自动化

分配资源自动化

9.安全

xss 和sql 注入

密码 和验证码(动态,图片,手机)

风险控制:交易等重要操作

例: 新浪微博

名词普及

LAMP(Linux,Apache,Mysql,PHP)

MPSS(MultiPort Single Server

基础服务层:数据库,缓存,搜索,存储等数据服务,以及其他基础技术服务

中间层:平台服务 和 应用服务

最上层:API层 和 业务层

异步推拉模式(这里很值得研究):

明星发微博,存入异步消息队列立即返回,消息消费者推给在线用户;用户上线后自动拉取微博订阅列表

多及缓存策略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息