微博系统架构的可信性研究

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 1年 第 O 期 01 8
■ d i1 .9 9 . s 6 1 12 0 10 0 o : 03 6  ̄i n1 7 . 1 22 1 80 7 s
的可信性研究
庆 轩
( 清华大学 ,北 京 1 0 8 0 0 4)
摘 要 :文章 对微博 系统 架构进行 了介绍 ,提 出了新 产生的 问题 及改善 方案。 关 键 词 :微 博 系统;改善 方案 ;可信性

s lto . oFra Baidu bibliotek ins
Ke o ds m ir — l gs tm ;mpr ve e c m e c e b ly yw r : c o b o yse i o m nt he ; rdiii s t
0引言
微博是近些年新兴起 的事物 ,短短一两年时 间,已经成了家喻户晓的 “ 围脖 ”了,其发展速度之快 ,令人震惊 。单看新浪微 博短短一 年时间内,从零发展到了五千万用户,而且为了适应庞大用户的需要 ,将基层 架构改进了三个版本 。其 中还是有很 多东 西值得分 析的。当用户群体没那 么庞 大时,L MP架构 能够胜任,但 随着用户群体 的激 增,各种情况 就显现 出来。 总 的来说, A 架构就是软件产 品的骨架 ,这个骨架把 组件 、环境纳入其 中,使 之能有效发挥它们的技能 。对于一个 We b服务应用来讲,架构
在一个 Me a h d的查询 中,n mc ce q t c先通过计算 K y的 H s e ah值
来确 定 KV对 所在 的 ms 位置 。当 ms 定后,客户端就会发 确 送一 个查询请求给对应 的 ms ,让它来 查找确切的数 据。因为
这之 间没有交互 以及多播协议,所 以 Me a h d mc c e 交互带给 网 络 的影响是最小化 的。
中图分类号:T 3 3 8 文献标识码 :A 文章编号:17 — 12( 0 1 0 — 08 0 P 9. 0 6 1 12 2 1 ) 8 0 1— 4
St y o heCr d biiy o ir - o y t m c t c ur ud n t e i l fM c o bl g S se Ar hie t e t
来分 配内存的。舍弃 c +标准的 m l ef e的内存 分配,而 + al /r o e
采用块分 配器 的主要 目的是为了避 免内存碎片,否则操作系统
要 花 费 很 多 时 间 来 查 找 这 些 逻 辑 上 连 续 的 内 存 块 ( 际上 是 实
的技术团队)开发的一套分布式 内存对象缓存系统 ,用于在动 态系统 中减少数据 库负载 ,提升性能 。Me ah d在很多 时 mc c e 候都是作为数据库前端 c ce使用的。因为它比数据库少了很 ah
HA F -e ME n .u n N uy , NG Qigx a
( s g u U i ri , e i 0 0 4 C ia Ti h a nv sy B in 0 8 , h ) n e t j g1 n
Absr t tac :Th ril n m ir blg s se r h tcu e r n r d c d p tfr r hen w r blmsa d e atce o co— o y tm ac ie tr sae ito u e u o wa d t e p o e n
是十分重要的,架构其实是 一种权衡 ,不一定有太复杂的技术难点 ,但一切在于迅速 地把握服务需 求,其 实这正是敏捷 开发的
要旨所在 ,一切都可以非常快速地建立 ,但更 重要 的是 ,要将安全服务提到第一位 ,要能够更快更好的提供给用户服务。
1微博系统 的初期架构
本文以新 浪微 博为 例进行分析。新浪第一 版微 博 的架 构推 出得 非常快,也非 常简单和实用 ,使用 的是 L MP架构 ,选用 A Lnx iu 操作系统 ,使用 A ah p ce作为 We b服务器 ,采用 M sl yq 数据库并使用 P p h 进行数据库连接 。以上技术具有易开发、低成本 、 多变灵活等特点,主要原 因是 Ln x i 、Myq、A ah u sl pce和 P p都是开源应用产品,文档也很多很全,适合迅速开发 。 h
多 S L解 析、磁盘操 作等开销 ,而且它是使 用内存来 管理数 Q
据的,所 以相对 于直接 读取数 据库会提供 更好 的性能。在大 型系统中,访问同样 的数据会 频繁发生,Me cce m ahd可以大大
降低数据库运行压力,提 升系统执行效率 。另外,Me a hd mcc e
也经 常作为服务器之 间数 据共享 的存储 媒介,例如在 S O系 S 统 中保存系统单点登陆状态的数据就可以保存 在 Me a h d mc c e
中,被 多个 应 用 共 享 。
大公约数 )的 I s n e n t c ,这 样就等于拥有 了多个容量大小一样 a
日 t t
●——墨墨冒—■■
的子 ms ,从而提供整体 的内存使 用率。
12缓存策略及清除策略 _
当 ms Ha h表满了之后,新 的插人数 据会替 代老的数 的 s
断开 的) 。使用块分配器 , s i 会轮流 的对内存进行大块 的分配 , n 并不断重 用。 当然 由于块 的大小 各不 相同,当数据大小 和块 大小不相符合时,还是有 可能导致 内存 的浪费。 同时,ms K y和 D t 都有相应的限制 ,Ke 的长度不 对 e aa y 能超过 2 0字节,D t 5 aa也不能超 过块大小 的限制即 1 。因 MB 为 m 所使用 的 Hah算法, c s 并不会考虑到每个 ms 的内存大小。 理论上 mc会分配概 率上等量的 K V对给 每个 ms ,这样如果 每个 ms 的内存大小都不一样,那可能会导致内存使用率 的降 低 。所 以一种替 代的解决 方案是 ,根据 每个 ms 的内存大 小, 找 出他们的最大公约数 ,然后在每个 ms 上开 n个容量 ( =最 n
可以有效的利用 网络资源 。但缺点是,需要建立缓存服务器,实现起 来稍显复杂。
随着推拉模式的逐 步应用 , 浪微 博的技术人员也发现,简单的推和拉并不能很好 的解 决大量用户使用所造成的网络延 迟。 新
例如明星用户发送了微博状态 ,将 信息缓存至 “ 发件箱” ,一名粉丝用户上线获取 到了信息,下线再 登录时,总会进行不必要 的信
‘ \ \
旺三圊 E三 五 回 臣三
据 ,更 新的策略是 L U( 近最少使用 ) R 最 ,以及每 个 K V对的 有效时限。K V对存储有效 时限是在 me 由 A p 置并作为 端 p设
参数传给 ms 的。同时 m 采用是 偷懒替代法,HS s I 不会 开额外 的进程 来实时监测过时的 K V对并删除 ,而是 当且仅 当,新来
个要 插入 的数 据, 而此 时又没有足够的内存 空间进行存放时,
才会进行清除动作。
13缓存数据库查询 .
现 在 me a h d最流行 的一种 方式 是缓存数 据库查询 , mc c e 下面举一个 简单例子说明: Ap p 需要得到 ue dxx的用户信 息, s i= x r 对应的查询语 句类似:
默 认情况下,ms 是用 一个 内置的叫 “ 块分 配器” 的组件
新无效信 息的压力,为服务器的性能提升起到了很好 的作用。
上文 中提 到 的缓存 服务 器 是新 浪 微 博系 统架 构 的第二 版,是 改进版 中比较重 要的一个 部分。在 这里 新浪使用 的是
Me cce 图 1 e ah d是 d na O ( 营 LvJun l m ahd如 ,M mcce a g. r 运 Cn i o ra e
这里要详 细谈 —下微博 的推与拉,微博 的发放 主要分为推和拉两种模式 ,这两种模式分别可 以形象地 比喻成邮箱的发件箱 和收件箱,推的模式即是将用户的微博根据成其 粉丝的数量 n ,复制成 n份,分别发送到粉丝们 的收件箱 内。这种模式 的优点是 实现简单,易操作 ,计算量少,但 缺点是网络负载重,服务器 会根据 明星用户的百万级粉 丝呈现出延迟甚至死机 的状态 。另~ 种模式则是拉 ,这种模式摒弃了复制成 n份 的做法 ,将微 博信息进行缓存,存放于缓存服务器 中,非常类似于邮箱的发件箱,当 粉丝用户上线时,再从明星用户的发件箱 自行取得微 博信息。这种做 法的好 处是 避免了不必要的网络流量 ,减 轻了服务器 的压力 ,
“ SELECT FROM s r HERE e i = X " u e sW us rd XX
直接读写数据库 的效率而 言,就像是 内存和硬盘 的对 比程 度,
其 实 Me a h d的内存缓存 系统并不会提高那 么大 的读写速 mc c e 度 ,它的实际瓶 颈在于网络连 接,它和使 用磁 盘的数 据库系 统相 比,好处在于本 身非常 “ 轻巧” 。因为没有过多 的开 销和 直接 的读 写方式 ,它可 以轻松应付 非常大的数 据交 换量,所 以经常会 出现 两条千兆 网络 带宽都 满负荷了,但 Me a h d mc c e 进程本身只占用很少 C U资源的情况 。 P Me ah d处理 的原子操作是 一个 ( e ,V le mcc e K y au )对 ( 以 下简称 KV对 ) e 会通 过一个 Hah ,K y s 算法 转化 成 H s— e, ah K v
第一版微博服务一经推出,受到了中国广大网民的充分 认可,最早 的人人 网、开心网、博客和播客等各种社会 网络与交互方
式都没有受 到国内大众 的广泛参与,而微博这个 新事物 ,以它小巧灵便 、快捷 时尚的身姿挤入了继 Q Q、飞信后,国人参与人数
最多的网络服务。随着用户迅速攀升,原先 的 L MP架构已经不堪重负,最初的微 博发放 的推拉模式也受到了挑 战。 A
在时刻在线的用户。他们将受到推模式,其他不在线用户会采
用拉模式 ,拉模式 又会根据用户的上一次 上线时间进行分档,
分 为长 时 间没 登 录 、近期 没登 录 、段 时 间没 登 录 几个 档 次 ,分
/ 圊
别缓存不同的信息量 ,这样合 理分层后,就有效减轻了过量刷
11内存分配机制 .

图1 me a h 的 应 用 mc c e
需要注 意的是,Me a h d使用内存管理数 据,所 以它 mc c e
是易失 的,当服务 器重 启,或者 Me a h d进程 中止 时,数 mc c e 据便会 丢失,所以 Me a h d不能用来保存持久数据。有很 mc c e 多人都 有错 误理解 ,认为 Me a h d的性 能非常好 ,相 对于 mc c e
Ap 去 问 C c e p先 ah ,有 没有 “ sr sr ”( e 定 义 可预 u e: ei u d Ky
先定 义约束 好 )的数据 ,如果有,返 回数 据 ; 如果 没有,Ap p 会从数 据库中读 取数据 ,并调用 C c e的 A p函数 ,把 数据 ah p

收稿时间: 010 -0 2 1- 6 1
作者简介: 阜业 ( 9 6 , 硕 士研 究生, 韩 1 8 一) 男, 主要 研究方向 :网络 安全 ;孟庆轩 ( 9 2 ) 男, 1 8 - , 助教 , 主要研 究方向 :数据挖掘 、 d Ma 3 s x建模。
21年第0 期 01 8
息更 新,从 而产生 网络流量 ,而这 些流量都是属于无效 流量。 解决方案就是把用户分为有效用户和无效用户,比如,明星用
户发 送 了新 微 博 信息 ,粉 丝 用 户先 自行 分 为 有 效 用 户组 ,即 现
M mcce 两个 核 组 件 组 成 : 务 端 ( ) e ahd有 服 ms 和客 户端 ( ) mc。
相关文档
最新文档