新浪微博技术
新浪微博框架

大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心。
最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的。
很多技术人员对微博的构架非常感兴趣,就是一个明星他有300万粉丝,这个技术怎么来实现?今天在这里跟大家分享一下微博的底层机构,让大家对微博的底层技术有更好的了解。
另外不管是做客户端、1.0、2.0、论坛、博客都要考虑架构的问题,架构实际上是有一些共性的。
今天我通过讲解微博里面的一些架构,分析一下架构里面哪些共性大家可以参考。
首先给大家介绍一下微博架构发展的历程。
新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。
第一版就是是非常快的,我们可以非常快的实现我们的模块。
我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。
我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10万份,这样就是很简单了,第一版的架构实际上就是这两行字。
第一颁的技术细节,典型的LAMP架构,是使用Myisam搜索引擎,它的优点就是速度非常快。
另外一个是MPSS,就是多个端口可以布置在服务器上。
为什么使用MPSS?假如说我们做一个互联网应用,这个应用里面有三个单元,我们可以由三种部署方式。
我们可以把三个单元部署在三台服务器上,另外一种部署模式就是这三个单元部署在每个服务器上都有。
这个解决了两个问题,一个是负载均衡,因为每一个单元都有多个结点处理,另外一个是可以防止单点故障。
如果我们按照模式一来做的话,任何一个结点有故障就会影响我们系统服务,如果模式二的话,任何一个结点发生故障我们的整体都不会受到影响的。
我们微博第一版上线之后,用户非常喜欢这个产品,用户数增长非常迅速。
我们技术上碰到几个问题。
第一个问题是发表会出现延迟现象,尤其是明星用户他的粉丝多。
另外系统处理明星用户发表时候的延迟,可能会影响到其他的用户,因为其他的用户同一时间发表的话,也会受到这个系统的影响。
Web2.0 新浪微博

Your company slogan
查看微博: 查看微博:
您可以使用微博中的“关注”功能, 您可以使用微博中的“关注”功能,去关注您感兴趣 的明星;朋友,他们说的话;发的图片, 的明星;朋友,他们说的话;发的图片,您也可以第一 时间知道。 时间知道。
Your company slogan
参与话题: 参与话题:
您可以针对一篇新闻;一个热门词汇来发起话题, 您可以针对一篇新闻;一个热门词汇来发起话题,并邀请您的 朋友,一起过来参加讨论。 朋友,一起过来参加讨论。 同时,您也可以参加到朋友们发起的话题讨论中。 同时,您也可以参加到朋友们发起的话题讨论中。
Your company slogan
新浪微博的使用
Your company slogan
新浪微博的使用
Your company slogan
Your company slogan
Your company slogan
Your company slogan
Your company slogan
新浪微博的教育应用
把新浪微博的作为教育工具
发布即时消息 教师、学校和任何教育机构都可以利用它及时快速发布消息。 教师、学校和任何教育机构都可以利用它及时快速发布消息。 尝试协作写作 它可以让我们学生有机会方便快速的记录他们的认知线索, 它可以让我们学生有机会方便快速的记录他们的认知线索,然 后使用它们来思考他们的工作。 后使用它们来思考他们的工作。 读者回应 当学生参与班级活动时可以利用新浪微博向班级提出意见和建 议。 推动了虚拟课堂的探讨,使用者可以指定的回应他人, 推动了虚拟课堂的探讨,使用者可以指定的回应他人,同时也 允许所有的学生看到。 允许所有的学生看到。 学生可以在自己的微博中发展并展示自己的个性,畅所欲言, 学生可以在自己的微博中发展并展示自己的个性,畅所欲言, 利用新浪微博提供的平台充分展现自己。 利用新浪微博提供的平台充分展现自己。
新浪微博产品简介

最近读到了 创意思考挺 有帮劣!
本周同城活劢 新浪读书会
新浪微博“微产品”之新浪微投票
网友可在微博中収布投票话题,由 用户自行投票。广告主可通过投票结果 形成决策。
热门投票:
可口可乐你喜欢开収成你觉得服务最好的银行是哪家?
客户服务。同重要客户建立个人联系,人们更喜欢从自己了解和信任的人手里买 东西。微博能让你赢得这种优势。
新浪微博基本功能
基本功能:发布微博
微博发布的信息限制于140个字。 微博一旦发布,关注你的人可以同步收到你的信息。 除可发布文字外,还可发布图片和视频
基本功能:发表评论
你可对别人的微博发表评论,并可回复别人对你微博的评论。
基本功能:绑定手机
可通过手机收看和发布微博,是微博应用的一大优势。所以,开通微博后应第一 时间绑定手机。 绑定手机后,便可通过发送短信、彩信或登陆微博客户端发布和收看微博
移动、联通、电信统一发送短信至:1069009009
认证用户身份真实
为避免身份混淆,引起公众误解,新浪微博实行名人、机构企业身份认证策略。 即在已认证用户个人页面,会看到如下标识。当鼠标放在此标识上,会自动出现 用户的身份简介。
到信息可収到微博的绑定 账号上。 • 将不开心网、人人网等更 多第三方平台亏通数据。
• 查看周边地点,迕行签到,
当符吅一定条件可获得勋 章,成为此地点领主。 • 签到的劢态会显示在好友 首页 • 可对地点迕行评论幵查看 附近的所有地点评论
新浪微博“微产品”之新浪Xweibo
基亍新浪微博开放API开収的微博功能系统, 基亍新浪微博开放API开収的微博功能系统,网站运营方只需要下载Xweibo安装文件,按照安装向 导在服务器完成安装即可获得一个完整的微博平台。
新浪微博营销策略和技巧

竞争者
新进 入者
客户
本企业的部件或原材 料产品占买方成本的 比例;各买方之间是 否有联合的危险;本 企业与买方是否具有 战略合作关系
进入本行业有哪些壁垒?它们阻 碍新进入者的作用有多大?本企 业怎样确定自己的地位(自己进 入或者阻止对手进入)?
构造SWOT矩阵
在构造SWOT过程中,将那些对公司发展有直接的、重要的、大量的、迫切的、 久远的影响因素优先排列出来,而将那些间接的、次要的、少许的、不急的、 短暂的影响因素排列在后面。
在国内,目前著名的微博有:新911等。
微博,这个承袭国外Twitter模式的舶来品,如今正逐渐深入到中国的互 联网中,与国外如美国总统大选、500强企业借微博公关营销类似,微博正 逐渐成为中国企业及时传播信息,增加用户与企业粘性的营销利器。
微博营销是一个持续的交互过程,在这个过程中最核心的地方就是: 一定要做有人情味的营销!
有人情味、有人味、互动、关注你的用户、坚持,这是微博营销的核 心。
剩男剩女的进阶:25-27岁为 “剩斗士”。 28-31岁为 “必剩客。 32-36岁为 “斗战剩佛”。 36岁往上为“齐天大剩”。 北京、上海、广州比例明显高于全国平均水平: 北京的“齐天大剩”比例最高; 上海“剩斗士”比例最高, 上海32岁以上的大龄“剩男”多于“剩女”,比例悬殊最大。
环境机会
环境威胁指的是环境中一种 不利的发展趋势所形成的挑 战,如果不采取果断的战略 行为,这种不利趋势将导致 公司的竞争地位受到削弱。
环境机会就是对公司行为富 有吸引力的领域,在这一领 域中,该公司将拥有竞争优 势。
OT机会与威胁分析方法一:PEST法
PEST法
政治/法律:
•垄断法律 •环境保护法 •税法 •对外贸易规定 •劳动法 •政府稳定性
微博架构ppt

@TimYang 新浪内部培训资料
Agenda
微博Cache设计 微博架构经验谈
Feed架构简介
微博技术的核心
数据的分发、聚合及展现 每条微博, 在技术上也称为status或feed 如
Feed架构
微博两种feed设计模式 Push(推) Pull(拉) 复合型
Pull
优点:节约存储 缺点:计算量大,峰值问题
共同的难题
峰值挑战 我们使用异步处理方式
Cache
memory is the new disk, and disk is the new tape. for "real-time" web applications, and systems that require massive scalability - Jim Gray
cache经验谈
流量、带宽 hot keys 规划 mutex
流量
以打开首页时候获取Content cache为例 multi get n 条feed(n = items/页, e.g. 50) cache 大小 = n * (feed长度 + 扩展字段,
e.g. 2k)
并发请求,如 1,000次/秒 总流量 = 50 * 2k * 1,000 / sec = 100MB
带宽
1,000并发,需要800Mbps带宽 1万并发,需要8Gbps 内网流量
带宽
在1G内网,只能压力到 300~400Mbps 需要优化 将热门数据加载到local cache 压缩 复制
hot keys
content cache of 姚晨 create local cache
技术交流 code review流程 技术交流方式
新浪微博数据分析与微博营销案例

话题与趋势分析
01
话题监测
通过监测热门话题、关键词,了解当 前社会热点和趋势。
02
话Hale Waihona Puke 分析对热点话题进行深入分析,包括话题 演变、参与人群、传播路径等,为品 牌或机构提供舆情分析和应对策略。
03
趋势预测
基于历史数据和算法模型,预测未来 一段时间内的趋势和热点,为决策提 供参考。
竞品分析
竞品选择
选择与目标品牌或产品相关的竞 争对手,进行竞品分析。
大数据分析技术应用
大数据分析技术是指利用大数据分析工具和技术,对海量数据进行处理和分析的一种方法。
在微博营销中,大数据分析技术可以帮助企业或个人更好地了解受众群体的兴趣爱好、行为习惯等信 息,从而制定更加精准的营销策略。
常见的大数据分析技术包括数据挖掘、文本分析、图像识别等,这些技术可以帮助企业或个人从海量 数据中提取有价值的信息和知识,为营销决策提供更加准确和可靠的支持。
竞品数据收集
收集竞品在微博上的公开信息, 包括微博内容、互动、粉丝等数 据。
竞品对比分析
通过对比竞品的数据表现和营销 策略,评估其优劣,为自身品牌 或产品的优化提供参考。
02
微博营销策略
品牌定位与形象塑造
总结词
明确品牌定位,树立独特形象
详细描述
在微博营销中,品牌需要明确自己的定位,根据目标受众的特点和需求,树立独特的品牌形象。例如,对于年 轻人群体,品牌可以以时尚、活力、创新等形象特点来吸引他们的关注。同时,品牌还需要在微博上积极传播 与品牌形象相符的内容,以加强受众对品牌的认知和信任。
数据存储
将收集到的数据存储在数据库或 数据仓库中,方便后续分析。
用户画像分析
新浪微博的社交媒体平台如何在微博时代脱颖而出

新浪微博的社交媒体平台如何在微博时代脱颖而出社交媒体平台的竞争激烈,然而新浪微博在这个领域中成功脱颖而出。
作为中国最大的社交媒体平台之一,新浪微博不仅提供了实时信息传播和社交互动,还推动了媒体观点的多元化和公众参与的程度。
本文将探讨新浪微博如何在微博时代取得成功。
一、内容创新与定位新浪微博的成功离不开其独特的内容创新与定位。
作为一个开放的社交媒体平台,新浪微博允许用户通过文字、图片、视频等多种形式来发布内容。
这种多样化的内容形式满足了用户的不同需求,让用户能够用最直观的方式表达自己的观点和感受。
此外,新浪微博还通过个性化推荐和热门话题等功能,让用户能够快速浏览感兴趣的内容。
这种个性化推荐的策略有助于吸引用户留存,增加用户粘性。
同时,新浪微博还通过强化用户对话和互动,建立了一个互动性很强的社交媒体平台,从而促进了信息的传播和用户活跃度的提升。
二、用户参与与互动新浪微博在社交媒体平台中注重用户参与和互动,这也是其成功之处。
新浪微博强调用户对话,鼓励用户之间的交流和讨论。
用户可以通过回复、转发等方式对他人发布的内容进行反馈和互动。
这种互动性的设计使得新浪微博成为一个信息流动的平台,用户可以分享自己的观点、了解他人的声音,并与他人形成联系。
同时,新浪微博还注重用户参与的程度和效果。
平台提供了点赞、评论等功能,用户可以通过这些方式表达自己对内容的态度和看法。
这种参与性的设计不仅促进了用户的互动,还提高了用户的参与感和满足感,进一步增加了用户的活跃度和留存度。
三、社会影响力和公众参与新浪微博作为一个社交媒体平台,不仅在信息传播和用户互动方面起到了重要作用,更重要的是其对社会影响力和公众参与的推动。
在新浪微博时代,个人观点和声音得到更广泛的传播和关注,这使得社会舆论更加多元化和开放。
人们通过新浪微博可以更加及时地了解社会事件、追踪热点话题,并表达自己对社会事件的看法和态度。
此外,新浪微博还为公众参与提供了一个平台。
大数据环境下的微博情感分析技术研究

大数据环境下的微博情感分析技术研究随着互联网的飞速发展,社交媒体已成为人们最重要的信息获取和交流平台之一。
其中,微博是一个非常成功的社交媒体,已成为许多人获取信息,表达观点以及建立社交关系的主要渠道。
然而,由于微博发帖数量庞大,每秒钟都有成千上万的微博被发布,使微博情感分析成为一个热门的研究领域。
本文将会探讨在大数据环境下的微博情感分析技术研究。
一、微博情绪分析的基本概念微博情绪分析是一种将情感标签分配给微博的自然语言处理技术。
情感标签通常包括正面、负面和中性情感。
其目的是为了帮助人们更好的理解在社交媒体中的用户对某个话题所持的情感态度。
微博情绪分析可以提供大量的数据和信息,这对于商家、学者和政治家等行业领域的人们非常有价值。
因此,微博情绪分析技术已经成为了一种非常热门的互联网技术应用。
二、微博情感分析技术的发展历程微博情感分析技术研究早在2002年就已经开始,但直到随着互联网和社交媒体的发展,情感分析技术才受到更广泛的重视。
现今,微博情感分析技术已成为自然语言处理中的一个非常重要的研究方向,并且已广泛应用于商业和学术领域。
三、微博情感分析技术的实现方式在微博情感分析技术中,主要有两种实现方式,分别是基于词典和基于机器学习的方法。
基于词典的方法是通过在情感词典中收集一系列的情感词汇,然后将微博中的各个词语与情感词典中的对应词语进行匹配,从而快速判断每个微博的情感极性。
基于词典的方法的优点在于速度快且易于实现,但是它的缺点在于情感词典的构建和更新需要大量的人力成本,同时,它也不能处理词汇的语义信息。
基于机器学习的方法,则是将微博情绪分类视为一种监督学习问题,通过训练一个情感分析模型,该模型可以从数据中学习微博的情感特征,从而进行情感分析。
机器学习方法的优点在于能够利用大量的数据进行训练来提高情感分析的准确性和鲁棒性,但是它需要大量的训练数据和计算资源才能进行,同时还需要高质量的特征工程。
四、微博情感分析实践应用微博情感分析技术已经成为了许多商业和学术领域人们的重要研究方向,如市场和品牌调查,舆情分析和政治选举等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国首届微博开发者大会在北京举行,这是国内微博行业的首场技术盛宴。
作为国内微博市场的绝对领军者,新浪微博将在此次大会上公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展。
图为微博平台首席架构师杨卫华演讲。
以下为演讲实录:大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心。
最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的。
很多技术人员对微博的构架非常感兴趣,就是一个明星他有300万粉丝,这个技术怎么来实现?今天在这里跟大家分享一下微博的底层机构,让大家对微博的底层技术有更好的了解。
另外不管是做客户端、1.0、2.0、论坛、博客都要考虑架构的问题,架构实际上是有一些共性的。
今天我通过讲解微博里面的一些架构,分析一下架构里面哪些共性大家可以参考。
首先给大家介绍一下微博架构发展的历程。
新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。
第一版是非常快的,我们可以非常快的实现我们的模块。
我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。
我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10万份,这样就是很简单了,第一版的架构实际上就是这两行字。
第一版本的技术细节,典型的LAMP(Linux-Apache-MySQL-PHP)架构,是使用Myisam搜索引擎,它的优点就是速度非常快。
另外一个是MPSS,就是多个端口可以布置在服务器上。
为什么使用MPSS?假如说我们做一个互联网应用,这个应用里面有三个单元,我们可以由三种部署方式。
我们可以把三个单元部署在三台服务器上,另外一种部署模式就是这三个单元部署在每个服务器上都有。
这个解决了两个问题,一个是负载均衡,因为每一个单元都有多个结点处理,另外一个是可以防止单点故障。
如果我们按照模式一来做的话,任何一个结点有故障就会影响我们系统服务,如果模式二的话,任何一个结点发生故障我们的整体都不会受到影响的。
我们微博第一版上线之后,用户非常喜欢这个产品,用户数增长非常迅速。
我们技术上碰到几个问题。
第一个问题是发表会出现延迟现象,尤其是明星用户他的粉丝多。
另外系统处理明星用户发表时候的延迟,可能会影响到其他的用户,因为其他的用户同一时间发表的话,也会受到这个系统的影响。
我们就考虑这个系统怎么改进。
首先是推模式,这肯定是延迟的首要原因,我们要把这个问题解决掉。
其次我们的用户越来越多,这个数据库表从一百万到一亿,数据规模不一样处理方式是有差别的。
我们第一版单库单表的模式,当用户数量增多的时候,它不能满足就需要进行拆分。
第二个是锁表的问题,我们考虑的是更改引擎。
另外一个是发表过慢,我们考虑的是异步模式。
第二版我们进行了模块化,我们首先做了一个层,做了拆分,最右边的发表做了异步模式。
第二个服务层,我们把微博基础的单元设计成服务层一个一个模块,最大是对推模式进行了改进。
首先看一下投递模式的优化,首先我们要思考推模式,如果我们做一下改进把用户分成有效和无效的用户。
我们一个用户比如说有一百个粉丝,我发一条微博的时候不需要推给一百个粉丝,因为可能有50个粉丝不会马上来看,这样同步推送给他们,相当于做无用功。
我们把用户分成有效和无效之后,我们把他们做一下区分,比如说当天登陆过的人我们分成有效用户的话,只需要发送给当天登陆过的粉丝,这样压力马上就减轻了,另外投递的延迟也减小了。
我们再看数据的拆分,数据拆分有很多方式,很多互联网产品最常用的方法,比如说如可以按照用户的UID来拆分。
但是微博用户的一个特点就是说大家访问的都是最近的服务器,所以我们考虑微博的数据我们按照时间拆分,比如说一个月发一张表,这样就解决了我们不同时间的惟度可以有不同的拆分方式。
第二个考虑就是要把内容和索引分开存放。
假如说一条微博发表的地址是索引数据,内容是内容数据。
假如说我们分开的话,内容就简单的变成了一种key-value的方式,key-value是最容易扩展的一种数据。
比如说一个用户发表了一千条微博,这一千条微博我们接口前端要分页放,比如说用户需要访问第五页,那我们需要迅速定位到这个记录。
假如说我们把这个索引拆分成一个月一张表,我们记录上很难判断第五页在哪张表里,我们需要索引所有的表。
如果这个地方不能拆分,那我们系统上就会有一个非常大的瓶颈。
最后我们想了一个方法,就是说索引上做了一个二次索引,改变我们还是按照时间拆分,但是我们把每个月记录的偏移记下来,就是一个月这个用户发表了多少条,ID 是哪里,就是按照这些数据迅速把记录找出来。
异步处理,发表是一个非常繁重的操作,它要入库、统计索引、进入后台,如果我们要把所有的索引都做完用户需要前端等待很长的时间,如果有一个环节失败的话,用户得到的提示是发表失败,但是入库已经成功。
所以我们做了一个异步操作,就是发表成功我们就提示成功,然后我们在后台慢慢的消息队列慢慢的做完。
另外新浪发表了一个很重要的产品叫做MemcacheQ,我们去年做了一个对大规模部署非常有利的指令,就是stats queue,适合大规模运维。
第二版我们做了这些改进之后,微博的用户和访问量并没有停止,还有很多新的问题出现。
比如说系统问题,单点故障导致的雪崩,第二个是访问速度问题因为国内网络环境复杂,会有用户反映说在不同地区访问图片、js这些速度会有问题。
另外一个是数据压力以及峰值,MySql复制延迟、慢查询,另外就是热门事件,比如说世界杯,可能会导致用户每秒发表的内容达到几百条。
我们考虑如何改进,首先系统方面循序任意模块失败。
另外静态内容,第一步我们用CDN来加速,另外数据的压力以及峰值,我们需要将数据、功能、部署尽可能的拆分,然后提前进行容量规划。
另一方面我们还有平台化的需求,去年11月我们就说要做开放平台,开放平台的需求是有差异的,Web系统它有用户行为才有请求,但是API系统特别是客户端的应用,只要用户一开机就会有请求,直到他关闭电脑这种请求一直会不间断的过来,另外用户行为很难预测。
系统规模在持续的增大,另外也有平台化的需求,我们新架构应该怎么做才能满足这些需要?我们看一下同行,比如说Google怎么样考虑这个问题的?Google首席科学家讲过一句话,就是一个大的复杂的系统,应该要分解成很多小的服务。
比如说我们在执行一个搜索查询的话,实际上这个操作会调动内部一百多个服务。
因此,我们第三版的考虑就是先有服务才有接口最后才有应用,我们才能把这个系统做大。
现在我们看一下第三版,首先我们把底层的东西分成基础服务,基础服务里面比如说分布式的存储,还有分层,我们做了一些去中心化、自动化的操作。
在基础服务之上有平台服务,我们把微博常用的应用做成各种小的服务。
然后我们还有应用服务,这个是专门考虑平台各种应用的需求。
最上面我们有API,API就是新浪微博各种第三方应用都在上面跑。
平台服务和应用服务是分开的,这样实现了模块隔离,即使应用服务访问量过大的话,平台服务不会首先影响。
另外我们把微博的引擎进行了改进,实现了一个分层关系。
用户的关注关系,我们改成一个多惟度的索引结构,性能极大的提高。
第四个层面就是计数器的改进,新版我们改成了基于偏移的思路,就是一个用户他原来读的一个ID比如说是10000,系统最新的ID是10002的话,我们和清楚他有两条未读。
原来的版本是采用绝对技术的,这个用户有几条未读都是用一个存储结构的话,就容易产生一致性的问题,采用这种偏移的技术基本上不会出错。
另外基础服务DB冷热分离多维度拆分,在微博里面我们是按照时间拆分的,但是一个大型的系统里面有很多业务需要有不同的考虑。
比如说私信这个就不能按照时间来拆分,这个按照UID来拆分可能更简单。
然后我们突出存储还做了一个去中心化,就是用户上传图片的速度会极大的提高,另外查看其他用户的图片速度也会极大的提高。
另外是动态内容支持多IDC 同时更新,这个是在国内比较新颖的。
下面给大家介绍一下新浪微博怎么样打造一个高性能架构。
到目前为止有五千万用户使用新浪微博,最高发表3000条以上每秒,然后一个明星用户发表的话,会被几百万用户同时读到。
这些问题的本质是我们架构需要考虑高访问量、海量数据的情况下三个问题。
易于扩展、低延迟、高可用和异地分布。
我们每天有数十亿次外部网页以及API接口的需求,我们知道微博的特点是用户请求是无法cache的。
因此面对这个需求我们怎么样扩展?几点思路。
第一我们的模块设计上要去状态,我们任意一个单元可以支持任意节点。
另外是去中心化,避免单点及瓶颈。
另外是可线性扩展。
最后一个是减少模块。
我们要做一个高性能的系统,要具备一个低延迟、高实时性,微博要做到高实时性这是核心的价值,实时性的核心就是让数据离CPU最近,避免磁盘的IO。
我们看淘宝核心系统专家余锋说过的一句话“CPU访问L1就像从书桌拿一本书,L2是从书架拿一本书,L3是从客厅桌子上拿一本书,访问主存就像骑车去社区图书馆拿一书”。
我们微博如果要做到非常实时的话,我们就需要把数据尽量离CPU节点最近。
所以我们看一下cache设计里面怎么达到这个目标。
首先INBOX,这个数据我们需要放再一个最快的地方,因为用户随时访问。
OutBOX 里面的最近发表就是L1cache,还有一个是中期的,这个因为访问少一点,它可以被踢。
最后一部分内容体有三部分。
L0是本地的,我们需要把一些经常访问的,比如说明星发表微博的内容体本地化,因为它被访问的概率非常大。
然后L1里面存放着最近发表的,还有一个是中期的。
我们通常用L2就可以了,L1我们可以理解成它就是一个存储。
一个好的架构还需要举行高可用性。
我们看一下业界的指标,S3是99.9%,EC2是99.5%,我们另外一个同行Face book在这方面它是没有承诺的,就是接口可用写。
微博平台目前承诺的是99.95%,就是说一天365天故障率应该小于9的小时。
这个怎么达到?第一我们要做容量规划,地个是要做好监控以及入口的管理,就是说有些服务如果访问量过了的话,我们要有一个开关可以拦住他。
我们通过这个图表可以清楚的看到,比如说我们要做L1的cache,我们剩余空间有多少,比如说80%,就说明这个数据有可能会丢失,有可能会对我们的系统造成影响。
另外一个层面就是接口监控,我们目前有Google维度的接口监控,包括访问错误失败率。
然后要做架构,给大家一个很重要的经验分享,就是说监控的指标尽量量化。
比如说他延迟30秒是小问题,如果是延迟10分钟我们就要立即采取措施了,就是所有可以量化的指标都要量化。
然后我们看监控怎么样更好的做?我们看亚马逊的VP说过的一句话,就是说监控系统确实特别好,可以立即告诉我们哪里有故障,但是有20%的概率我们人是会出错的。