读《大型网站技术架构》第三天笔记——大型网站架构模式(二)

昨天的第二天笔记中,针对大型网站架构模式还存在一些笔记没有做完,几天接着昨天的笔记基础之上做笔记,如果是第一次看我这边文章的童鞋,可以看先看下我上一篇文章,

读《大型网站技术架构》第二天笔记——大型网站架构模式

 

像一朵野花一样灿烂地绽放

1.几种常见的网站架构模式

1.1异步(结合消息队列来实现)

 

大型网站架构中,系统解耦合的手段除了前面提到的分层、分割、分布等,还有一个重要手段是异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。

具体实现:

在单一服务器内部可通过多线程共享内存队列的方式实现异步,处在业务操作前面的线程将输出写入到队列,后面的线程从队列中读取数据进行处理;

在分布式系统中,多个服务器集群通过分布式消息队列实现异步,分布式消息队列可以看作内存队列的分布式部署。

 

优点:

1. 提高系统可用性。消费者服务器发生故障,数据会在消息队列服务器中存储堆积,生产者服务器可以继续处理业务请求,系统整体表现无故障。消费者服务器恢复正常后,继续处理消息队列中的数据。

 

2.加快网站响应速度。处在业务处理前端的生产者服务器在处理完业务请求后,将数据写入消息队列,不需要等待消费者服务器处理就可以返回,响应延迟减少。

 

3.消除并发访问高峰。用户访问网站是随机的,存在访问高峰和低谷,即使网站按照一-般访问高峰进行规划和部署,也依然会出现突发事件,比如购物网站的促销活动,微博上的热点事件,都会造成网站并发访问突然增大,这可能会造成整个网站负载过重,响应延迟,严重时甚至会出现服务宕机的情况。使用消息队列将突然增加的访问请求数据放入消息队列中,等待消费者服务器依次处理,就不会对整个网站负载造成太大压力。

 

心静自然,


 

1.2冗余

网站需要7x24小时连续运行,但是服务器随时可能出现故障,特别是服务器规模比较大时,出现某台服务器宕机是必然事件。要想保证在服务器宕机的情况下网站依然可以继续服务,不丢失数据,就需要一定程度的服务器冗余运行,数据冗余备份,这样当某台服务器宕机时,可以将其上的服务和数据访问转移到其他机器上

冗余实现服务高可用。数据库除了定期备份,存档保存,实现冷备份外,为了保证在线业务高可用,还需要对数据库进行主从分离,实时同步实现热备份。

为了抵御地震、海啸等不可抗力导致的网站完全瘫痪,某些大型网站会对整个数据中心进行备份,全球范围内部署灾备数据中心。网站程序和数据实时同步到多个灾备数据中心。(当然,这也只是针对比较大型的网站而言,一般小型的网站只需要每天做一个数据库实时备份就可以了。)

 

也许有的童鞋不是很理解数据库的冷备份和热备份,这边我也解释一下,

冷备份(数据库关闭的时候进行, 慢, 时间点上恢复)

冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最安全的方法。

简单说法就是:离线(没有新的数据来)复制一份保存,有事就直接用这备份来恢复。

优点:

  1. 是非常快速的备份方法(只需拷贝文件)

  2. 容易归档(简单拷贝即可)

  3. 容易恢复到某个时间点上(只需将文件再拷贝回去)

  4. 能与归档方法相结合,作数据库“最新状态”的恢复。

  5. 低度维护,高度安全。

冷备份的缺点:

  1. 单独使用时,只能提供到“某一时间点上”的恢复。

  2. 在实施备份的全过程中,数据库必须要做备份而不能做其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

  3. 若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

  4. 不能按表或按用户恢复。

值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的 。而且在恢复后一定要把数据库文件的属组和属主改为mysql。

热备份 (数据库运行的过程中进行, 快)

热备份是在数据库运行的情况下,备份数据库操作的sql语句,当数据库发生问题时,可以重新执行一遍备份的sql语句。

简单说就是:在线的保存对数据库操作的sql语句,有事就再跑一遍这些sql语句。

热备份的优点:

  1. 可在表空间或数据文件级备份,备份时间短。

  2. 备份时数据库仍可使用。

  3. 可达到秒级恢复(恢复到某一时间点上)。

  4. 可对几乎所有数据库实体作恢复。

  5. 恢复是快速的,在大多数情况下在数据库仍工作时恢复。

热备份的缺点:

  1. 不能出错,否则后果严重。

  2. 若热备份不成功,所得结果不可用于时间点的恢复。

  3. 因难于维护,所以要特别仔细小心,不允许“以失败而告终”

     

 

家,是所有漂泊人心中永远的牵挂

1.3自动化

在无人值守的情况下网站可以正常运行,一切都可以自动化是网站的理想状态。目前大型网站的自动化架构设计主要集中在发布运维方面。

 

发布对网站都是头等大事,许多网站故障出在发布环节,网站工程师经常加班也是因为发布不顺利。通过减少人为干预,使发布过程自动化可有效减少故障。

发布过程包括诸多环节。自动化代码管理,代码版本控制、代码分支创建合并等过程自动化,开发工程师只要提交自己参与开发的产品代号,系统就会自动为其创建开发分支,后期会自动进行代码合并;

自动化测试,代码开发完成,提交测试后,系统自动将代码部署到测试环境,启动自动化测试用例进行测试,向相关人员发送测试报告,向系统反馈测试结果;

自动化安全检测,安全检测工具通过对代码进行静态安全扫描及部署到安全测试环境进行安全攻击测试,评估其安全性;最后进行自动化部署,将工程代码自动部署到线上生产环境。

 

此外,网站在运行过程中可能会遇到各种问题:服务器宕机、程序Bug.存储空间不足、突然爆发的访问高峰。网站需要对线上生产环境进行自动化监控,对服务器进行心跳检测,并监控其各项性能指标和应用程序的关键数据指标。

如果发现异常、超出预设的阈值,就进行自动化报警,向相关人员发送报警信息,警告故障可能会发生。在检测到故障发生后,系统会进行自动化失效转移,将失效的服务器从集群中隔离出去,不再处理系统中的应用请求。待故障消除后,系统进行自动化失效恢复,重新启动服务,同步数据保证数据的一致性。

在网站遇到访问高峰,超出网站最大处理能力时,为了保证整个网站的安全可用,还会进行自动化降级,通过拒绝部分请求及关闭部分不重要的服务将系统负载降至一一个安全的水平,必要时,还需要自动化分配资源,将空闲资源分配给重要的服务,扩大其部署规模。

(当然,这种自动化水平这么高的,可能在大型的互联网公司才能够做到这么完善,一般的公司只能望洋兴叹了~但是我们不能气馁,就算我们目前没接触过,我们也了解这部分技术)

 

平凡之路,也是你我都要走的路~

小结:

第三天的读后感:

1.今天收获比较大的应该是异步里面的消息队列处理了,之前我的做过的一个项目中也用到过消息队列,但是当时我不是负责那个模块的,所以不是很清楚消息队列具体使用来干什么的,以及消息队列的好处在哪里?今天算是理解消息队列了,

2.数据库备份--热备份和冷备份,

真心感觉数据库备份是一件很重要的事情,没有之一,以我的个人真实经历来告诉大家。

去年在工作中有一次,不知道为什么,我们公司安装数据库的测试服务器挂掉了,没有办法启动了,导致测试环境的所有数据都没办法使用了,然后我们一个个大眼瞪小眼的等着公司的人对服务器进行恢复,在等待期间,被告知了服务器恢复了之后,里面数据可能也没办法恢复了,当时心态就蹦了,后面还好我们的项目负责人前几天刚好备份数据库,然后又重新部署在新的服务器上,我们的工作才得以接着正常进行。

3.自动化,其实我对这个概念还是比较陌生的,之前只是听朋友说过他们公司用过自动化部署项目,以及相应的自动化测试,只是我公司目前还没有用自动化相关的技术。感觉网站实现自动化确实是个比较理想的状态,工作都可以轻松许多。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值