解决大型网站面临的高并发访问、海量数据处理、高可靠运行等一系列问题,以实现网站高性能、高可用、易伸缩、可拓展、安全等各种技术架构目标。

    一、分层(横向维度)

    应用层 负责具体业务和视图展示,如网站首页及搜索输入和结果展示
    服务层 为应用层提供服务支持,如用户管理服务,购物车服务等
    数据层 提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

    二、分割(纵向维度)
    网站越大,功能越复杂,服务和数据处理的种类也就越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站并发处理能力和功能拓展能力。
    大型网站分割的粒度会很小,比如:购物、论坛、搜索、广告等。有可能内部会拆分成更小粒度,如,购物拆分商品、订单、支付、购物车、评价等等。

    三、分布式
    分层和分割,一个主要目的是为了切分后的模块便于分布式部署。
    1)分布式应用;
    2)分布式静态资源;
    3)分布式数据和存储;
    4)分布式计算:严格来说,应用、服务、实时数据处理都是计算。

    四、集群
    多台服务器部署相同的服务应用(至少两台),构成一个集群,通过负载均衡设备共同对外提供服务。提高并发处理能力。服务层服务时无状态的(任何请求经过任意统样服务,结果都是一样的),意味着可以使用更多的计算机资源,提高服务的并发访问和数据量。

    五、缓存
    CDN:内容分发网络,部署在距离终端用户最近的网络服务商,这里缓存一些较少变化的静态资源;
    反向代理:属于网站前端架构的一部分,用户访问优先访问反向代理服务器,由代理服务器转发给服务器;
    本地缓存:缓存热点数据;
    分布式缓存:提供更多容量的数据缓存;
    使用缓存有两个前提条件:1)数据访问热点不均衡,某些数据会被频繁的访问,这些数据需要放到缓存中;2)数据在某段时间内有效,不会很快过期。

    六、异步
    计算机发展的一个重要目标和驱动力是降低软件耦合性。异步架构是典型的生产者消费者模式。使用异步消息队列有如下特性:
    1)提高系统可用性:消费端故障时,消息被存储堆积,生产端继续生产消息,消费端恢复后,继续处理消息;
    2)加快网站响应速度:不需要等待消费端的数据返回,减少服务响应延迟;
    3)消除并发访问高峰(削峰填谷);

    七、冗余
    数据冗余备份,当某些服务宕机后,可以将其上的服务和数据访问转移到其他服务器。冷备份:定期备份,存档保存;热备份:主从分离,实时同步备份。某些大型网站会对整个数据中心进行备份,全球范围内部署灾备数据中心

    八、自动化
    发布自动化;自动化代码管理;自动化测试;自动化安全监测;自动化部署;自动化监控,预警;自动化失效转移;自动化恢复;自动化降级;自动化分配资源;

    九、安全
    密码,手机校验码认证、数据加密、图片验证码识别;常见攻击防御;交易信息风险控制。