读-大型网站架构模式(分享)

1、网站架构模式

定义:“每一个模式描述了一个在我们周围不断重复发生的问题及该问题接方案的核心。这样,你就能一次又一次的使用该方案而不必做重复工作”。模式的关机在于模式的课重复性,问题与场景的课重复性带来解决方案的重复性。

我们的现实生活中也充斥着集合千篇一律的人生架构模式:读重点学校,选热门专业,进稳定高收入的政府部门和企业,找门当户对的配偶,生一个听话的孩子继续这个模式...but人生不同于软件,精彩的人生绝不会来自于复制。

大型互联网公司实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标。这些解决方案被更多网站重复使用,从而逐渐形成大型网站架构模式

       大的分层结构内部还可以继续分层,如应用层可以再细分为视图层和业务逻辑层,服务层也可以细分为数据接口层(适配各种输入和输出的数据格式)和逻辑处理层。分层架构是逻辑上的,在物理部署上,三层结构可以部署在同一个物理机器上。但在网站的发展过程中,分层结构对网站支持高并发向分布式方向发展至关重要,因此在网站规模还很小的时候就应采用分层的架构

 大型网站分割的颗粒度可能会很小,比如在应用层,将不同业务进行分割,儒将购物,论坛,搜索、广告分割层不同的应用,由独立团队负责,部署在不同的服务器上。如果规模庞大业务复杂,会继续进行分割,比如购物业务,可进一步分割成机票酒店业务,3C业务,小商品业务等更细小的粒度。这些模块不管在逻辑上还是物理上都是可以独立的。同样服务层也可以分割。

1、分布式应用和服务:将分层和分割后的应用和服务模块分布式部署,可以改善网站性能和并发性,加快开发和发布速                    度,减少数据库链接资源消耗,使应用复用共同的服务,便于业务功能扩展

2、分布式静态资源:动静分离;网站静态资源如js,css,logo图片等资源独立分布式部署,采用独立的域名加快浏览器并                  发加载的速度。可以减轻应用服务器的负载压力,利于网站分工合作,使不同技术工种术业有专攻

3、分布式数据和存储:大型网站需处理以P为单位的海量数据,单台计算机无法提供如此大的存储空间,需要分布式存储。除了对传统的关系数据库进行分布式部署外,各种NoSQL产品几乎都是分布式的

4、 分布式计算:严格来说,应用,服务,事实数据处理都是计算,目前大型网站普遍使用Hadoop机器MapReduce分布式计算框架进行批处理计算。其特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置加以计算和分布式计算。此外,还有可以支持网站线上服务器配置实时更新的分布式配置;分布式环境下实现并发和协调的分布式锁;支持云存储的分布式文件系统等

 1、CDN:即内容分发网络,部署在距离终端用户最近的网络服务上,用户请求的网络总是先到达他的网络服务上那里,在这里缓存网站的一些静态资源(较少变化的数据),可以就近以最快速度返回给用户,如视频网站和门户网站将访问量大的热点内容缓存在CDN。

2、本地缓存: 服务器本地缓存着热点数据,程序可以在本机内存中直接访问数据,而无需访问数据库

3、分布式缓存:将数据缓存在一个专门的分布式缓存集群钟,应用程序通过网络通信访问缓存数据

使用缓存的两个前提条件:一是数据访问热点不均衡;二是数据在某个时间段内有效,不会很快过期。避免因失效而产生脏读,影响结果的正确性。缓存除了可以加快访问速度,还可以减轻后端应用和数据存储的负载压力。

 异步架构是典型的生产者消费这模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响,这对网站扩展新功能非常便利,除此之外,使用异步消息队列还有如下特性:

1、提高系统可用性:消费这服务器发生故障,数据会在消息队列服务器中存储堆积,生产者服务器可以继续处理业务请                   求。系统整体表现无故障。消费者服务器恢复正常后,继续处理消息队列中的数据

2、加快网站响应速度:生产者服务器在处理完业务请求后,将数据写入消息队列,不需要等待消费者服务器处理就可以                   返回,响应延迟减少。

3、消除并发访问高峰:用户访问网站是随机的,存在访问高峰和低谷,比如购物网站的促销活动,微博上的热点事件都                   会造成网站并发访问突然增大,这可能会造成网站负载过重,响应延迟。使用消息队列可以将突然增来的访问请求数                   据放入消息队列中,等待消费者服务器依次处理,但需要注意的是,使用异步方式处理业务可能会对用户体验,业务                   流程造成影响,需要网站产品设计方面的支持。

 发布过程自动化、自动化代码管理,自动化测试,自动化安全监测,自动化部署

 1、登录,交易需对网络通信进行加密。网站服务器上存储的敏感数据如用户信息进行加密处理,

2、为防止机器人程序攻击,可采用验证码进行识别。

3、对于攻击网站的XSS攻击,SQL注入,进行编号转换等相应处理。

4、对于辣鸡信息,敏感信息进行过滤,对交易转账等操作进行风险控制

  • 分层:企业应用系统中最常见的一直架构模式,将系统在横向唯独上切分成几个部分,每个部分负责一部分相对比较单一的职责,通过上层对下层的依赖和调用组成一个完整的系统。大型网站也采用分层结构,应用层、服务层、数据层,如表:
    应用层负责具体业务和视图展示,如网站首页及搜索输入和结果展示
    服务层为应用层提供服务支持,如用户管理服务,购物车服务等
    数据层提供数据存访问服务,如数据库、缓存、文件、搜索引擎等

    通过分层,各层之间具有一定的独立性,便于分工合作开发和维护;但是分层架构也有一些挑战,就是必须合理规划层次边界和接口,在开发过程中严格遵循分层架构的约束,禁止跨层次的调用(应用层好自己调用数据层)及逆向调用(服务层调用应用层)。

  • 分割:在纵向方面对软件进行切分,将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护;另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。
  • 分布式:分布式意味着可以使用更多的计算机完成同样的功能,服务调用必须通过网络,这可能对性能造成比较严重的影响;其次,服务器越多,宕机的概率越大,可用性降低;另外,数据在分布式的环境中保持数据一致也非常困难,对网站业务正确性和业务流程可能有很大影响。分布式还导致网站依赖错综复杂,开发管理维护困难。因此分布式设计要根据具体情况量力而行,切莫为了分布式而分布式
  • 集群:多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务,提供更好的并发特性。当某天服务器发送故障时,负载均衡设备或者系统的失效转移机制会将请求转发到集群钟的其他服务器上,不影响用户使用。所以在网站应用中,即使访问量很小的分布式应用和服务,也只是要部署两台服务器构成一个小的集群,目的是提高系统的可用性
  • 缓存:缓存就是将数据存放在距离计算最近的位置以加快处理速度。缓存是改善软件性能的第一手段。现代CUP越来越快的一个重要因素就是使用了更多的缓存
  • 异步:将一根业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。在单一服务器内部可以通过多线程共享内存队列的方式实现异步。在业务操作前面的线程将输出写入到队列,后面的线程从队列中读取数据进行处理;在分布式系统中,多个服务器集群通过分布式消息队列实现异步,分布式消息队列可以看做内存队列的分布式部署。
  • 冗余:网站需要7*24小时连续运行,要想保证服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行,数据冗余备份实现服务高可用。数据库除了定期备份,存档保存,实现冷备份外,还要实现主从分离,实现热备份。为抵御地址,海啸等不可抗力导致网站完全瘫痪,可以在全球范围内部署灾备数据中心
  • 自动化:在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。许多网站故障出在发布环境,通过减少人为干预,使用发布过程自动化可以有效减少故障。
  • 安全:通过密码和手机校验码进行身份认证;

 2、架构模式在新浪微博的应用:

         新浪微博的架构系统分为三个层次,最下层是基础服务层,提供数据库,缓存,存储,搜索等数据服务。

3、小结

好的设计不是生搬硬套某个模式,而是对问题盛开理解之上的创造与创新,山寨与创新的最大区别不在于是否抄袭,是否模仿,而是对问题和需求是否真正理解与把握

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值