硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

分离通用和用户专有数据流,实现可扩展的网站

  • 2008-03-06
  • 本文字数:1013 字

    阅读完需:约 3 分钟

Gojko Adzic 是一位作者兼 IT 咨询师,他发表了一篇很有趣的文章,该文章阐述了利用分离动静态内容这种架构的好处达到扩展 Web 应用的目的:

在一个要求可扩展性的网站项目中,有很多需要早做决定的架构问题,其中之一就是将数据流分离成两部分:一是用户特定数据,二是通用数据。

这种分离数据方法的主要原理是因为它们的使用约束意味着两种不同的缓存和状态管理方法:

例如,大部分通用数据流是完全无状态的,但用户的特定操作通常是有状态的。如果把这两种数据流清晰划分开,那么我们就可以通过无状态的服务和服务器来处理通用操作。无状态服务比有状态服务更容易理解,因为他们可以很容易地被代替而不会影响任何的系统操作。你如果想达到更大的吞吐量,只要使用 round-robin 策略和简单的负载均衡器将请求分发给更多廉价的服务器就可以了。而有状态服务的扩展却不是如此容易的事——它们可能会依赖于资源锁定,而负载均衡器就不得不将来自于同一个 Session 的所有请求发送到同一个服务器上。如果一个有状态的服务器宕机了,那么对系统运行有明显的影响,所以这些有服务必须比那些无状态服务具备更快的恢复能力。

Gojko 提出了如何分离数据流的指导原则。对于一个双层架构的应用,要创建不同的数据源。对于静态数据流,要打开缓存,关闭事务。对于三层架构的应用来说就更复杂一些:

在三层架构中,我喜欢在中间层就直接分离为用户特有数据服务器组和通用服务器组。Web 服务器在前端从第一组中间件服务器中得到通用数据,而利第二组中间件服务器管理事务。通用数据流服务器可以做成集群,很容易扩展,而且任何负载均衡系统都可以在集群外部运行。它们可以被重启、直接从集群中拿掉或者再放回去,这些都不会影响系统的运行。透明的缓存也很容易应用于这些服务器。而另一方面,用户特有数据的服务器在这些方面要复杂一些,而且不能使用透明的缓存。这种分离方法就是为了将来的扩展和缓存做打算,因为通用数据服务器可以按区域划分,放在几层缓存服务器之下,通过产品界限或类型垂直分开。而用户特定数据服务器的功能要专一且独立,所以当我们以后需要分割时,只要关注这一小部分就可以了。

Gojko 建议,尽可能让通用服务器利用缓存能力,如使用 AJAX 技术将用户特定内容加载到通用页面,使用 cookies 保存每个页面顶部都要显示的用户详细信息。通用数据流可以使用高性能的 http 服务器,如 LightHttpd

查看英文原文: Generic versus User Specific Data Streams for Scalable Web Sites

2008-03-06 17:361136
用户头像

发布了 100 篇内容, 共 25.3 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

依赖倒置原则

极客李

618你的系统顶住了么?系统发生重大灾难难道只能“删库跑路”?

punkboy

依赖倒置和案例

王锟

第二周作业

武鹏

老大吩咐的可重入分布式锁,终于完美的实现了!!!

楼下小黑哥

Java redis 分布式锁

做一个有原则的码农可好?

Dawn

极客大学架构师训练营

架构师训练营二期作业

老姜

品软件架构原则模式之美

老姜

“麻烦”的处理流程

zhoo299

随笔杂谈

产品视角看推荐算法

峰池

人工智能 算法 产品经理 推荐算法

第二次作业

朱月俊

架构师训练营第二章总结

叮叮董董

给行动找个理由

Neco.W

行动派 决策

用接口隔离原则优化 Cache 类的设计

朱月俊

这也太拧巴了吧?结局意想不到

非著名程序员

程序员 程序人生 提升认知

为什么坐车会晕车呢

石云升

生活,随想 日常思考 晕车

架构师训练营第二章课后作业

叮叮董董

架构师训练营-第二章-依赖倒置原则&接口隔离原则

而立

极客大学架构师训练营

架构师训练营第2周学习总结

Season

极客大学架构师训练营

什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?

朱月俊

第二次作业总结

朱月俊

千万不能让程序员给娃娃取名字

码农神说

程序员

架构师训练营 - 第二周架构师实现自己架构的主要手段

zcj

极客大学架构师训练营

哪些框架是遵循依赖倒置原则的?

朱月俊

第二周学习总结

武鹏

ARTS打卡Week 04

teoking

ios LeetCode ARTS 打卡计划

小师妹学JVM之:GC的垃圾回收算法

程序那些事

JVM 小师妹 JIT GC 签约计划第二季

架构师训练营第二周

小树林

基本的面向对象原则(Basic OO principles)

旭东(Frank)

编程思维 极客大学架构师训练营

一个包子铺看懂 I/O 模型演变

小眼睛聊技术

Java 程序员 架构 后端 nio

数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……

墨天轮

数据库

分离通用和用户专有数据流,实现可扩展的网站_架构_Gavin Terrill_InfoQ精选文章