收母婴二手闲置微信群号,半年到一年以上有正常使用聊天和其他功能的最好,50-100元。

深度使用微信一年半心得分享:当我玩微信时,我玩些什么
扫描,分享朋友圈
来源:(公众号ID:iamvxs)作者:V先生(书痴,整理控,神秘爱好者)原标题:当我玩微信时,我玩些什么本文已获得作者授权,如需转载,请联系原作者!1.前言说到微信,大家对它的感受五味杂陈。有人靠它做微商或者公众号赚到了钱;有人靠它交到了一帮朋友,可能是吹水扯淡、可能是志同道合、也可能是下床说再见的炮友;有人靠它和客户沟通,联系业务;还有许多朋友不堪微信的干扰,对之恨之入骨,比如来自领导的任务、来自朋友的未读消息、忍不住刷朋友圈以致耗去大量精力…笔者接触微信其实比较晚,在2014年底才真正开始用起微信的。为啥呢?之前装逼,只用黑莓的手机,要知道那玩意打电话、发短信、聊QQ都没问题,但是许多许多软件,里面并没有。就像微信,黑莓里面的版本落后于苹果和安卓很多。当然,黑莓也有许多优点,这是后话。▲ 警察叔叔,就是这玩意,不让我接触微信2014年底换了部安卓手机,装了微信,仿佛发现了新世界。卧槽!居然这么简约,没有QQ那些乱七八糟的功能和界面。卧槽!朋友圈的九宫格看起来好舒服,还能发小视频。卧槽!居然可以拉几个人建群。卧槽!还可以发语音消息,发红包。卧槽!这个叫公众号的是啥玩意儿!总之,我被震精了!!作为一个好奇心极强的强迫症患者,我决定补上这一课。谁知这家伙就是个坑,琢磨完微信基本功能,又探索朋友圈的花样,然后订阅了1500+公众号(上限是1000,琢磨完一批就取关),再接着还有社群…当然这还没完,强迫症学习的特点就是往死里整。深度使用了一年半微信,我有一些心得分享给你,不看你就亏大了。2. 微信能玩到什么?结构化让碎片信息产生 1+1&2 的价值。在当下这个充斥海量碎片信息的时代,这一点尤其重要。以我使用豆瓣、知乎、简书、微信、微博、一点资讯等平台的体会,往往执行最多的三个动作是:阅读、收藏、分享。未经阅读的收藏,只带来越来越多的囤积,还给自己带来一种博学多闻的错觉。未经阅读的分享,虽便利了信息的传播,但仍或多或少是炫耀欲使然。再来看阅读,有这么四种情况:点开一篇短文章,读完,或看完视频;点开一篇长文章,读完;点开一篇长文章,读一部分即关闭;点开一篇短文章或长文章,草草扫几眼即关闭。以上,每一个动作都要耗费时间和注意力,包括手指要点、视线要动、情绪会波动、大脑要思考、注意力要倾注。这就是成本。一个动作的成本固然低,但一天、一周、一月下来,不知不觉中已执行了 N 多次这样的动作,这个成本就很高了。既然谈到成本,对应就要考虑收益。单以微信为例,不妨考虑一个问题:我本周/本月/这半年来,从使用微信中收获了什么?“收获”大致总结下有这么些种类:人:来自朋友推荐、微信群、摇一摇、漂流瓶、附近的人。群:创建或参与了各种群,有的是大的社群,有的仅是三五好友的小组。新闻:外面发生了什么事,和自身相关性并不直接,大至太空、世界、国家,小到城市、公司、团队。八卦:圈子里的人发生了什么,特指关于同事和朋友的新闻,比如我吃了啥,买了啥,跑步啦,发现某家店,看了某本书,去了某个地,见了某个人,等等。文章:来自订阅的公号、微信群、朋友圈、私聊。观点:朋友圈评论、群聊、私聊中,针对某些话题或问题的讨论,各种观点散落其中,或只言片语,或深度长文。推荐:牛人、公司、书单、app、网站、公众号、视频、歌曲、图片、美食、日用、科技产品……新技能 get:指直接拿来用于工作或生活的经验和知识。机会:求职招聘、业务合作、新的项目、商机点子。各种约:约饭、约茶、约跑、约游、约购、约书、约炮、约讲座、约论坛…其他:包括红包、表情图、赞。以上这些种类,基本都存在于每个人的微信,具体事情有别,数量或多或少而已。这么多碎片信息,存在于朋友圈、微信群、私聊、订阅、收藏中,花了时间,耗了手机电和流量,我们到底从中得到了什么?至此,有必要自问:精力有限,我是否精简了朋友、群和信息源,以达到最优?对于从我微信中流过的碎片信息,我是否辨别出哪些有用?对于无用或不必要的信息,是否舍弃而不囤积;对于有用信息,是否对其进行了结构化?3. 如果微信是菜市场结构化不仅仅是阅读和记录,我是把微信当作菜市场来看的:▲ 伊斯坦布尔的集市1)到菜场找菜摊菜场就是汇集碎片信息的微信,里面有各种菜摊,包括人、群、公众号等信息源。2)买什么菜这取决于你的口味和营养需要,你喜欢吃什么?你需要吃什么?我有结合各种分类法和自己实际情况,给自己的所有资料做了一个“知识分类树”,这样就相当于推着车子去菜场,车子里有不同类别的篓子,买到不同的菜就分门别类放入,这样不会乱。这是我的分类树,给你感受一下:3)择菜与洗菜即筛选。有的粗略了解下即可,有的要细读,有的要反复读,把坏的叶子择掉,把泥土洗掉,这样确保不是一味收藏而不读不思考不用。没有时间阅读的,保存在收藏中,集中一个时间段处理。4)切菜对于非常经典的文章(注意不是随便什么文章都保存),全文保存在笔记中,分为十三大类:神秘、科技、语言、历史、社会、经济、诗文、艺术、商管、互联网、职场、书影音、生活。在保存时按“5W2H×关键词”打上标签:每篇文章都在描述某种人、事、物,或它们之间的关系,也都有侧重,比如一篇介绍吴清源的文章,侧重描述的是“who”,此外,还要打上关键词“吴清源”和“围棋”,这样几个标签就可以定义这篇文章的属性。对于平时自己随手记下的笔记,则集中放到一个 Inbox 中,不要分散在多个 Inbox,整理起来会麻烦。对需要细读的东西和需要深入学习的问题进行思考和剖析,我是这样提炼要点的:用 5W2H(时间、地点、人物、事件、目的与原因、方法、成本)把要点提炼出来,记在笔记中,我一般都记在为知笔记里:5)炒菜每周末有整理,每月有主题:每周末整理放入印象笔记中的碎片,删除不必要全文收藏的文章。重要的关键词记入《关键词库》,用 Excel 表格制作,并按词性和主题分类,Excel 文件也可存入印象笔记,随时在手机上查看、搜索。记下一些好问题(包括自己想到的、他人问到的及知乎上看到的)到《问题库》中,制成 @不同情境的 check list,遇到某种情境时拿出来先过一遍 check list 上面的问题。记下一些经典的文章题目到《文题库》中,总结为不同格式,需要写文章时拿出来过一遍,就方便想到一个好的题目,比如《互联网思维之独孤九剑》→《XXX之独孤九剑》。记下各种创意、文案、点子到《创意库》中,需要做某事时,对照一下,容易有新的思路。每个月有一个学习主题,比如这个月是“微信群”,那么这段时间就侧重读这方面的文章,并把笔记和心得写下来,月末汇总零碎笔记写一篇文章,或以思维导图、PPT 的形式表达出来。6)调味品有盐油酱醋,菜才有滋味。比如自己做个头脑风暴,在一叠草纸上随便写和画,XXX+微信=?用三教九流的各门类知识来混搭,看看有什么新东西出来。7)吃饭与消化凡是不为了吃而做的菜都是浪费时间,凡是不为了应用而学的东西都是扯淡。关于这一点,以后专门说。8)排泄只吃不拉是不行的。只学不忘不更新就容易守旧,容易被所学的东西限制住。当精华融于血液,应用于生活,其他的该忘的忘。继续去了解新的东西。4. 微信好友:保安三问什么叫保安三问呢?这是一种幽默的说法。你到一个工厂里,保安会问你:你是谁?你从哪里来?你来这干嘛?他管着一个工厂的入口,对进来的人自然要问明情况。同样,对于微信,要想你的朋友圈优质,首先就要控制入口,有人加你,先不要通过,问清三点:你是谁?(姓名/公司或者行业)你从哪里来?(所在城市/通过什么群或文章等途径知道你)你找我干嘛?(他的目的)不这么做,长此以往,朋友圈就容易变得乌烟瘴气,被无关的人骚扰,朋友圈充斥大量无效信息。我加别人好友,也都先自报家门:您好,我叫某某,在某个城市,从事某方面职业,业余爱好某某,近期关注某某方面。通过某某途径知道您,来意是某某。请多指教。这点咱们都要向唐僧学习:贫僧唐三藏,自东土大唐而来,去往西天拜佛取经,路过宝刹,想借宿一宿。是谁,从哪来,到哪去,要干嘛,人家一句话就说清了。加了微信好友之后,修改他/她的信息:将昵称统一命名为:城市/姓名/公司城市放在最前,便于你翻阅通讯录时,对某个城市有哪些认识的人一目了然。如果不知道具体公司,至少要问清行业,这样你有事咨询或者有项目合作时,知道该找谁。在描述里备注你知道的其他信息,比如你们在哪一天认识的,因为什么加的好友或者谁推荐的,共同参加过的活动,他的爱好和特长,公众号是什么,在做的项目是什么,生日哪天…另外,用标签来分组,标签按照关系的交集或者平台来分类:一类是现实生活中有交集的,比如:亲人,初中同学,高中同学,大学同学,A公司同事,B公司同事,供应商,大客户,一般客户,赚外快,某个线下组织,江湖(无法分组的现实生活中人则归入江湖)。一类是没见过面但在网上有交流的,可以按照群或者行业来设置,比如:简书作者,知乎作者,公众号运营,写作特工,西瓜会,…,网友(无法分组的未谋面人归入网友)。当朋友多了之后,有必要弄清楚谁是更重要的,毕竟一个人的时间精力有限,不可能对每个人都耗同样的精力。有一些朋友,跟你聊的来,或者很挺你,比如做我群管的伙伴、分享我文章的朋友、主动分享优质信息给我的人、帮过我忙的朋友…这些朋友,我都设置一个单独的标签分组,叫作“铁杆”,过年过节发发红包,有什么项目、机会、信息都会主动分享给他们,需要我的时候,打个招呼我都乐意帮助。微信有一个不足的地方,谁删了你,你不知道,这样就很不方便。那怎样找出是谁删了你呢?有三种方法:发消息给他,发不出去,微信会提醒“你们不是好友”。拉一个群,40人以内不需要验证,假如对方删了你,就会提醒你们还不是好友。只要你不说话,进群的人不知道这个群存在,验证完你就悄悄把他们移出群,接着拉下一批40人。上面两种效率比较低,人少还可以,一旦好友上千,操作起来就很麻烦。这里推荐一个软件,叫“微商猎手”,可以快速查找和标记出谁删了你。我一般每个月清理一次。另外,为了防止微信被盗、系统出问题等特殊情况,可以把微信里朋友的ID、城市/姓名/行业、其他信息,记在Excel表格里,备份通讯录。5. 微信聊天有事直奔主题,不拐弯抹角,不扯东扯西,不作无益辩论。大家都很忙,没空瞎扯淡。反正我对撩妹约炮啥的没有兴趣。所以对微信里的朋友(除了客户这样给饭吃的主儿),我一般都会说明,有事请直接留言,什么问题、什么事,看到都会抽空回复,不要问“在吗”。哪能卡一个时间点,专门聊天的话,这一天还要不要干别的了。有问题请先搜索,我不是百度和谷歌,更不是情感电台。凡创建或加入一个微信群,则进行三个操作:显示昵称、保存到通讯录、消息免打扰。重要的、常联系的人和群,则长按-置顶。退出部分群,若成本(时间/注意力) & 收益(人/有价值的信息)则退。凡有吹水刷屏、红包接龙,果断退。退的时候以 Excel 统一记下此群的简要情况,作为备忘。6. 朋友圈凡新加好友,先将其朋友圈大致浏览一遍,收藏其分享的经典文章,也可以了解对方的经历、特长、品味。假如对方发的文字、图片、文章对我有启发,可以评论互动一下,至少要点个赞。别觉得赞俗,人家的信息对我有用,点赞示意一下,也是人之常情。刷朋友圈时,看到谁经常发一些优质信息、你需要的信息,则把他设为星标好友。朋友圈太多看不过来时,我一般在睡前都会挨个点进去看这些星标好友的朋友圈,不想错过他们发布的精彩内容。不要让你的朋友圈成为“灾难现场”,屏蔽某些朋友圈:微商卖货(文案有创意的除外)、发大量小视频、发“小黄文/谣言/陈安之语录”之类文章、每天多条晒娃晒菜晒脸刷屏。以上,亲人和至交除外。发朋友圈都是分组显示,给相关的人看相关的信息,不干扰其他人的时间线。我发过的朋友圈,每过一段时间会清理一下,比如分享的文章、某些心情,时效过了,留着太多也碍眼。只留下必要的数条,让自己的朋友圈时间线干净些。7. 发朋友圈的30种姿势清晨打卡,以“#早起鸟#”标示,写今日天气、心情、要事,为新的一天加油。不亦快哉!汇集FT中文网、商业周刊、华尔街见闻等时事摘要,名为《今日早报》,既让自己养成速读新闻的习惯,也提炼要点给朋友作参考。不亦快哉!或制作九张图,每张只有一数字,附文字解说数字对应的新闻,此即《数读天下》。不亦快哉!于简书、知乎或某公号读到一篇深度好文,不禁拍案叫绝,怒转,加以神点评。不亦快哉!自创或转载段子一枚,在吐槽中散播欢笑,给操蛋的生活一个有力的嘲讽。不亦快哉!拍一张照片,对照图意,赋小诗一首。不亦快哉!开始“100天阅读计划”,每日坚持读,并记下心得,“一书未毕,不读它书”(曾国藩语)。不亦快哉!分享一首心爱的歌曲链接,写下你和这首歌曲的故事,回味一段过往。不亦快哉!专门为大家挖掘、收集、整理经典的电影和剧集,附上网盘链接。不亦快哉!或画漫画,或涂《秘密花园》,或以秀丽笔抄写佛经。不亦快哉!以一组微信表情说个故事,让大家来解读,看看不同人的视角。不亦快哉!在朋友圈连载自己的小说,让好友生发追剧之感。不亦快哉!传九幅图,名为《八个推荐》,如一本书、一首歌曲、一部电影、一个app、一个公众号、一个网站、一家店、一件物品,中间放上自己的公号二维码,既为他人创造价值,又为自己作了宣传。不亦快哉!单身狗拍一人食,摆两副碗筷,假装有对象。不亦快哉!提个掉节操的问题,坐等评论中的嬉笑怒骂。不亦快哉!拍一段小视频,或做鬼脸,或表演搞怪动作,仿憨豆、星爷、本山大叔,名为行为艺术,实为自黑。不亦快哉!在“唱吧”或“全民K歌”中,唱一首歌,分享链接,如果会弹吉他则拍个小视频。不亦快哉!把自己的相片,用“秀米”编辑,配以文字和音乐,制成相册,连装B都这么华丽丽。不亦快哉!发两幅近似的图,大家来找茬。不亦快哉!出题如“微信+某=?”,召集好友在评论中做头脑风暴,集思广益,脑洞大开。不亦快哉!发起活动,如微笑挑战、晒包、三行情诗表白、故事接龙、图书漂流,以“提醒”功能点名好友,如此传递下去。不亦快哉!采访一个朋友,换个身份沟通,写下微访谈经过。不亦快哉!以《普鲁斯特问卷》为范本,发起“所有人问所有人”点名活动。不亦快哉!观察一个路人,注意他的动作,尝试去理解他在想什么和感受什么,记录下来。不亦快哉!确定一个题目,做PPT,导出为九张图,分分钟让人涨姿势。不亦快哉!捕捉微博上的热门事件,为个人或者公司做一个广告文案,既能练手,又可借势营销。不亦快哉!搞个恶作剧,长按右上相机,可编辑纯文字,写一两句话,其余的要点击“全文”,让人看了后哭笑不得。不亦快哉!请注意:朋友圈编辑纯文字,只可以显示六行,多出六行就要查看“全文”;要显示空行,需缩进一格。戳这里,你们感受一下 →《最近流行的一种骗术叫点击全文》创建一个“树洞”群,发群二维码招人参加,每个人说一个秘密,或倾诉一桩心事,当日活动结束就立即解散。不亦快哉!跑步回来,澡先不要洗,第一时间上传今日所跑路线图,等着被赞。不亦快哉!以“一种”或“小记”App作图,抄小诗一首,或格言三两句,以此《晚安书》道安,逼格满满。不亦快哉!8. 建群心得目前我陆续待过的群有两百多个,创建的大大小小各类群也有近百个。这里先简单说一下心得,我把它总结为《社群二十条》:优秀的社群就是:让对的人在一起做对的事。人不在多,在精。15~20人的群效率最高。人多就要分组玩。先亮主题和规则。建入口,说明群规和玩法,筛选人的诚意,防止鱼龙混杂。入群先看规则:yes or no。同意则进。不看清规则,进去后只会瞎BB的就是傻。不同意规则,进去只为发广告和加人的是耍流氓。进去后,不说话、不参与的是植物人,要定期清理。为相互了解,每人按群主规定的格式发自我介绍。统一修改群昵称为:姓名|公司或职业|所在城市。给成员每人一个编号,给群聊设定几个符号作为语法。交保证金,不用啰嗦群规,违反则扣,扣完则踢,结束后返还剩余,中途退出则全扣。任务单一、具体、专注,容易出成果,否则一盘散沙。任务驱动型的群有三个要点:每天、每周,布置作业;记录进度,建立积分;最后需提交毕业论文,进行答辩。做爱做的事,交配交的人。设定某种仪式,增强成员的认同感。可辩论,不可吵架,不可人身攻击。调动感觉比诉诸理性更让人活跃。群管+协作流程:抓头头,抓方针,不然累死人。群管管什么?人的分组、任务设定、信息整理和输出是三大核心。关于微信群,我试过五花八门的玩法,其中有一种形式要特别提一下。我时常会通过“面对面建群”这个功能,一个人就可以建群,然后发布二维码和玩法说明到朋友圈,让朋友圈的人自由进入,一般是晚上,每次专注一个话题,两三个小时到点就解散,这就是“快闪群”。目前已经办了有五十多期了,每次主题不同,因为时间有限,所以大家参与度很高,讨论相当积极,且都紧扣主题。讨论过读书、歌曲、推荐app、推荐公众号、用方言读诗、微信排版、情爱体验、唱K、创意方法、赚钱研究所、自媒体变现,等等。不知道诸位想过没,这么做有两点意义:微信里朋友多了之后,就没有时间去一一聊天了,而通过建群,不用你开口,群里的人相互聊,就可以一次对几十甚至上百人增加一些了解。通过大量的快闪,让我微信里的朋友有一个平台来玩,并且相互认识,这样就结成了一张网,运营中所谓的“粘性”其实就是这么回事。关于群的玩法,以前写过一篇《7个单词点爆你的社群》,这篇文章后来删除了,过段时间会补充些最新总结,再发出来,详细的可以到时看这一篇。9. 订阅号限于篇幅,这里不谈怎么做公众号,也不谈怎么运营。现在,我们到订阅列表里,可以长按一条订阅号,将其置顶,这样就省得你每次在大量的订阅号里去翻找。除了置顶,安卓手机还可以将公众号添加快捷方式到桌面,就像app一样分类管理,更方便。如下图所示。建议大家精简自己的订阅列表,订阅多其实看得少。我看的公众号太多,大多数是用来批量观察研究的。各个门类的优质公众号都有许多,这里先挑几个我比较中意的推荐,或许你会喜欢。10. 管理收藏每周清理一次聊天记录。我经常在私聊或者群聊里,回答一些人的问题,他人的问题往往会启发我梳理自己所知道的东西,或者启发我想到一些灵感。假如不及时整理,这些灵感就白白浪费了。所以,我会对重要的、大段的文字,添加到微信收藏中。刷朋友圈时,看到经典的文章,也添加到收藏中。有的文章,会被作者删除,或者比较敏感被强制删除,这个时候可以保存到为知笔记里,即便删除了,就在为知笔记里依然可以查看全文。每个月清理一次收藏。先登录微信电脑版,长按,每一批最多选择30条,发送给自己,发完这一批,继续选择下面30条,直到全部发完,然后删除所有收藏。到电脑版上查看刚才发送的全部收藏,全选,把文字全部复制粘贴到为知笔记中,然后建立一个Excel,右击每篇文章,复制网址粘贴到表格中。2016年初,曾开设“炼金工作组?第一期”,在朋友圈招募了30多位小伙伴,利用一周时间,一起整理了2015年我收藏的文章,最后梳理了7394篇文章,添加了对应的文章链接,其中高亮了1324篇经典文章,提取了6869个标题关键词,筛出了3598个公众号,添加了对应的公众号ID、功能介绍和搜狗微信链接。为什么不放在收藏里,要导出来呢?因为放在收藏里,大多最后都不会看的,所以我会把各处的碎片笔记统一汇集到为知笔记,再分类整理。而文章用Excel管理,方便添加更多信息、学习和写作时查找参考素材、按不同类别筛选。11. 获得长期收益如此便种好了“知识树”,也炼成了“方法丹”,建立了属于自己的“资料库”。面对扑面而来的信息,许多人在焦虑之下直接关闭朋友圈,或者对微信产生反感。其实,大可不必如此,新的信息消费时代已经到来,你躲得了微信,躲不了所有平台;躲得了一时,躲不了未来。既然躲不了,倒不如面对这种现状,善用它们,挖掘出一些书本里没有的信息和机会。以上的方法,不仅适用于微信,也适用其他场景,比如微博、知乎、豆瓣、简书、其他网站与app、Kindle 阅读、看纸质书等。《易经》所谓“变易、简易、不易”。变易的是现象,是海量碎片化信息;简易的是模型,是方法论;不易的是客观规律,是道。《易经》就像古代的编程,把现实世界中的种种事物抽象化,用阴阳作为代码,来描述成六十四卦的模型,相反相成的规律就是其中的算法。有的复杂实际是简单,有的简单实际是复杂。这么做虽然看似复杂,但是体系建立之后,不管是找资料、写东西、作图,还是思考、做事,都会随手拈来,方便而快速。孰快孰慢,不是看一时的麻烦,而是看其长期的收益。
扫描,分享朋友圈
|后参与评论
该用户邮箱不存在,请重试!
请输入密码!
资料更新成功!
还可以输入300字
您为什么要举报此信息?
请输入举报内容
关注微信,一起数字进行时
手机扫一扫,下载数英APP
手机扫一扫,下载数英APP扫一扫,上赶集群组
扫码使用“赶集群组”
交友&&寻爱&&找工作
聊天&&聚会&&不寂寞
请走转转担保交易,喜欢的话就赶快联系我吧。
其他人还在看
其他人还在看
电视机品牌:
电视机类型:
二手电视机相关:您当前的位置: &&
&& 详细信息
我要收个 收微信号 不用的号 闲置的号满两年的号80一个
注册满一年的号50一个
半年号40一...
类  别:
二手手机 - iphone
成  色:
价  格:
来  源:
联 系 人:
电子邮箱:
联系电话:
我要收个 收微信号 不用的号 闲置的号满两年的号80一个
注册满一年的号50一个
半年号40一个 满2个月的号20一个 有意出售的加我微信 扫一扫二维码
联系我时请说明是在璧山在线看到的……
同城交易请当面进行,以免造成损失。外地交易信息或者超低价商品请慎重,谨防上当受骗。
赞助商广告
您没有[],将以匿名方式留言(*回复200字以内)
二手交易温馨提示
不要急于将钱汇入对方账户尽量当面交易
本站发布的资讯、产品及服务均系用户自行发布,本站对其合法性概不负责亦不承担任何法律责任。
最新二手信息
地址:重庆璧山区璧城街道文星路318号 邮编:402760
Copyright & &重庆易捷广告传媒有限公司 版权所有&&技术支持:
分类小帮手
本站客服帮助从无到有:微信后台系统的演进之路
声明:本文首发于微信官方公众号WeChat TechPower(wechattechpower),CSDN获首家授权转载,如需转载请联系微信官方。
从无到有 微信正式发布。这一天距离微信项目启动日约为2个月。就在这2个月里,微信从无到有,大家可能会好奇这期间微信后台做的最重要的事情是什么?我想应该是以下三件事:1. 确定了微信的消息模型微信起初定位是一个通讯工具,作为通讯工具最核心的功能是收发消息。微信团队源于广硏团队,消息模型跟邮箱的邮件模型也很有渊源,都是存储转发。图 1 微信消息模型图1展示了这一消息模型,消息被发出后,会先在后台临时存储;为使接收者能更快接收到消息,会推送消息通知给接收者;最后客户端主动到服务器收取消息。2. 制定了数据同步协议由于用户的帐户、联系人和消息等数据都在服务器存储,如何将数据同步到客户端就成了很关键的问题。为简化协议,我们决定通过一个统一的数据同步协议来同步用户所有的基础数据。最初的方案是客户端记录一个本地数据的快照(Snapshot),需要同步数据时,将Snapshot带到服务器,服务器通过计算Snapshot与服务器数据的差异,将差异数据发给客户端,客户端再保存差异数据完成同步。不过这个方案有两个问题:一是Snapshot会随着客户端数据的增多变得越来越大,同步时流量开销大;二是客户端每次同步都要计算Snapshot,会带来额外的性能开销和实现复杂度。几经讨论后,方案改为由服务计算Snapshot,在客户端同步数据时跟随数据一起下发给客户端,客户端无需理解Snapshot,只需存储起来,在下次数据同步数据时带上即可。同时,Snapshot被设计得非常精简,是若干个Key-Value的组合,Key代表数据的类型,Value代表给到客户端的数据的最新版本号。Key有三个,分别代表:帐户数据、联系人和消息。这个同步协议的一个额外好处是客户端同步完数据后,不需要额外的ACK协议来确认数据收取成功,同样可以保证不会丢数据:只要客户端拿最新的Snapshot到服务器做数据同步,服务器即可确认上次数据已经成功同步完成,可以执行后续操作,例如清除暂存在服务的消息等等。此后,精简方案、减少流量开销、尽量由服务器完成较复杂的业务逻辑、降低客户端实现的复杂度就作为重要的指导原则,持续影响着后续的微信设计开发。记得有个比较经典的案例是:我们在微信1.2版实现了群聊功能,但为了保证新旧版客户端间的群聊体验,我们通过服务器适配,让1.0版客户端也能参与群聊。3. 定型了后台架构图 2 微信后台系统架构微信后台使用三层架构:接入层、逻辑层和存储层。
接入层提供接入服务,包括长连接入服务和短连接入服务。长连接入服务同时支持客户端主动发起请求和服务器主动发起推送;短连接入服务则只支持客户端主动发起请求。逻辑层包括业务逻辑服务和基础逻辑服务。业务逻辑服务封装了业务逻辑,是后台提供给微信客户端调用的API。基础逻辑服务则抽象了更底层和通用的业务逻辑,提供给业务逻辑服务访问。存储层包括数据访问服务和数据存储服务。数据存储服务通过MySQL和SDB(广硏早期后台中广泛使用的Key-Table数据存储系统)等底层存储系统来持久化用户数据。数据访问服务适配并路由数据访问请求到不同的底层数据存储服务,面向逻辑层提供结构化的数据服务。比较特别的是,微信后台每一种不同类型的数据都使用单独的数据访问服务和数据存储服务,例如帐户、消息和联系人等等都是独立的。微信后台主要使用C++。后台服务使用Svrkit框架搭建,服务之间通过同步RPC进行通讯。图 3 Svrkit 框架Svrkit是另一个广硏后台就已经存在的高性能RPC框架,当时尚未广泛使用,但在微信后台却大放异彩。作为微信后台基础设施中最重要的一部分,Svrkit这几年一直不断在进化。我们使用Svrkit构建了数以千计的服务模块,提供数万个服务接口,每天RPC调用次数达几十万亿次。这三件事影响深远,乃至于5年后的今天,我们仍继续沿用最初的架构和协议,甚至还可以支持当初1.0版的微信客户端。这里有一个经验教训——运营支撑系统真的很重要。第一个版本的微信后台是仓促完成的,当时只是完成了基础业务功能,并没有配套的业务数据统计等等。我们在开放注册后,一时间竟没有业务监控页面和数据曲线可以看,注册用户数是临时从数据库统计的,在线数是从日志里提取出来的,这些数据通过每个小时运行一次的脚本(这个脚本也是当天临时加的)统计出来,然后自动发邮件到邮件组。还有其他各种业务数据也通过邮件进行发布,可以说邮件是微信初期最重要的数据门户。 当天最高并发在线数是 491,而今天这个数字是4亿。小步慢跑在微信发布后的4个多月里,我们经历了发布后火爆注册的惊喜,也经历了随后一直不温不火的困惑。这一时期,微信做了很多旨在增加用户好友量,让用户聊得起来的功能。打通腾讯微博私信、群聊、工作邮箱、QQ/邮箱好友推荐等等。对于后台而言,比较重要的变化就是这些功能催生了对异步队列的需求。例如,微博私信需要跟外部门对接,不同系统间的处理耗时和速度不一样,可以通过队列进行缓冲;群聊是耗时操作,消息发到群后,可以通过异步队列来异步完成消息的扩散写等等。图 4 单聊和群聊消息发送过程图4是异步队列在群聊中的应用。微信的群聊是写扩散的,也就是说发到群里的一条消息会给群里的每个人都存一份(消息索引)。为什么不是读扩散呢?有两个原因:群的人数不多,群人数上限是10(后来逐步加到20、40、100,目前是500),扩散的成本不是太大,不像微博,有成千上万的粉丝,发一条微博后,每粉丝都存一份的话,一个是效率太低,另一个存储量也会大很多;
消息扩散写到每个人的消息存储(消息收件箱)后,接收者到后台同步数据时,只需要检查自己收件箱即可,同步逻辑跟单聊消息是一致的,这样可以统一数据同步流程,实现起来也会很轻量。
异步队列作为后台数据交互的一种重要模式,成为了同步RPC服务调用之外的有力补充,在微信后台被大量使用。快速成长微信的飞速发展是从2.0版开始的,这个版本发布了语音聊天功能。之后微信用户量急速增长,2011.5用户量破100万、2011.7 用户量破1000万、2012.3 注册用户数突破1亿。伴随着喜人成绩而来的,还有一堆幸福的烦恼。业务快速迭代的压力
微信发布时功能很简单,主要功能就是发消息。不过在发语音之后的几个版本里迅速推出了手机通讯录、QQ离线消息、查看附近的人、摇一摇、漂流瓶和朋友圈等等功能。有个广为流传的关于朋友圈开发的传奇——朋友圈历经4个月,前后做了30多个版本迭代才最终成型。其实还有一个鲜为人知的故事——那时候因为人员比较短缺,朋友圈后台长时间只有1位开发人员。
后台稳定性的要求
用户多了,功能也多了,后台模块数和机器量在不断翻番,紧跟着的还有各种故障。
帮助我们顺利度过这个阶段的,是以下几个举措:
1. 极简设计虽然各种需求扑面而来,但我们每个实现方案都是一丝不苟完成的。实现需求最大的困难不是设计出一个方案并实现出来,而是需要在若干个可能的方案中,甄选出最简单实用的那个。
这中间往往需要经过几轮思考——讨论——推翻的迭代过程,谋定而后动有不少好处,一方面可以避免做出华而不实的过度设计,提升效率;另一方面,通过详尽的讨论出来的看似简单的方案,细节考究,往往是可靠性最好的方案。2. 大系统小做逻辑层的业务逻辑服务最早只有一个服务模块(我们称之为mmweb),囊括了所有提供给客户端访问的API,甚至还有一个完整的微信官网。这个模块架构类似Apache,由一个CGI容器(CGIHost)和若干CGI组成(每个CGI即为一个API),不同之处在于每个CGI都是一个动态库so,由CGIHost动态加载。在mmweb的CGI数量相对较少的时候,这个模块的架构完全能满足要求,但当功能迭代加快,CGI量不断增多之后,开始出现问题:1) 每个CGI都是动态库,在某些CGI的共用逻辑的接口定义发生变化时,不同时期更新上线的CGI可能使用了不同版本的逻辑接口定义,会导致在运行时出现诡异结果或者进程crash,而且非常难以定位;
2) 所有CGI放在一起,每次大版本发布上线,从测试到灰度再到全面部署完毕,都是一个很漫长的过程,几乎所有后台开发人员都会被同时卡在这个环节,非常影响效率;
3) 新增的不太重要的CGI有时稳定性不好,某些异常分支下会crash,导致CGIHost进程无法服务,发消息这些重要CGI受影响没法运行。于是我们开始尝试使用一种新的CGI架构——Logicsvr。Logicsvr基于Svrkit框架。将Svrkit框架和CGI逻辑通过静态编译生成可直接使用HTTP访问的Logicsvr。我们将mmweb模块拆分为8个不同服务模块。拆分原则是:实现不同业务功能的CGI被拆到不同Logicsvr,同一功能但是重要程度不一样的也进行拆分。例如,作为核心功能的消息收发逻辑,就被拆为3个服务模块:消息同步、发文本和语音消息、发图片和视频消息。每个Logicsvr都是一个独立的二进制程序,可以分开部署、独立上线。时至今日,微信后台有数十个Logicsvr,提供了数百个CGI服务,部署在数千台服务器上,每日客户端访问量几千亿次。除了API服务外,其他后台服务模块也遵循“大系统小做”这一实践准则,微信后台服务模块数从微信发布时的约10个模块,迅速上涨到数百个模块。3. 业务监控这一时期,后台故障很多。比故障更麻烦的是,因为监控的缺失,经常有些故障我们没法第一时间发现,造成故障影响面被放大。监控的缺失一方面是因为在快速迭代过程中,重视功能开发,轻视了业务监控的重要性,有故障一直是兵来将挡水来土掩;另一方面是基础设施对业务逻辑监控的支持度较弱。基础设施提供了机器资源监控和Svrkit服务运行状态的监控。这个是每台机器、每个服务标配的,无需额外开发,但是业务逻辑的监控就要麻烦得多了。当时的业务逻辑监控是通过业务逻辑统计功能来做的,实现一个监控需要4步:1) 申请日志上报资源;
2) 在业务逻辑中加入日志上报点,日志会被每台机器上的agent收集并上传到统计中心;
3) 开发统计代码;
4) 实现统计监控页面。可以想象,这种费时费力的模式会反过来降低开发人员对加入业务监控的积极性。于是有一天,我们去公司内的标杆——即通后台(QQ后台)取经了,发现解决方案出乎意料地简单且强大:3.1) 故障报告之前每次故障后,是由QA牵头出一份故障报告,着重点是对故障影响的评估和故障定级。新的做法是每个故障不分大小,开发人员需要彻底复盘故障过程,然后商定解决方案,补充出一份详细的技术报告。这份报告侧重于:如何避免同类型故障再次发生、提高故障主动发现能力、缩短故障响应和处理过程。3.2) 基于 ID-Value 的业务无关的监控告警体系图 5 基于 ID-Value 的监控告警体系监控体系实现思路非常简单,提供了2个API,允许业务代码在共享内存中对某个监控ID进行设置Value或累加Value的功能。每台机器上的Agent会定时将所有ID-Value上报到监控中心,监控中心对数据汇总入库后就可以通过统一的监控页面输出监控曲线,并通过预先配置的监控规则产生报警。对于业务代码来说,只需在要被监控的业务流程中调用一下监控API,并配置好告警条件即可。这就极大地降低了开发监控报警的成本,我们补全了各种监控项,让我们能主动及时地发现问题。新开发的功能也会预先加入相关监控项,以便在少量灰度阶段就能直接通过监控曲线了解业务是否符合预期。4. KVSvr微信后台每个存储服务都有自己独立的存储模块,是相互独立的。每个存储服务都有一个业务访问模块和一个底层存储模块组成。业务访问层隔离业务逻辑层和底层存储,提供基于RPC的数据访问接口;底层存储有两类:SDB和MySQL。SDB适用于以用户UIN(uint32_t)为Key的数据存储,比方说消息索引和联系人。优点是性能高,在可靠性上,提供基于异步流水同步的Master-Slave模式,Master故障时,Slave可以提供读数据服务,无法写入新数据。由于微信账号为字母+数字组合,无法直接作为SDB的Key,所以微信帐号数据并非使用SDB,而是用MySQL存储的。MySQL也使用基于异步流水复制的Master-Slave模式。第1版的帐号存储服务使用Master-Slave各1台。Master提供读写功能,Slave不提供服务,仅用于备份。当Master有故障时,人工切读服务到Slave,无法提供写服务。为提升访问效率,我们还在业务访问模块中加入了memcached提供Cache服务,减少对底层存储访问。第2版的帐号存储服务还是Master-Slave各1台,区别是Slave可以提供读服务,但有可能读到脏数据,因此对一致性要求高的业务逻辑,例如注册和登录逻辑只允许访问Master。当Master有故障时,同样只能提供读服务,无法提供写服务。
第3版的帐号存储服务采用1个Master和多个Slave,解决了读服务的水平扩展能力。第4版的帐号服务底层存储采用多个Master-Slave组,每组由1个Master和多个Slave组成,解决了写服务能力不足时的水平扩展能力。最后还有个未解决的问题:单个Master-Slave分组中,Master还是单点,无法提供实时的写容灾,也就意味着无法消除单点故障。另外Master-Slave的流水同步延时对读服务有很大影响,流水出现较大延时会导致业务故障。于是我们寻求一个可以提供高性能、具备读写水平扩展、没有单点故障、可同时具备读写容灾能力、能提供强一致性保证的底层存储解决方案,最终KVSvr应运而生。KVSvr使用基于Quorum的分布式数据强一致性算法,提供Key-Value/Key-Table模型的存储服务。传统Quorum算法的性能不高,KVSvr创造性地将数据的版本和数据本身做了区分,将Quorum算法应用到数据的版本的协商,再通过基于流水同步的异步数据复制提供了数据强一致性保证和极高的数据写入性能,另外KVSvr天然具备数据的Cache能力,可以提供高效的读取性能。KVSvr一举解决了我们当时迫切需要的无单点故障的容灾能力。除了第5版的帐号服务外,很快所有SDB底层存储模块和大部分MySQL底层存储模块都切换到KVSvr。随着业务的发展,KVSvr也不断在进化着,还配合业务需要衍生出了各种定制版本。现在的KVSvr仍然作为核心存储,发挥着举足轻重的作用。平台化2011.8 深圳举行大运会。微信推出“微信深圳大运志愿者服务中心”服务号,微信用户可以搜索“szdy”将这个服务号加为好友,获取大会相关的资讯。当时后台对“szdy”做了特殊处理,用户搜索时,会随机返回“szdy01”,“szdy02”,…,“szdy10”这10个微信号中的1个,每个微信号背后都有一个志愿者在服务。2011.9 “微成都”落户微信平台,微信用户可以搜索“wechengdu”加好友,成都市民还可以在“附近的人”看到这个号,我们在后台给这个帐号做了一些特殊逻辑,可以支持后台自动回复用户发的消息。这种需求越来越多,我们就开始做一个媒体平台,这个平台后来从微信后台分出,演变成了微信公众平台,独立发展壮大,开始了微信的平台化之路。除微信公众平台外,微信后台的外围还陆续出现了微信支付平台、硬件平台等等一系列平台。图 6 微信平台走出国门微信走出国门的尝试开始于3.0版本。从这个版本开始,微信逐步支持繁体、英文等多种语言文字。不过,真正标志性的事情是第一个海外数据中心的投入使用。1. 海外数据中心海外数据中心的定位是一个自治的系统,也就是说具备完整的功能,能够不依赖于国内数据中心独立运作。1) 多数据中心架构图 7 多数据中心架构系统自治对于无状态的接入层和逻辑层来说很简单,所有服务模块在海外数据中心部署一套就行了。但是存储层就有很大麻烦了——我们需要确保国内数据中心和海外数据中心能独立运作,但不是两套隔离的系统各自部署,各玩各的,而是一套业务功能可以完全互通的系统。因此我们的任务是需要保证两个数据中心的数据一致性,另外Master-Master架构是个必选项,也即两个数据中心都需要可写。2) Master-Master 存储架构Master-Master架构下数据的一致性是个很大的问题。两个数据中心之间是个高延时的网络,意味着在数据中心之间直接使用Paxos算法、或直接部署基于Quorum的KVSvr等看似一劳永逸的方案不适用。最终我们选择了跟Yahoo!的PNUTS系统类似的解决方案,需要对用户集合进行切分,国内用户以国内上海数据中心为Master,所有数据写操作必须回到国内数据中心完成;海外用户以海外数据中心为Master,写操作只能在海外数据中心进行。从整体存储上看,这是一个Master-Master的架构,但细到一个具体用户的数据,则是Master-Slave模式,每条数据只能在用户归属的数据中心可写,再异步复制到其他数据中心。图 8 多数据中心的数据Master-Master架构3) 数据中心间的数据一致性这个Master-Master架构可以在不同数据中心间实现数据最终一致性。如何保证业务逻辑在这种数据弱一致性保证下不会出现问题?这个问题可以被分解为2个子问题:用户访问自己的数据
用户可以满世界跑,那是否允许用户就近接入数据中心就对业务处理流程有很大影响。如果允许就近接入,同时还要保证数据一致性不影响业务,就意味着要么用户数据的Master需要可以动态的改变;要么需要对所有业务逻辑进行仔细梳理,严格区分本数据中心和跨数据中心用户的请求,将请求路由到正确的数据中心处理。
考虑到上述问题会带来很高昂的实现和维护的复杂度,我们限制了每个用户只能接入其归属数据中心进行操作。如果用户发生漫游,其漫游到的数据中心会自动引导用户重新连回归属数据中心。
这样用户访问自己数据的一致性问题就迎刃而解了,因为所有操作被限制在归属数据中心内,其数据是有强一致性保证的。此外,还有额外的好处:用户自己的数据(如:消息和联系人等)不需要在数据中心间同步,这就大大降低了对数据同步的带宽需求。
用户访问其他用户的数据
由于不同数据中心之间业务需要互通,用户会使用到其他数据中心用户创建的数据。例如,参与其他数据中心用户创建的群聊,查看其他数据中心用户的朋友圈等。
仔细分析后可以发现,大部分场景下对数据一致性要求其实并不高。用户稍迟些才见到自己被加入某个其他数据中心用户建的群、稍迟些才见到某个好友的朋友圈动态更新其实并不会带来什么问题。在这些场景下,业务逻辑直接访问本数据中心的数据。
当然,还是有些场景对数据一致性要求很高。比方说给自己设置微信号,而微信号是需要在整个微信帐号体系里保证唯一的。我们提供了全局唯一的微信号申请服务来解决这一问题,所有数据中心通过这个服务申请微信号。这种需要特殊处置的场景极少,不会带来太大问题。
4) 可靠的数据同步数据中心之间有大量的数据同步,数据是否能够达到最终一致,取决于数据同步是否可靠。为保证数据同步的可靠性,提升同步的可用性,我们又开发一个基于Quorum算法的队列组件,这个组件的每一组由3机存储服务组成。与一般队列的不同之处在于,这个组件对队列写入操作进行了大幅简化,3机存储服务不需要相互通讯,每个机器上的数据都是顺序写,执行写操作时在3机能写入成功2份即为写入成功;若失败,则换另外一组再试。因此这个队列可以达到极高的可用性和写入性能。每个数据中心将需要同步的数据写入本数据中心的同步队列后,由其他数据中心的数据重放服务将数据拉走并进行重放,达到数据同步的目的。2. 网络加速海外数据中心建设周期长,投入大,微信只在香港和加拿大有两个海外数据中心。但世界那么大,即便是这两个数据中心,也还是没法辐射全球,让各个角落的用户都能享受到畅快的服务体验。通过在海外实际对比测试发现,微信客户端在发消息等一些主要使用场景与主要竞品有不小的差距。为此,我们跟公司的架构平台部、网络平台部和国际业务部等兄弟部门一起合作,围绕海外数据中心,在世界各地精心选址建设了数十个POP点(包括信令加速点和图片CDN网络)。另外,通过对移动网络的深入分析和研究,我们还对微信的通讯协议做了大幅优化。微信最终在对比测试中赶上并超过了主要的竞品。精耕细作1. 三园区容灾 微信发生了有史以来最大规模的故障,消息收发和朋友圈等服务出现长达5个小时的故障,故障期间消息量跌了一半。故障的起因是上海数据中心一个园区的主光纤被挖断,近2千台服务器不可用,引发整个上海数据中心(当时国内只有这一个数据中心)的服务瘫痪。故障时,我们曾尝试把接入到故障园区的用户切走,但收效甚微。虽然数百个在线模块都做了容灾和冗余设计,单个服务模块看起来没有单点故障问题;但整体上看,无数个服务实例散布在数据中心各个机房的8千多台服务器内,各服务RPC调用复杂,呈网状结构,再加上缺乏系统级的规划和容灾验证,最终导致故障无法主动恢复。在此之前,我们知道单个服务出现单机故障不影响系统,但没人知道2千台服务器同时不可用时,整个系统会出现什么不可控的状况。其实在这个故障发生之前3个月,我们已经在着手解决这个问题。当时上海数据中心内网交换机异常,导致微信出现一个出乎意料的故障,在13分钟的时间里,微信消息收发几乎完全不可用。在对故障进行分析时,我们发现一个消息系统里一个核心模块三个互备的服务实例都部署在同一机房。该机房的交换机故障导致这个服务整体不可用,进而消息跌零。这个服务模块是最早期(那个时候微信后台规模小,大部分后台服务都部署在一个数据园区里)的核心模块,服务基于3机冗余设计,年复一年可靠地运行着,以至于大家都完全忽视了这个问题。为解决类似问题,三园区容灾应运而生,目标是将上海数据中心的服务均匀部署到3个物理上隔离的数据园区,在任意单一园区整体故障时,微信仍能提供无损服务。1) 同时服务传统的数据中心级灾备方案是“两地三中心”,即同城有两个互备的数据中心,异地再建设一个灾备中心,这三个数据中心平时很可能只有一个在提供在线服务,故障时再将业务流量切换到其他数据中心。这里的主要问题是灾备数据中心无实际业务流量,在主数据中心故障时未必能正常切换到灾备中心,并且在平时大量的备份资源不提供服务,也会造成大量的资源浪费。
三园区容灾的核心是三个数据园区同时提供服务,因此即便某个园区整体故障,那另外两个园区的业务流量也只会各增加50%。反过来说,只需让每个园区的服务器资源跑在容量上限的2/3,保留1/3的容量即可提供无损的容灾能力,而传统“两地三中心”则有多得多的服务器资源被闲置。此外,在平时三个园区同时对外服务,因此我们在故障时,需要解决的问题是“怎样把业务流量切到其他数据园区?”,而不是“能不能把业务流量切到其他数据园区?”,前者显然是更容易解决的一个问题。2) 数据强一致三园区容灾的关键是存储模块需要把数据均匀分布在3个数据园区,同一份数据要在不同园区有2个以上的一致的副本,这样才能保证任意单一园区出灾后,可以不中断地提供无损服务。由于后台大部分存储模块都使用KVSvr,这样解决方案也相对简单高效——将KVSvr的每1组机器都均匀部署在3个园区里。3) 故障时自动切换三园区容灾的另一个难点是对故障服务的自动屏蔽和自动切换。即要让业务逻辑服务模块能准确识别出某些下游服务实例已经无法访问,然后迅速自动切到其他服务实例,避免被拖死。我们希望每个业务逻辑服务可以在不借助外部辅助信息(如建设中心节点,由中心节点下发各个业务逻辑服务的健康状态)的情况下,能自行决策迅速屏蔽掉有问题的服务实例,自动把业务流量分散切到其他服务实例上。另外,我们还建设了一套手工操作的全局屏蔽系统,可以在大型网络故障时,由人工介入屏蔽掉某个园区所有的机器,迅速将业务流量分散到其他两个数据园区。4) 容灾效果检验三园区容灾是否能正常发挥作用还需要进行实际的检验,我们在上海数据中心和海外的香港数据中心完成三园区建设后,进行了数次实战演习,屏蔽单一园区上千台服务,检验容灾效果是否符合预期。特别地,为了避免随着时间的推移某个核心服务模块因为某次更新就不再支持三园区容灾了,我们还搭建了一套容灾拨测系统,每天对所有服务模块选取某个园区的服务主动屏蔽掉,自动检查服务整体失败量是否发生变化,实现对三园区容灾效果的持续检验。2. 性能优化之前我们在业务迅速发展之时,优先支撑业务功能快速迭代,性能问题无暇兼顾,比较粗放的贯彻了“先扛住再优化”的海量之道。2014年开始大幅缩减运营成本,性能优化就被提上了日程。我们基本上对大部分服务模块的设计和实现都进行了重新review,并进行了有针对性的优化,这还是可以节约出不少机器资源的。但更有效的优化措施是对基础设施的优化,具体的说是对Svrkit框架的优化。Svrkit框架被广泛应用到几乎所有服务模块,如果框架层面能把机器资源使用到极致,那肯定是事半功倍的。结果还真的可以,我们在基础设施里加入了对协程的支持,重点是这个协程组件可以不破坏原来的业务逻辑代码结构,让我们原有代码中使用同步RPC调用的代码不做任何修改,就可以直接通过协程异步化。Svrkit框架直接集成了这个协程组件,然后美好的事情发生了,原来单实例最多提供上百并发请求处理能力的服务,在重编上线后,转眼间就能提供上千并发请求处理能力。Svrkit框架的底层实现在这一时期也做了全新的实现,服务的处理能力大幅提高。3. 防雪崩我们一直以来都不太担心某个服务实例出现故障,导致这个实例完全无法提供服务的问题,这个在后台服务的容灾体系里可以被处理得很好。最担心的是雪崩:某个服务因为某些原因出现过载,导致请求处理时间被大大拉长。于是服务吞吐量下降,大量请求积压在服务的请求队列太长时间了,导致访问这个服务的上游服务出现超时。更倒霉的是上游服务还经常会重试,然后这个过载的服务仅有的一点处理能力都在做无用功(即处理完毕返回结果时,调用端都已超时放弃),终于这个过载的服务彻底雪崩了。最糟糕的情况是上游服务每个请求都耗时那么久,雪崩顺着RPC调用链一级级往上传播,最终单个服务模块的过载会引发大批服务模块的雪崩。我们在一番勒紧裤腰带节省机器资源、消灭低负载机器后,所有机器的负载都上来了,服务过载变得经常发生了。解决这一问题的有力武器是Svrkit框架里的具有QoS保障的FastReject机制,可以快速拒绝掉超过服务自身处理能力的请求,即使在过载时,也能稳定地提供有效输出。4. 安全加固近年,互联网安全事件时有发生,各种拖库层出不穷。为保护用户的隐私数据,我们建设了一套数据保护系统——全程票据系统。其核心方案是,用户登录后,后台会下发一个票据给客户端,客户端每次请求带上票据,请求在后台服务的整个处理链条中,所有对核心数据服务的访问,都会被校验票据是否合法,非法请求会被拒绝,从而保障用户隐私数据只能用户通过自己的客户端发起操作来访问。新的挑战1. 资源调度系统微信后台有成千的服务模块,部署在全球数以万计的服务器上,一直依靠人工管理。此外,微信后台主要是提供实时在线服务,每天的服务器资源占用在业务高峰和低谷时相差很大,在业务低谷时计算资源被白白浪费;另一方面,很多离线的大数据计算却受制于计算资源不足,难以高效完成。我们正在实验和部署的资源调度系统(Yard)可以把机器资源的分配和服务的部署自动化、把离线任务的调度自动化,实现了资源的优化配置,在业务对服务资源的需求有变化时,能更及时、更弹性地自动实现服务的重新配置与部署。2. 高可用存储基于Quorum算法的KVSvr已经实现了强一致性、高可用且高性能的Key-Value/Key-Table存储。最近,微信后台又诞生了基于Paxos算法的另一套存储系统,首先落地的是PhxSQL,一个支持完整MySQL功能,又同时具备强一致性、高可用和高性能的SQL存储。(责编/钱曙光)作者介绍:
微信高级工程师,微信接入系统负责人。一直从事后台系统设计开发,早期涉足传统行业软件,后投身互联网。作为微信最早的后台开发之一,见证了微信从零开始到逐渐发展壮大的过程。
「CSDN 高级架构师群」,内有百位知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008入群,备注姓名+公司+职位。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 一年以上微信号多少钱 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信