当前位置: 首页 > 编程日记 > 正文

“搞垮” 微博服务器?每天上亿条用户推送是如何做到的

640?wx_fmt=jpeg

记者 | 琥珀

出品 | AI科技大本营(ID:rgznai100)


想必国内绝大多数网民都有新浪微博的用户账号。据最新数据显示,2018 年第四季度财报,微博月活跃用户突破 4.62 亿,连续三年增长 7000 万 +;微博垂直领域数量扩大至 60 个,月阅读量过百亿领域达 32 个。毫无疑问,从 2009 年 8 月上线至今,微博已是当前业界领先的中文社交媒体,成绩斐然。


当年有一句话叫做 “围观就是力量,舆论改变中国”,明星绯闻、爆炸性新闻等众多热门事件从微博发出传遍全网。直到如今,微博也上线了不少新功能如 “热搜” 、“新鲜事”、“故事” 等,更加强调 “社交”、“全媒体”、“垂直领域” 发展,进一步满足社交属性下人们对获取实时、一手新闻资源的需求。


Push(消息推送)的作用则在于提高用户活跃度和粘性,提高用户留存率,进而进一步提高产品功能和用户参与度。如国内外重大事件的提醒、领域内大事件的提醒、关注人或好友的重要消息推送、感兴趣内容的消息提醒等方式,可引导用户感兴趣的内容打开应用。


然而,另一个事实是,此前频频 “吐槽” 的应对热门事件的流量暴增导致的微博服务器崩溃问题,无论是热搜消息,还是信息流方面,均受到了极大的挑战。随着用户数量和消息并发量的不断上涨,基于移动端的消息推送服务器性能和稳定性也需要经受非常大的考验。例如,在排序方面,微博平台每天的推送量可达到几个亿的规模,如果全部采用全量计算,对服务器的资源消耗会过大,微博团队采用了分片批量计算的方式。


近期,微博研发中心技术专家齐彦杰在接受 AI 科技大本营采访时表示,“微博一直致力于打造基于用户关系的社交媒体平台,让用户及时获取好友动态,随时随地发现新鲜事。如何不错过重要的信息?让用户每 5 分钟去刷新自己的关注列表显然并不现实,更高效的方式是通过系统推送进行消息提醒,但推送是一个强打扰的行为,如何做一个既不过分打扰用户,又能让用户开心吃瓜的 Push 推荐系统,就是一件很有意思的事情了。”


640?wx_fmt=png

齐彦杰,微博研发中心技术专家


在 5 月 25 日 - 5 月 27 日杭州举办的 CTA 大会(官网:https://dwz.cn/iSZ7BQUR)上,齐彦杰将作为机器学习论坛的演讲嘉宾,向大家介绍微博 Push 系统的发展历程,如何利用机器学习进行热点挖掘、博文标注,以及个性化推荐系统的模型升级之路。


机器学习在微博的落地


实际上,微博一步步进化的背后离不开平台技术研发团队在新技术能力上的持续提升。在齐彦杰看来,“微博非常重视新技术的跟进与落地,内部团队做了大量工作。现在也非常注重对外的交流,每年会参与一些比较重要的会议。”


AI 科技大本营:在过去几年,内容推荐和用户增长领域呈现出了哪些比较突出的技术或应用?与过去传统手段有哪些区别和联系?


齐彦杰:过去几年,技术的发展可以说是一日千里,快得令人震惊。如果大家平常关注会议或比赛,会发现每年好的论文或解决方案,进步非常大。而工业界也非常努力,不断提升产品效果,让用户体验越来越好。


列举这些就是想说明,如果论年计,突出的技术也会变得不突出,因为发展太快了。仅仅在模型排序方面,比如几年前 LR + 超大规模特征还是排序标配,后来演变为了 FM+,直到现在则是 Deep+,不得不说技术一直在前进。但不变的是,更加有效地利用数据,通过计算量的提升,提高模型的准确率,服务好用户的个性化需求。


AI 科技大本营:您认为基于微博当前的技术能力,在完成精准、快速个性化推送的过程中,面临着哪些挑战?为什么机器学习方法能够适用于当前的问题解决?


齐彦杰:微博的数据是巨量的,用户行为也是极为丰富的,更别说博文中蕴含的形式、内容、情绪等复杂的信息,这是微博的优势,也是微博机器学习的挑战。如何去理解用户、理解内容,连接用户与用户、用户与内容?这些问题都需要 NLP、计算机视觉、图计算、排序模型等技术解决。也只有基于机器学习,通过超大规模数据的学习与抽象,才可以做到精准的个性化内容分发。


AI 科技大本营:您在之前的分享中,也提到 “博文质量、算法模型与分发效率共同决定了 Push 效果”,那么在您看来,微博用户类型繁多,关注的兴趣点更为广泛,在实践过程中,是如何根据用户画像进行更加精准的内容推荐?


齐彦杰:首先,博文的内容要丰富,满足个性化的需求一定要保障候选博文的范围足够广泛;然后,按需储备,根据用户画像能够知道用户对哪些内容有更大的需求,根据需求挖掘内容更能保障易消费物料的准确性与充足性;再通过丰富的召回方法和高效的排序模型进行推荐分发。


常用的推荐算法包括协同、向量、模型等。


AI 科技大本营:实际上微博文本短小、信息量少(有时还会涉黄、不健康、不适宜内容等信息),很难做到对文本内容进行细粒度表征。对此,在本文理解方面,团队有没有比较好的解决办法?


齐彦杰:这确实是一个很好的问题。前面我提到,用户理解和内容理解是痛点和难点,但也是机器学习在高速进步的领域,当前 NLP、计算机视觉方面的进步给了我们很好的支持,包括去年 BERT 模型的出现,Embedding 的实践,以及人脸识别、物体识别等,对于内容的表征都有很好的表现。


AI 科技大本营:不少人曾提到多模态融合的概念,对此您是如何看待的?在微博的相关业务中已经有实际的应用及成效了吗?


齐彦杰:这个问题和上一个问题可以联系起来看。因为现在随着个人硬件的提升,内容创作的形式也是在不断丰富,从最初的文本,到后来图片的增多,再到视频内容的涌现,甚至直播的加入,用户有太多的形式去表现自己的思想或情绪。单纯的文本维度已经不能完整的表征内容,所以多模态融合对于推荐系统的提高有很大的帮助。据我所知,有很多同事在做相关的内容,也有比较好的效果。


关于齐彦杰本人


据了解,齐彦杰最早服务于行业软件,2010 年进入互联网行业,一直从事爬虫、索引、检索、数据分析等方向的研发工作。后来用户获取信息的习惯逐渐从主动搜索转向被动接受,推荐系统进入高速发展时期,机器学习也开始了对整个社会进行改造。“机器学习最需要就是数据,不管是在数量上,还是在维度上,微博均拥有着巨量的公开语料及行为数据。我认为这是机器学习应用最好的土壤。” 后来,也就是 2016 年,齐彦杰加入新浪微博团队,目前在微博 UG 算法组主要负责 Push 相关方向的业务。


据他的观察,最近几年微博 Push 得到比较大的改造,完成了从编辑推荐向算法推荐、各业务独立到统一 Push 平台的升级,使用户在体验上有了很好的提升。


作为本次杭州 CTA 大会机器学习论坛的演讲嘉宾,齐彦杰表示:“技术的前进离不开先行者的经验,更离不开思想的撞击,期待 CTA2019 的技术盛宴。”


(*本文为 AI科技大本营原创文章,转载请联系原作者)


CTA核心技术及应用峰会


5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。


更多重磅嘉宾请识别海报二维码查看。目前会议7折预售票倒计时最后1天,点击阅读原文即刻抢购。添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。


640?wx_fmt=jpeg


推荐阅读


  • 焦虑的 BAT、不安的编程语言,揭秘程序员技术圈生存现状!

  • 千亿级照片,毫秒间匹配最佳结果,微软开源Bing搜索背后的关键算法

  • AI画家——毕业设计大杀器之Flask

  • 干货 | 超实用的PyTorch常用代码段合集

  • 60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网!

  • 厉害!女学生偷师男子学校,变身区块链开发工程师

  • 真壕!腾讯员工平均月薪 7 万!

  • 如何使用「番茄法」高效的写算法题?

  • 深扒! 币安被盗的7074.18枚比特币去哪了?

  • 这家公司的 IoT ,你可千万别低估!


640?wx_fmt=png


点击阅读原文,了解CTA核心技术及应用峰会

相关文章:

【Qt】Qt再学习(九):并发 QtConcurrent、QFuture、QFutureWatcher

1、QtConcurrent 该QtConcurrent命名空间提供高层次的API,使人们有可能不写使用低级线程原语的多线程程序,如互斥,读写锁,等待条件或信号。用QtConcurrent编写的程序会根据可用处理器内核的数量自动调整使用的线程数。这意味着,当将来在多核系统上部署时,今天编写的应用…

Git——如何将本地项目提交至远程仓库(第一次)

1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库。 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件(夹)。 g…

连接不上ftp解决方案

今天做linux下的ftp实验,总结一下解决连接不上ftp的解决方案:连接不上ftp解决方案:远程连接vsftp服务时,系统提示:用户没有权限访问。防火墙已经关闭,ftpusers和user_list文件已经删除了root用户。再使用命…

Python3破冰人工智能,你需要掌握一些数学方法

为什么要把数学建模与当今火热的人工智能放在一起?首先,数学建模在字面上可以分解成数学建模,即运用统计学、线性代数和积分学等数学知识,构建算法模型,通过模型来解决问题。数学建模往往是没有对与错,只有…

【Qt】QtCreator无法调试终端程序,启动报错SIGSTOP

1、问题描述 使用QtCreator调试终端程序时,因为收到信号SIGSTOP 而退出,无法调试程序。 2、解决方法 解决方式是,设置GDB不处理SIGSTOP , 在QtCreator中进入GDB命令设置窗口: Tools -> Options -> Debugger -…

Centos7 下 配置 rsync 以及 rsync+inotify 实时同步

Centos 7 下 配置 Rsync 以及 rsyncinotify 实时同步 rsync介绍 rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。 rsync的官方站点是htt…

网站排名下降的原因

做站长,都经常遇到网站被降权、排名下降、百度快照后退等问题,这些也是企业网站最常见的一些问题,企业网站为何会被降权,通常是什么原因造成的,下面我在这里分享下我在北大青鸟学到的一些知识,简单的和大家…

@程序员,Python 3还有哪些未Get的潜藏技能?| 技术头条

作者 | Vinko Kodžoman翻译 | Monanfei编辑 | 阿司匹林,Rachel【导读】在 Python 3 推出后,人们开始逐步将基于Python 2 的代码迁移至 Python 3 。但在迁移过程中,很多代码都未能使用到 Python 3 提供的新功能。本文作者介绍了相关功能的介绍…

【Qt】QtCreator中配置clang-format

1、安装clang-format sudo apt install clang-format2、添加插件Beautifier 在QtCreator–>Help–>About Plugins…中添加插件Beautifer,添加后要重启QtCreator ClangCodeModel是否需要不清楚?反正我添加了 3、配置Clang Format 在Tools --> Options…–>Beau…

DVWA提示Unable to connect to the database.

因为数据库更换了默认端口,所以得在DVWA也进行相应的设置,但是设置的位置错了,导致一直连接不上数据库。 后面看到注释才发现是这个设置仅限PostgreSQL/PGSQL使用,至于Mysql更换端口以后直接设置在server地址后面即可。 刷新一下&…

LINQ to SQL语句之 Count/Sum/Min/Max/Avg

Count/Sum/Min/Max/Avg操作符 适用场景:统计数据吧,比如统计一些数据的个数,求和,最小值,最大值,平均数。 Count 说明:返回集合中的元素个数,返回INT类型;不延迟。生成SQ…

【Qt】Qt再学习(十):鼠标拖拽(dragdrop)QGraphicsItem示例

1、QGraphicsItem实现拖拽源 实现方法,继承QGraphicsItem,重载鼠标按下、移动、释放事件处理函数 class ColorItem : public QGraphicsItem {... protected:void mousePressEvent(QGraphicsSceneMouseEvent *event) override;void mouseMoveEvent(QGraphicsSceneMouseEvent…

Java并发 -- JMM

文章基于jdk1.7,通过学习《Java并发编程的艺术》,对Java内存模型的理解 并发编程模型的两个关键问题 线程之间如何通信线程之间如何同步上面所说的线程指的是并发执行的活动实体。 线程之间的通信机制有两种:共享内存和消息传递 在共享内存的…

开源!mathAI手写拍照自动能解高数题,还不快试试?

作者 | 红色石头转载自 AI有道(id:redstonewill)让我们不妨先来盘点下从 2016 年起过去三年间 Google I/O 开发者大会亮相的重磅 AI 产品:深度好玩!文章开始红色石头先在草稿纸上写一道高数微积分题目给大家看看如何求解&#xf…

黄聪:IE6下用控制图片最大显示尺寸

div img { max-width:600px; width:600px; width:expression(document.body.clientWidth>600?"600px":"auto");overflow:hidden; } ◎ max-width:600px; 在IE7、FF等其他非IE浏览器下最大宽度为600px。但在IE6中无效。 ◎ width:600px; 在所有浏览器中…

漫画:有趣的海盗问题 (完整版)

————— 第二天 —————海盗分金币问题:有5个海盗,获得了100枚金币,于是他们要商量一个方法来分配金币。商议方式如下:1. 由5个海盗轮流提出分配方案。2. 如果超过半数海盗(包括提出者)同意该方案&…

【Qt】error: undefined reference to `vtable for MainWindow‘

1、问题描述 在写一个demo时,想尽量简单,就把MainWindow类的定义和实现都写在main.cpp中,结果编译时报错: main.cpp:-1: error: undefined reference to `vtable for MainWindow :-1: error: collect2.exe: error: ld returned 1 exit status2、原因分析 错误信息vtable…

Sql Server:创建用户并指定该用户只能看指定的视图

1,在sql server中选择好要操作的数据库2,--当前数据库创建角色 exec sp_addrole seeview--创建了一个数据库角色,名称为:[seeview]3,--分配视图权限 GRANT SELECT ON veiw TO [角色] --指定视图列表 指定seeview这个角色可以查看的视图表名称&#xff1…

10 款可以找回删除文件的好软件

电脑突然死机或者断电,硬盘数据丢失?U盘重要文件不小心删掉了? 电脑中毒,文件丢失或无法读取? 系统突然崩溃,重要文件丢失?使用计算机最怕的就是象以上这些突如其来的灾难性故障导致重要数据的丢失,误操作、计算机病毒的***和软、硬件故障等天灾人祸…

万万没想到,逛B站也能学编程了

作者 | 徐麟,某互联网公司数据分析狮转载自 | 数据森麟(id:shujusenlin)前言很多人提到B站,首先想到的就会是二次元或者鬼畜,上个月,我们公众号也发表了一篇关于B站鬼畜视频的文章:《…

【Qt】Qt再学习(十一):图形视图框架(Graphics View Framework)的一个小demo

1、简介 使用的主要类:QGraphicsTextItem、QGraphicsScene、QGraphicsView。 QGraphicsTextItem继承自QGraphicsObject,而QGraphicsObject继承自QObject和QGraphicsItem; QGraphicsItem可以是2D曲面上的图形项目,例如线条,矩形,文本甚至自定义项目,本例中演示的文本QGr…

国产海翼号水下滑翔机首次应用于北极科考

中国第九次北极科学考察队7月28日在白令海公海区域成功布放我国自主研发的“海翼”号水下滑翔机。这是我国自主研发的水下滑翔机首次在白令海布放,也是首次应用于中国北极科考。 北京时间28日5时23分,考察队队员们将“海翼”号水下滑翔机缓缓送入海中。在…

高性能网站性能优化与系统架构(ZT)

转载请保留出处:俊麟 Michael’s blog (http://space.itpub.net/7311285/viewspace-97) 我在CERNET做过拨号接入平台的搭建,而后在Yahoo&3721从事过搜索引擎前端开发,又在MOP处理过大型社区猫扑大杂烩的架构升级等工作,同时自…

非常全面的AutoML资源,看这个就够了!

整理 | Rachel责编 | 琥珀出品 | AI科技大本营(id:rgznai100)深度学习的发展促进了相关应用的涌现。但是,深度学习模型往往具有非常大的参数搜索空间,为了保证模型的效果,经常需要机器学习专家耗费大量的时…

【Qt】Qt再学习(十二):QGraphicsItem

1、简介 QGraphicsItem是用于场景QGraphicsScene中在所有图形项的基类,它是一个纯虚类,不能直接使用。子类化QGraphicsItem后,需要重新实现图形项的几何形状、碰撞检测、绘画实现、事件处理。 常用图形项: 类名图形项QGraphicsEllipseItem椭圆QGraphicsLineItem直线QGrap…

一堆乱七八糟绝不正经的排序算法

原文 索引 猴子排序 钻石排序(戴蒙德排序) 恶魔排序 珠排序 地精排序(怂货排序) 智能设计排序 1. 猴子排序 (提供者cy1306110516) 猴子排序的思想源自于著名的无限猴子定理。 既然猴子们能敲出《哈姆雷…

好久没有更新了!

好久没有更新博客了,主要是因为本人在从事信息化监理行业,遇到了困惑的事情,不时地在问自己,选择这个行业,对吗? 从事这个行业,已经换了两家公司,对于信息化监理事业却秉承不同的理念…

多人开发情况下的字符串本地化

项目开发中,独立开发的还是少数。经常会有多人开发的情况,这种情况,如果多人同时操作本地化文件,极有可能会存在冲突。另一方面,我们又不希望自己的本地化文件受到对方的污染,也就是说,我们不希…

【Ubuntu】制作usb启动盘安装ubuntu18.04时报错:“failed to load ldlinux.c32”

1、问题描述 使用UltraISO制作ubuntu18.04操作系统的usb启动盘后,按照时报错: failed to load ldlinux.c32ubuntu16.04、ubuntu14.04没有遇到这个问题。 2、原因 未知 3、解决方法 参考博客 https://blog.csdn.net/tnaig/article/details/81139887…

清华AI学堂班:姚期智担任首席教授,2019年首批招收30人

整理 | 琥珀出品 | AI科技大本营(id:rgznai100)清华流传一句话,半国英才聚清华,而清华一半英才在“姚班”。据不完全统计,自 2005 年开班至今,“姚班”已有10位毕业生进入学界执教斯坦福大学、普…