大型网站技术架构-概要

网站架构的模式

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层 和 业务层


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

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

 

 多及缓存策略。


你可能感兴趣的:(集群,分布式,异步,安全,缓存,分割,冗余,大型网站,分层,技术架构)