大型网站核心架构要素

1、性能:
性能是网站的一个重要指标。性能主要的优化方式有如下:
浏览器端,使用浏览器缓存,减少http协议,减少cookie传输、页面压缩、合理的页面布局。
还可以使用CDN缓存,将网站静态内容(包括页面和样式等)分发存储到离用户最近的网络服务提供商的机房里,使用户能够通过最短路径访问到获取页面。也可以在网站机房部署反向代理服务器,缓存热点文件,加快响应速度,减轻应用服务器的负载压力。
在应用服务器端,可以使用服务器的本地缓存和分布式缓存(redis/memcached),通过缓存热点数据,减少数据库请求,加快请求响应。
对于响应非实时的要求,可以异步使用队列,并对请求立即返回响应。
使用集群共同处理服务请求,提高整体处理能力,改善性能。
代码层上使用多线程,改善内存管理等手段优化性能。
数据库上,索引、缓存、sql优化等。
2、可用性
为了保证在整个系统中当有部分机器发生故障时,不能影响到整个系统的正常运营。我们需要保证整个系统的高可用性。主要手段是冗余,主要方式有:
应用服务器,多台服务器通过负载均衡设备组成一个集群共同负责对外提供服务,任何一台服务器宕机后,只要把请求切换到另一台机器上就可以实现高可用。但是有一个前提是应用服务器上不能保存请求的会话信息,不然在某台应用服务器宕机后,会话信息就有可能丢失,导致后面的请求无法被正常处理。
对于存储服务器,由于其上面存储着数据,所以我们必须要实时备份数据,并将备份的数据备份到其它服务上,这样当主服务器发生宕机的时候,我们需要将数据访问到其它的可用的服务器上,并进行数据恢复以保障继续有服务器数据依然可用。
3、伸缩性
所谓伸缩性,是指服务器在性能达到一定瓶颈时,我们可以不断的向集群中加入服务器来缓解整个系统的并发访问压力和不断增加的数据存储需求。
衡量一个系统架构的伸缩性主要依据是看是否可以用多台服务器构建集群,是否容易向集群中动态的添加新的服务器。加入的新的服务器是否可以提供和原来集群中的机器无差别的服务,集群中容纳的服务器数量是否有限制。
对于应用服务器,只要服务器上不保存数据,集群中的所有服务器都是对等的,通过使用何时的负载均衡设备就可以向集群中不断的添加服务器(比如zk)
对于缓存服务器集群,由于当新的服务器的加入,会导致哈希的重新分配,所以就有可能出现部分数据会缓存失效。对于那些严重依赖缓存的系统架构来说,这将是致命的。所以需要改进缓存路由算法保证在添加新的服务器时候,尽量少的缓存数据失.比如用一致的哈希算法外加虚拟节点。
对于存储服务器,虽然支持数据复制和主从热备等机制,但是很难做到大规模集群的可伸缩性,因为主要方案在数据库外实现,比如应该应用层的路由算法,将部署有多个数据库的服务器组成一个集群。
4、扩展性:
不同于伸缩性,它主要是因为当一个系统由于系统业务的拓展,导致系统扩展。这个时候要保证尽可能的少改既有的代码就可以上线新功能。
常见的主要有队列的发布订阅模式,还有分布式服务RPC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值