博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【读书笔记】第三章 大型网站核心架构要素
阅读量:5852 次
发布时间:2019-06-19

本文共 1224 字,大约阅读时间需要 4 分钟。

hot3.png

#第三章 大型网站核心架构要素

软件架构:有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计

软件架构需要关注的几个方面:

  1. 系统功能需求(最基本的)
  2. 性能
  3. 可用性
  4. 伸缩性
  5. 扩展性
  6. 安全性

##3.1 性能 ##3.2 可用性 对于大型知名网站,可用性要达到99.99%。

网站高可用架构的前提是:必然会出现服务器宕机,而高可用设计的目标就是当服务器宕机的时候,服务或应用依然可用。

高可用的主要手段是冗余,应用部署到多台服务器上同时提供访问,数据存储到多台服务器上互相备份。

其他:软件开发过程保证质量,自动化测试,自动化发布,灰度发布等。

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

3.3 伸缩性

伸缩性:通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

衡量伸缩性的主要指标:是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器之后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

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

对于 缓存服务器集群,新加入的服务器会导致缓存路由失效,进而导致集群中大部分缓存数据无法访问。虽然缓存数据可以重新加载,但是如果应用严重依赖缓存,可能会导致整个网站崩溃。 需要改进缓存路由算法保证缓存数据的可访问性。

关系数据库,虽然支持数据复制,主从热备等机制,但是很难做到大规模集群的可是伸缩性。 关系数据库的集群伸缩方案需要在数据库之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群。

对于NoSQL来讲,天生就是为了海量数据而生,对于伸缩性的支持都很好。

3.4 扩展性

如何设计网站的架构使其能够 快速响应需求变化,是网站可扩展架构的主要目的。

主要实现手段是:事件驱动架构和分布式服务。

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

分布式服务:将业务和可复用服务分离开,通过分布式服务框架调用。新增产品可以通过调用可复用的服务实现自身的业务逻辑,而对现有产品没有影响。可复用服务升级或变更的时候,可以通过提供多版本服务队应用实现透明升级。

3.5 安全性

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

衡量标准:针对现存和潜在的各种攻击与窃密手段,是否有可靠的应对策略。

转载于:https://my.oschina.net/jasonultimate/blog/477513

你可能感兴趣的文章
MAMP中Python安装MySQLdb
查看>>
【085】◀▶ GISALL中的博客(ArcGIS)
查看>>
【096】2012年总结(流水账式)
查看>>
5.3(2)----机器人走方格2(CC150)
查看>>
git
查看>>
angularJS的路由!
查看>>
Think PHP递归重新排序无限极子分类数组(递归无限极分类)
查看>>
angular -- ng-class该如何使用?
查看>>
一个简单的计算文章相似度功能!
查看>>
存储那些事儿(四):传统商业存储融入云计算之路
查看>>
Windows Azure Storage 客户端Java版概览
查看>>
Linux经常使用命令-权限管理命令-其它权限管理命令
查看>>
月上柳梢头,人约黄昏后——北漂18年(12)
查看>>
《从零開始学Swift》学习笔记(Day 51)——扩展构造函数
查看>>
C语言之函数调用11—递归法求Hermite函数
查看>>
linux应用之bugfree的安装及配置
查看>>
jeewx的使用_02 解析微信服务器post过来的数据
查看>>
jq的form验证
查看>>
uva 1597 Searching the Web
查看>>
程序员对爱情的单元测试
查看>>