大型网站技术架构-第三篇-大型网站核心架构要素

1周前 (2019-11-10)     作者:LG     分类:读书     阅读次数:     评论(0)    文章页统计代码

■ 正文

  性能、可用性、伸缩性、扩展性和安全性是网站架构最核心的几个要素,这几个问题解决了,大型网站架构设计的大部分挑战也就克服了。


1.1.性能

1) 定义:性能是网站的一个重要指标,除非是没得选择(比如只能到www.12306.cn这一个网站上买火车票),否则用户无法忍受一个响应缓慢的网站。一个打开缓慢的网站会导致严重的用户流失,很多时候网站性能问题是网站架构升级优化的触发器。可以说性能是网站架构设计的一个重要方面,任何软件架构设计方案都必须考虑可能会带来的性能问题。

2) 应用服务器端:服务器本地缓存和分布式缓存,通过缓存在内存中的热点数据处理用户请求,加快请求处理过程,减轻数据库负载压力。

3) 内部请求交互:异步操作将用户请求发送至消息队列等待后续任务处理,而当前请求直接返回响应给用户

4) 代码层面:通过使用多线程、改善内存管理等手段优化性能。

5) 数据库服务器:使用索引、缓存、SQL优化等性能。而方兴未艾的NoSQL数据库通过优化数据模型、存储结构、伸缩特性等手段在性能方面的优势也日趋明显。


1.2. 可用性

1) 定义:对于大型网站而言,特别是知名网站,网站宕掉、服务不可用是一个重大的事故,轻则影响网站声誉,重则可能会摊上官司。对于电子商务类网站,网站不可用还意味着损失金钱和用户。因此几乎所有网站都承诺7724可用,但事实上任何网站都不可能达到完全的7724可用,总会有一些故障时间,扣除这些故障时间,就是网站的总可用时间,这个时间可以换算成网站的可用性指标,以此衡量网站的可用性,一些知名大型网站可以做到4个9以上的可用性,也就是可用性超过99.99%。

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

3) 应用服务器:多台应用服务器通过负载均衡设备组成一个集群共同对外提供服务,任何一台服务器宕机,只需把请求切换到其他服务器就可实现应用的高可用,但是一个前提条件是应用服务器上不能保存请求的会话信息。否则服务器宕机,会话丢失,即使将用户请求转发到其他服务器上也无法完成业务处理。

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

5) 软件流程:预发布验证、自动化测试、自动化发布、灰度发布等手段,减少将故障引入线上环境的可能,避免故障范围扩大。

    

1.3. 伸缩性

1) 定义:大型网站需要面对大量用户的高并发访问和存储海量数据,不可能只用一台服务器就处理全部用户请求,存储全部数据。网站通过集群的方式将多台服务器组成一个整体共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

 

1.4. 扩展性

1) 定义:衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要任何改动或者很少改动既有业务功能就可以上线新产品。不同产品之间是否很少耦合,一个产品改动对其他产品无影响,其他产品和功能不需要受牵连进行改动。网站可伸缩架构的主要手段是事件驱动架构和分布式服务。

2) 事件驱动架构:在网站通常利用消息队列实现,将用户请求和其他业务事件构造成消息发布到消息队列,消息的处理者作为消费者从消息队列中获取消息进行处理。通过这种方式将消息产生和消息处理分离开来,可以透明地增加新的消息生产者任务或者新的消息消费者任务。

3) 分布式服务:则是将业务和可复用服务分离开来,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有任何影响。可复用服务升级变更的时候,也可以通过提供多版本服务对应用实现透明升级,不需要强制应用同步变更


1.5. 安全性

1) 定义:网站的安全架构就是保护网站不受恶意访问和攻击,保护网站的重要数据不被窃取。衡量网站安全架构的标准就是针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。


除非注明,发表在“石马人山的博客”的文章『大型网站技术架构-第三篇-大型网站核心架构要素』版权归LG所有。 转载请注明出处为“本文转载于『石马人山的博客』原地址http://longlonggo.com/html/1///150/178/460.html
文章页分享代码