技术架构的目标及几种常用手段

原书中写的比较乱,重新整理了一下。
1、技术架构的目标:设计一个网站的架构,要满足以下几点(1)高性能(2)高可用性(3)易伸缩(4)易扩展(5)安全
(1)性能:衡量网站性能有一系列指标,响应时间、TPS、系统性能监测器等,影响网站性能的因素也很多,代码层面如使用多线程、改善内存管理、JVM优化;浏览器端可以使用浏览器缓存、页面压缩等等;使用NOSQL等技术
(2)可用性:大型网站通常都会有上万台服务器,每天都必定会有一些服务器宕机,因此网站高可用的架构设计前提是必然会出现服务器宕机,高可用的设计目标就是当服务器宕机时,服务或者应用依然可以使用;主要手段就是冗余
(3)伸缩性:所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求;衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器;加入新的服务器后是否可以提供和原来的服务器无差别的服务;集群中可容纳的总的服务器数量是否有限制;
(4)扩展性:网站快速发展,功能不断扩展,如何设计网站的架构使其能够快速响应需求变化,是网站可扩展架构的主要的目的;衡量网站架构扩展性好坏的主要标准就是在网站增加新的业务产品时,是否可以实现对现有产品透明无影响,不需要改动或者很少改动既有业务功能就可以上线新产品。主要手段是事件驱动架构和分布式服务。
(5)安全性:衡量标准就是针对现存和潜在的各种攻击与窃密手段,是否有可靠的策略。
2、为了达到以上几点,宏观方面有以下几种手段:(1)分层(2)分割(3)分布式(4)集群(5)缓存(6)异步(7)冗余(8)自动化

(1)分层:将系统在横向维度上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。本质就是大型网站采用MVC架构。分层架构是物理上的,在物理部署上,三层结构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分别部署在不同的服务器上,使网站拥有更多的计算资源以应对越来越多的用户访问。

(2)分割:如果说分层是将软件在横向方面进行切分,那么分割就是在纵向方面对软件进行切分。网站越大,功能越复杂,服务和数据处理的种类也越多,将这些不同功能和服务分割开来,包装成高内聚低耦合的模块单元,一方面有助于软件的开发和维护,另一方面便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。比如在应用层,将不同业务进行分割,例如将购物、论坛、搜索广告分割成不同的应用。

(3)分布式:分层和分割的一个主要目的是为了切分后的模块便于分布式部署。常用的分布式方案:a.分布式应用和服务b.分布式静态资源c.分布式数据和存储d.分布式计算

(4)集群:使用分布式虽然已经将分层和分割后的模块独立部署,但是对于用户访问几种的模块,还需要将独立部署的服务器集群化,即多台服务器部署应用组成一个集群,通过负载均衡设备共同对外提供服务。

(5)缓存:缓存是改善软件性能的第一手段。包括以下几种形式a.CDN内容分发网络.b.反向代理 c.本地缓存 d.分布式缓存。使用缓存有两个前提,a.数据访问热点不均衡,某些数据会被频繁的访问。b.数据在某个时间段内有效,不会很快过期,否则缓存的数据就会因已经失效而吵闹声脏读。

(6)异步:业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行。异步架构是典型的生产者消费者模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化,而不互影响。

(7)冗余:要想保证在服务器宕机的情况下,网站依然可以继续服务,不丢是服务,就需要一定程度的服务器冗余运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据访问转移到其他机器上。

(8)自动化:在无人值守的情况下,网站可以正常运行,一切都可以自动化是网站的理想状态。如自动化代码管理、自动化测试、自动化安全检测、自动化部署。系统还应该可以对线上生产环境进行自动化监控,包括自动化报警、自动化失效转移、自动化失效恢复、自动化降级等。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值