没有合适的资源?快使用搜索试试~ 我知道了~
淘宝网高性能可伸缩架构技术探秘
4星 · 超过85%的资源 需积分: 9 25 下载量 104 浏览量
2012-03-11
20:33:03
上传
评论 1
收藏 29KB DOCX 举报
温馨提示
试读
15页
淘宝网高性能可伸缩架构技术探秘,有效使用缓存、数据库拆分、非结构化数据存储
资源推荐
资源详情
资源评论
一、应用无状态
一个系统的伸缩性的好坏取决于应用的状态如何管理。试想一下,假如我
们在 session 中保存了大量与客户端的状态信 息的话,那么当保存状态信息的
server 宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问
题,而通常 所说的集群,不仅有负载均衡,更重要的是要有失效恢复 failover,
比如 tomcat 采 用的集群节点广播复制,jboss 采 用的配对复制等 session 状
态复制策略,但是集群中的状态恢复也有其缺点,那就是严重影响了系统的伸
缩性,系统不能通过增加更多的机器来达到良好的水平伸缩,因为集群节点间
session 的 通信会随着节点的增多而开销增大,因此要想做到应用本身的伸缩
性,我们需要保证应用的无状态性,这样集群中的各个节点来说都是相同的,
从而是的系统更好的 水平伸缩。
上 面 说 了无状态 的 重 要 性 , 那 么 具 体 如 何 实 现 无 状 态 呢 ? 此 时 一 个
session 框架就会发挥作用了。幸运的是公司已经具有了此类框架。公司的
session 框架采用的是 client cookie 实现,主要将状态 保存到了 cookie 里
面,这样就使得应用节点本身不需要保存任何状态信息,这样在系统用户变多
的时候,就可以通过增加更多的应用节点来达到水平扩展的目的.但 是采用客
户端 cookie 的 方式来保存状态也会遇到限制,比如每个 cookie 一般不能超过
4K 的大小,同时很多浏览器都限制一个站点最 多保存 20 个 cookie.公司
cookie 框 架采用的是“多值 cookie”, 就是一个组合键对应多个 cookie 的 值,
这样不仅可以防止 cookie 数 量超过 20, 同时还节省了 cookie 存 储有效信
息的空 间,因为 默 认每个 cookie 都会有 大 约 50 个 字 节 的元信 息 来描述
cookie。
除了公司目前的 session 框 架的实现方式以外,其实集中式 session 管理
来完成,说具体点就是多个无状态的应用节点连接一个 session 服 务器,
session 服 务器将 session 保 存到缓存中,session 服 务器后端再配有底层
持久性数据源,比如数据库,文件系统等等。
二、有效使用缓存
做互联网应用的兄弟应该都清楚,缓存对于一个互联网应用是多么的重要,
从浏览器缓存,反向代理缓存,页面缓存,局部页面缓存,对象缓存等等都是
缓存应用的场景。
一般来说缓存根据与应用程序的远近程度不同可以分为:local cache 和
remote cache 。 一 般 系 统 中 要 么 采 用 local cache , 要 么 采 用 remote
cache,两者混合使用的话对 于 local cache 和 remote cache 的数据一致性
处理会变 大比较麻烦.
在 大部分情况下,我 们所说到的缓存都是读缓存,缓存还有另外一个类型:写
缓存.对 于一些读写比不高,同时对数据安全性需求不高的数据,我们可以将
其缓存起来从而减少对底层数据库的访问,比如 统计商品的访问次数,统 计 API
的 调用量等等,可 以采用先写内存缓存然后延迟持久化到数据库,这样可以大
大减少对数据库的写压力。
以店铺线的系统为例,在用户浏览店铺的时候,比如店铺介绍,店铺交流
区页面,店铺服务条款页面,店铺试衣间页面,以及店铺内搜索界面这些界面
剩余14页未读,继续阅读
资源评论
- moli192013-09-28写的不错,但是还是不够具体,没有太多的指导意义
- lengyue3182013-11-14淘宝架构的发展历史还是挺复杂的,之前看过Feng写的一些介绍,比这个要全面一些
- hbjylsq2013-09-03太簡單啦寶都沒掏出來啊
greenvc
- 粉丝: 8
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功