大型网站核心的架构(6-1)基本要素


1.性能
        优化网站性能的手段有很多,从用户浏览器到数据库,影响用户请求的所有环节都可以进行性能优化。
a.浏览器端

            浏览器缓存
                (对于一个网站而言,CSS,javascript等静态文件的更改频率较低,而这些资源又是每次请求都需要的资源,如果将这些文件缓存在浏览器端,将很好的提升性能。可以通过设置Cache-control和expires属性。
                   有时javascript修改之后需要及时的应用到客户端,此时我们一般不修改javascript 内容,而是增加新的javascript 文件,并修改html中对javascript的应用路径。
                使用浏览器缓存的网站在更新静态资源的时候,一般采用批量更新,为了防止一次更新造成大量缓存失效,增加对服务器和网络IO 的负载,一般每个文件的更新过程中需要有短暂的时间间隔。)

            页面压缩
                   (主要用来解决网络堵塞的问题,但由于文件需要在服务气端进行压缩,和浏览器端进行解压缩,所以将会耗费服务器和浏览器的资源,使用页面压缩可以有效的减少通信传输的数据量,文本类的压缩效率更是达到80%)
            合理布局页面
            (css在上,javascript 在下,因为css 需要全部下载完成,浏览器才会进行渲染,而javascript则是在加载的过程中就会立即执行,有时会赞成页面加载缓慢)

            减少cookie传输
            (cookie 中包含有大量的信息,所以大量的cookie 传输会造成网络IO的堵塞)

            CDN 
        ( 将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短的路径获取数据)。
            
            反向代理
            ( 缓存热点文件,加快请求响应速度,减轻应用服务器的压力)

b.应用服务器端(缓存在内存中的热点数据处理用户请求,将数据存储在相对较高访问速度的存储介质中)
            本地缓存
            (将读写率高的数据换存在本地的高效存储介质中)

            分布式缓存服务器
            (memcahe缓存服务器和Jboss cache)

            通过异步操作
               (使用消息队列将调用异步化,可改善网站的可扩展性,并提高网站的及时响应速度)

            利用集群来提供服务
                (将单一的服务部署多分,通过负载均衡共同完成功能的调用,减少网站的高并发性)

            代码上可以使用多线程,单例,资源池,改善内存管理等手段优化性能

c.数据库服务器端
            索引
            缓存
            SQL 优化
            NoSql
        衡量网站性能有一系列的指标,重要的有响应时间,TPS ,系统性能计数器等,通过监控这些指标可以分析系统的瓶颈,预测网站容量,并对异常指标进行报警,保障系统可用性。

2.高可用性
        设计的目标就是当服务器发生宕机的时候,服务或者应用依然可用,网站高可用性的主要手段是冗余,应用部署在多台服务器上同时提供访问,数据存储在多台服务器上互相备份,任何一台机器发生宕机都不会影响应用的整体可用,也不会导致数据的丢失。
a.应用服务器
           多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务。(前提条件是:应用服务器上不能保存会话信息。否则服务器宕机,会话丢失,即使用户请求转发到其他服务器上也无法完成业务处理)。
b.存储服务器
            对数据进行实时备份,当服务器宕机时,需要将数据访问转移到可用服务器上。并进行数据恢复以保证继续有服务器宕机的时候数据依然可用。

3.可伸缩性
        大型网站需要面对大量用户的高并发访问和存储海量数据。所谓的伸缩性是指通过不断的往集群中增加服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。
        衡量标准:
               1.是否可以用多台服务器构建集群。
               2.是否容易想集群中增加新的服务器。
               3.加入新的服务器是否可以提供和原来服务器无差别的服务。
               4.集群中容乃的总素是否有限制。

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

b.缓存服务器集群
        加入新的缓存服务器可能回导致缓存路由的失效,进而导致集群中大部分缓存数据无法访问。需要改进缓存路由算法保证缓存数据的可访问性。
c.关系数据库
        虽然关系型数据库支撑数据复制和主热备份等机制,但是很难做到大规模齐全的可伸缩性,因此关系型数据库的集群可伸缩性方案必须是在数据库之外实现的,通过路由分区等将部署有多个数据库的服务器组成一个集群。
d.nosql
        自带良好性伸缩性。

4.可扩展性
网站的功能可扩展性。
        衡量标准: 
                在网站增加新的业务产品时,是否可以实现对现有产品的透明无影响,不需要任何改动,或者极少改动现有业务就可以上线。
                产品的耦合度是否低。改动一个产品是否会影响其他产品。
        解决方案:
                事件驱动架构和分布式服务。
a.事件驱动架构
        通常利用消息队列实现,将用户请求和其他业务事件构成消息发不到消息队列中。消息的处理者作为消费者,从消息队列中获取消息进行处理。通过这种方式将消息产生和消息处理分开,可以透明的增加新的消息生产者任务和消息消费者任务。

b.分布式服务
         将业务和可服用服务分离开来,通过分布式服务框架调用。新增产品可以调用可服用的服务,实现自身的业务逻辑,而对现有产品无影响。

5.安全性
          注意系统的xss ,sql 注入等网站攻击

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值