咀嚼《大型网站技术架构》-架构初识

为什么要看这本书?

我在一家公司工作了两三年,跟团队着一起开发p2p网站,部分项目是沿用前人留下的“遗产”代码,加以修修补补凑合成的。
随着业务量越来越大,用户量越来越多,老系统必定遇到瓶颈,一些问题像打地鼠一样越改bug越多,项目经理不得不下狠命令让大家翻新架构。我也参与见证并了架构的改良,不过因为公司平台因素,网站的用户量还是相对较少,只是对业务进行分层。
但我认为我们不能被动地跟着业务走,不能等到遇到问题了,才去解决。应该走在它前面,为更大更好的系统做准备。

什么是大型网站?

谈到大型网站,大家应该必然会想到用户量多的,知名度高的网站,如淘宝,新浪微博等。那到底怎样才算大型呢?我们先来看看它的由来:
由问题催生的架构解决方案,架构演化如下图:
这里写图片描述
总体来看,解决方案无非就是使架构可以分布在多个硬件设备上,可扩展利用更多硬件资源。
不过除了利用硬件资源,还可以从其他方面进行优化:

  1. 网络传输上考虑,使用CDN加速使得用户请求时访问到的是离自己最近的服务器,这种情况是网站服务器分布于全国乃至全球才会使用。
  2. 数据库结构上,使用NoSQL技术,使得复杂的非关系型数据的检索和存储更合理快捷。
  3. 程序业务拆分,如首页,列表页,下订单等功能业务,可以拆分出来,独立部署,分派给各个部门维护。
  4. 应用系统与服务拆分。也就是常提的微服务,为应用程序提供统一的数据库访问接口。

大型网站架构是怎样的?

就像庖丁解牛一样,将网站进行解耦:
1.分层
应用程序分为应用层(面向用户提供功能的处理代码),服务层(为应用层提供业务逻辑处理的代码),数据层(为服务层提供数据存储访问的代码和应用)。这三层又可接着分,如下图。
2.分割
各层又可纵向分割,按照业务独立出逻辑代码。
这里写图片描述
3.分部式
充分利用硬件资源,使用更多的计算机为性能提高效率。这就使得我们可以将上面分的层,分别抽出来部署到不同计算机中,如静态资源独立部署,实现动静分离;应用和服务器分别部署……
4.集群
如果相对于分布式是横向独立部署,那么集群就是纵向独立部署。也就是将同层应用部署到多台服务器上。
5.缓存
缓存可用户数据缓存和页面缓存。数据缓存遵循二八原则,只缓存热点数据;页面缓存可采取CDN和反向代理(部署在前端)。
6.异步
利用消息队列,将线程输出写入队列,由队列控制处理。这里有个问题,就是排队处理的时候,不能立即返回处理结果,考虑到用户体验或业务流程,此处产品设计应该是置为处理等待。
7.冗余
为避免宕机造成数据丢失,或业务中断带来的影响。网站需要运行冗余服务,对于数据库应进行存档备份。
8.自动化
人为操作出错不可避免,为了网站良好运行,应该进行更多的自动化管理。
自动化代码管理
自动化测试
自动化安全检查
自动化部署
自动化报警
自动化失效恢复
自动化降级
自动化分配字眼
9.安全
身份认证
对输出的数据进行脱敏处理
对重要操作进行加密

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值