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

【大型网站架构】核心要素

2019-01-18 10:29 357 查看

     一般来说,除了当前系统的功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全性这5个架构要素。架构设计过程中需要平衡这5个要素之间的关系以实现需求和架构目标。

一、性能

         性能是网站的一个重要指标。一个打开缓慢的网站会导致严重的用户流失,很多时候网站性能问题是架构升级优化的触发器。任何软件架构设计方案都必须考虑可能会带来的性能问题。

        从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。

       (1)浏览器端,可以通过浏览器缓存,使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能。

       (2)使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。

  (3)在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。

       (4)在用用服务器端,可以使用本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,减少数据库负载压力。

       (5)通过异步操作将用户请求发送值消息队列等待后续任务处理,而当前请求直接返回响应用户。

      (6)很多用户高并发访问情况下,应用服务器组成集群共同对外服务

        .......等等,还可以在代码层面,通过使用多线程,改善内存管理等手段优化性能。数据库服务器端,索引、缓存、SQL优化等。

二、可用性

         对于大型网站而言,特别是知名网站,网站宕掉、服务不可用是一个重大的事故。

         网站高可用的手段是冗余,应用部署在多台服务器上同时提供访问,数据在多台服务器上互相备份。任何一台服务器宕机都不会影响应用的整体可用,也不会导致数据丢失。

        (1)对于应用服务器而言,多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务。但应用服务器不能保存请求的会话信息 ,否则服务器宕机,会话丢失,即使将用户请求转发到其他服务器上也无法完成业务处理。

        (2)对于存储服务器,由于其上存储着数据,需要对数据进行实时备份,当服务器宕机时需要将数据访问转移到可用的服务器上,并进行数据恢复以保证继续有服务器宕机的时候数据依然可用。

        衡量一个系统架构设计是否满足高可用的目标,就是假设系统中任何一台或多台服务器宕机时,以及出现不可预期的问题时,系统整体一眼可用。

三、伸缩性

         大型网站需要面对大量用户的高并发访问和存储海量数据,不可能只用一台服务器就处理去全部用户请求,存储全部数据。网站通过集群的方式将多台服务器做成一个整体共同提供服务。所谓伸缩性是指不断向集群中加入服务器的手段来缓解不断上升的用户访问压力和不断增长的数据存储需求。

        衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。

        对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过合适的负载均衡设备就可以向集群中不断加入服务器。

        对于缓存服务器集群,加入新服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。需要改进缓存路由算法保证缓存数据的可访问性。

       对于关系型数据库集群,虽然支持数据复制,主从热备等机制,但很大哦做到大规模集群的可伸缩性。可以通过路由区分等手段将部署有多个数据库的服务器组成一个集群。

四、扩展性

        网站的扩展性架构直接关注网站的功能需求。

        网站可扩展架构主要手段是事件驱动架构和分布式服务.

     (1)事件驱动架构在网站通常利用消息队列实现,将用户请求和其他业务时间构造成消息发布到消息队列。消息的处理者作为消费者从消息队列中获取消息进行处理。

    (2)分布式服务则是将业务和可复用服务分离开来,通过分布式服务框架调用。新增产品可以通过可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响。

五、安全性

         网站的安全加偶就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。

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