《大型网站技术架构》读书笔记二:大型网站架构模式

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

一、分层

  最常见的架构模式,将系统在横向维度上切分成几个部分,每个部分单一职责。网站一般分为三个层次:应用层服务层数据层,其具体结构如下图所示:

  通过分层,一个庞大系统切分成不同部分,便于分工合作和维护

  但是,分层架构也有一些挑战:①必须合理规划层次边界和接口;②禁止跨层次的调用及逆向调用。

二、分割

  分割是在纵向方面对软件进行切分->将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。

三、分布式

  ①分布式应用和服务:应用和服务模块分布式部署,便于业务功能扩展;

  ②分布式静态资源:JS、CSS、LOGO图片等资源独立部署,采用独立域名->动静分离;

  ③分布式数据和存储:传统RDBMS分布式部署和NoSQL产品;

  ④分布式计算:Hadoop及其MapReduce分布式计算框架,其特点是移动计算而不是移动数据。

四、集群

  多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。当某台服务器发生故障,负载均衡设备或者系统的失效转移机制将请求转发到集群中的其他服务器上,提高系统的可用性,即所谓的HA(高可用性)。

  所以,在网站应用中,即使是访问量很小的分布式应用和服务,也至少要部署两台服务器构成一个小集群。

五、缓存

  缓存是改善软件性能的第一手段。在复杂的软件设计中,缓存几乎无处不在。

  ①CDN:内容分发网络,缓存网站的一些静态资源;

  ②反向代理:部署在网站的前端,最先访问到的就是反向代理服务器;

  ③本地缓存:在应用服务器本地缓存热点数据,无需访问数据库;

  ④分布式缓存:应用程序通过网络通信访问缓存数据;

  网站应用中,缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力

六、异步

  业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。

  异步架构是典型的生产者消费者模式,两者不存在直接调用,只要保持数据结构不变,彼此功能实现可以随意变化而不互相影响,这对网站扩展新功能非常便利。

  异步消息队列可以提高系统可用性、加快网站响应速度,消除并发访问高峰。

七、冗余

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

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

八、自动化

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

  ①发布部署过程自动化;

  ②自动化代码管理;

  ③自动化测试;

  ④自动化安全监测;

九、安全

  ①通过密码手机校验码进行身份验证;

  ②对登录、交易等操作进行加密

  ③使用验证码进行识别;

  ④对于常见的XSS攻击、SQL注入、编码转换等进行防范;

  ⑤对垃圾或敏感信息进行过滤

  ⑥对交易转账等操作进行风险控制

十、总结

  好的设计绝对不是模仿,不是生搬硬套某个模式,而是对问题深刻理解之上的创造与创新,即使是“微创新”,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握

本章思维导图

作者:周旭龙

出处:http://www.cnblogs.com/edisonchou/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

git: 简洁高效 的 双分支式 git flow (master + dev)

使用 git branch (git 分支)进行版本控制,可以让大家有效地合作,使得项目井井有条地发展下去。

2163
来自专栏Youngxj

emlog评论排行榜插件

2623
来自专栏Linyb极客之路

分布式系统常见的事务处理机制

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副...

813
来自专栏IT技术精选文摘

分布式系统常见事务处理机制

为保障系统的可用性、可靠性以及性能,在分布式系统中,往往会设置数据冗余,即对数据进行复制。举例来说,当一个数据库的副本被破环以后,那么系统只需要转换到其他数据副...

1918
来自专栏BeJavaGod

Shiro系列(2) - 权限模型以及权限分配的两种方式

顶级账户分配权限 用户需要被分配相应的权限才可访问相应的资源。权限是对于资源的操作一张许可证。给用户分配资源权限需要将权限的相关信息保存到数据库。 这些相关内容...

3294
来自专栏王金龙的专栏

大型网站架构技术一览

前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。

2361
来自专栏逸鹏说道

基于HTML的PDF展示 pdf.js

很不错的一个插件,推荐给大家 pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持。 ? 在线演示:http://...

4208
来自专栏腾讯云技术沙龙

黄文俊:Serverless小程序后端技术分享

今天讲的是怎么使用Serverless做后端技术分享。我的职业偏向是后端,可能不是写前端,不是使用Node.js,更多是使用CR做后端语言,今天关注的微信小程序...

1.4K13
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–应收帐款(157)-2客户主数据

4 流程步骤 4.1 创建客户主记录 在此活动中,可以创建客户主记录。 要执行该活动,使用此凭证中的主数据,运行创建客户主数据 (155.18)业务情景中的...

2963
来自专栏知晓程序

用手机也能看小程序后台数据了!微信你很棒棒哦

这个小程序,能让开发者、运营者在手机上就能查看小程序的运营数据,随时随地掌握小程序的市场反应。

1101

扫码关注云+社区

领取腾讯云代金券