行业大地震 微信搜索来了 这是在下一盘什么棋

据4月24日消息,腾讯微信事业群宣布架构整改,成立增值业务部和搜索应用部,其中增值业务部原来是微信游戏中心,搜索应用部则是一个新的部门,据悉,搜索应用部主要负责微信搜索业务和阅读业务,以及AI技术研究和落地,微信数据平台建设及数据能力的应用。

微信手握着9亿的用户,看来终于要释放自己在移动端的搜索能力了,据统计,我国搜索引擎用户约有6.02亿,其中手机搜索用户约5.75亿,微信的搜索价值将被彻底释放。

腾讯蛰伏这么久,这次举动又是为了什么?腾讯在搜索上一直背负着“失败者”的形象,难道说这次腾讯搜索要起死回升了吗?

微信搜索,会让腾讯市值再上一个台阶吗?无论如何,微信搜索这次的动静不小,多年以来,微信凭借公众号已经建立了海量的内容生态,这个内容覆盖了诸多的领域,涵盖了资讯、音乐、评论、视频等等。

微信用户使用微信搜索,从产品逻辑和用户体验方面来说,还是很顺理成章的。目前用户渐渐已经养成从微信搜索中搜自己的好友、朋友圈、文章、音乐等内容,用户习惯已经形成。

不过,一个很有意思的现象是,在微信宣布成立搜索应用部的同时,搜狗也发出了这个财年的一季报,搜狗该季度移动搜索流量增长超过50%,整体搜索流量增长26%。搜狗移动端月活跃用户5.6 亿,移动搜索收入占整体搜索收入的72%。搜狗能够取得这些成就,无疑跟腾讯系产品联系非常紧密。

近来,微信在搜索方面进行了一些调整。目前,在微信的搜索页面,可搜索到小程序、公众号、朋友圈以及相关文章,小程序被排在了第一顺位,此前不支持模糊搜索的小程序也已开放相应功能,而搜索业务的进一步推进也将为小程序带来更多线上流量。

面对微信搜索来了,企业如何在微信布局成为关键,不过,无论如何,在微信平台开发是首要。

海淘科技微信开发,微信定制,微信公众号开发,满足客户多种需求,整合多种终端,定期升级,免费提供更新。

时新干货库 如何制定搜索策略以获取用户对品牌的认知

时新科技专注于品牌数字化营销领域,随着科技的发展,品牌营销的数字化,通过搜索、社交、新媒体的方式,进行品牌营销,越来越成为一种专业度强的工作。搜索,对于品牌的传播来说,是访问者主动在关注品牌,因而搜索引擎优化是建立品牌形象极重要且基础的途径。本文以时新科技的经验,通过底层搜索策略、网站的搜索优化(单一媒介的搜索)、品牌搜索环境的优化(多重搜索媒介环境),三个层面来总结品牌如何通过搜索来提高认知。

一、策略篇:企业的市场定位到搜索策略

所有的品牌工作,皆源于企业的战略定位。那么,在制定网站的搜索优化目标时,也应基于企业的市场定位,来制定网站的搜索执行的目标。搜索的关键词策略,是以品牌为核心,彰显出企业的核心定位。

1.关键词策略,怎么样界定企业营销推广的范畴

如果对于搜索有一定的了解,会比较能够认识到,在做搜索推广之时,企业做搜索,主要在如下关键词的范畴:

企业简称,企业全称,产品名称,品牌名称,企业领导人,行业需求词

搜索的关键词,是访客对于去认知企业品牌,基础的信息元素。这些常用的关键词,是建立企业认知范畴组成单元。在做搜索执行规划时,结合企业现实的情况,去有效的规划核心关键词的传播目标,是做搜索策略时,要考虑的问题。基础的组成单元,决定执行后的传播范畴,从而也界定了认知的边界。

2.关键词策略,如何差异化进行品牌推广,展现企业独特定位的同时,用最少的成本获取最有效的成果

如果做过搜索的读者们,会知道,关键词的推广成本是随着竞争度而增长的。企业在甄选适合自身的关键词时,选择的每个关键词都会有其相应的竞争度,主要在行业领域的关键词,以及用户认知的需求词时,这类行业通用的关键词,通常竞争度会比较高。

竞争度高的关键词,有二种情况,一种是认知的范围广、热度高,这类通用词,如果聚集于其排名展现,会带来相对来说较高的爆光度;另一种是对应于精准的用户需求,同品类的企业,都在做搜索的投放竞争。

在进行搜索规划时,关键词策略,要体现出企业品牌的独特定位,从而在行业、品类中,传递出差异性,从而建立自身的优势,在这个之上传递出最高的认知范畴,毕竟,对于品牌来说,知名度、认知度越高,是企业品牌的首要目标。

二、网站的搜索优化:单一媒介搜索效果优化

网站SEO优化由来以久,随着搜索引擎成为用户主动获取信息的入口,用户对于企业及品牌的了解,企业官方网站,是企业展示的首要媒介。企业的网站,形象展示、内容资讯,都是用来传播企业品牌的。

随着网络环境,信息的复杂化,很多企业面临着,企业自有词在搜索上的展现困难,例如,搜品牌名称、企业简称首页不显示官网。企业自有词在搜索环境中,竞争度没那么激烈,正常来说,如果对于搜索规则有一定认识,企业官网进行合理的内容配置,企业自有词的收录与展示,是可以解决的。

而如果企业网站,如果要通过搜索进行推广,那么,为官网定制SEO解决方案,去提升企业自有词、行业词、需求词的排名与收录,可以使企业品牌的推广,获得更好的收益。很多企业,也把官网SEO,作为企业营销的必选项。

时新科技网站SEO服务的流量效果案例

这个网站SEO执行期限为六个月,为时新科技最近的一个项目服务案例,从图示统计的流量,如上图所示的百度流量统计,可以算出日均访问流量1126PV,日均独立访客913UV。

这个站点,也就是说作为一个企业网站,从开始建设到运营出有初步而稳定的流量,就用了六个月的时间。

三、品牌搜索环境:基于品牌的搜索环境营造

图片来自百度,摩拜前3页的搜索结果

图示的共享单车品牌,显示出品牌在搜索中,面临着更复杂的网络环境。越来越多的企业品牌部门,把品牌词搜索结果前3页的结果,作为品牌工作的考核指标。

由于品牌词的搜索结果,是复杂的媒介在搜索结果中的呈现,品牌词的搜索维护,要解决的搜索舆论,也跟企业公关产生了联系,当搜索结果出现舆情时,搜索要跟企业的公关工作结合,才能解决对应的舆情问题。

品牌词的搜索,是访客主动的关注行为,这种搜索流量关系到品牌形象。品牌词的搜索呈现好坏,对于两类企业影响较大,一是上市企业,舆论会影响企业的股价,另一是消费型企业,搜索结果中的舆论评价,会对于产品造成流量洼地。例如,培训教育行业,达内,其搜索的流量,在收录的呈现中,企业官方网站覆盖了百度前几页的大部分收录位置,这也意味着,其品牌搜索流量绝大部分落地在自身网站上,既维护了品牌形象,又提高了流量的转化率。

————-

北京时新科技有限公司(简称“时新科技”),是一家以“科技公关”为理念的创新型数字营销服务公司。

公司业务覆盖数字化品牌建设、官方网站建设与运营,品牌搜索环境营造,新闻宣传,口碑传播,新媒体营销,品牌宣传设计,舆情监测与危机公关等方面。

流量秘籍 是不是没有搜索流量 这样优化标题流量翻几倍 (上篇)

很多人会想问:标题优化是什么概念?有的人说:只要你的产品好、只要你有做推广,标题随便一写就行。

好吧,TOP君只想说一点:只要用户在的关键词搜索行为还存在,标题优化的必要性就存在。

我们运营人员的关键词优化一般来说只会涉及我们的某篇活动文案或是文章,所以我们的目的只有一个,就是让我们的文案/文章让更多人看到。哪怕我们现在看有时候,消费者搜索关键词的时候,你的标题中没有这个词,你的产品也会展现。

如何挑选关键词?

第一步:站在用户角度提炼关键词

在选择关键词之前,一定要对企业、产品以及盈利模式要有详细的了解,明白潜在客户实际需求与对产品的关注点,切记不要站在自己角度去考虑问题,一定要清楚客户在找你的产品或服务时,心中所想的词,所以在询盘的时候的,一定要统计好产生对话的关键词,如果是电话直接问客户是从哪里看到我们的广告,是搜索什么词进入网站的等等,一定要清楚用户常搜索的词,再结合企业的产品来做,效果一定会事半功倍。

如果是为了排名,TOP君建议标题插入与正文相关的关键词,毕竟如果标题与文章实际主题不相关,即使标题中有与用户搜索完全匹配的关键词,其排名也是不会高的。但如果仅是为了提高看到的人的点击率,那你要标题党也就随你了。毕竟SEO的第一步是为了让更多的人看到,其次才是让看到的人去点。

第二步:优化拓展

根据你的关键词进一步的优化拓展,例如腾讯的产品你可以拓展到马化腾,也可以拓展到它的竞争对手,子弹短信可以拓展到罗永浩。

套用上面标题的一般形式,可以根据情况拓展成带阿拉伯数字的,拓展成反问句或者感叹句的的,甚至可以带一些容易被搜索到的热点词。发挥头脑风暴,尽可能的都罗列出来。动员身边的同事,让更多人一起参与,从不同的角度写出不同的排列组合,发挥更大的可能。

而我们确定关键词的热度(即搜索用户基数)可以参考百度指数。

以时下火爆半边天的“人民的名义”为例,以下图片均来自“百度指数”。

“人民的名义”需求图谱

“人民的名义”相关词分类

需求图谱和相关词分类两个模块,可以让我们知道目标关键词的搜索热度以及与之相关的其他延伸关键词。毕竟我们在写一篇文章的时候,不是单单一个核心关键词就够的,有其他次级关键词相辅相成往往能起到更好的曝光效果,当然这个次级关键词要是也能有可观的热度,那便更好了。而百度指数的这两个模块所提供的关键词可以说是兼具相关度和搜索热度。

第三步:对比筛选

当收集到标题之后,不同产品就应该有不同的应对策略了,如果有自己的用户群,可以在自己的用户群中投票,投票的结果就反映了大多数人的喜好,一般来说是比较合适的合适的。

对比筛选的时候就应该再结合以往文章标题的数据,根据历史数据选择适合自己的标题,防止突然的“画风清奇”。甚至一些专业类的号有时候还要考虑自己的用户属性,借助标题来完成用户的初步筛选。

第四步:数据和积累

选好标题,点击推送,关于标题的工作还是没有全部完成。发送后的数据监控也是非常必要的,这一步会知道标题是否达到了预期的效果,也可以随着时间维度记录下文章打开的次数。

品牌关键词

做品类关键词很难挤出C位,而品牌关键词则是直接流量的捷径,视频、文章、图片、等内容形式,都会在品牌关键词搜索中占有一席之地,集图文、视频、交互为一体的H5,沉浸式体验给将品牌信息无缝嵌入,在满足消费者的需求中病毒引爆,并记住品牌关键词,还怕没人搜索到你的产品吗?

(如何快速优化品牌关键词?请关注我们阅读下篇)

移动app开发者又一变现利器 百度搜索框

截止到2014年底,中国智能手机用户已经达到5亿多人,并且增长趋势依然明显,如此大的市场吸引了无数的开发者竞相加入移动APP开发的大军之中,据不完全统计目前中国安卓市场应用数量已经达到100多万,App Store的应用数量达到 40多万。

开发者开发产品给用户使用的同时,如何增加收入是最关键的问题。嵌入广告成为最方便的变现方式,选择和广告平台合作成为大多数开发者的首选。纵观目前各平台提供的广告形式,积分墙、推荐墙、插屏、全屏、Banner、以及视频广告等可以说足够丰富,但对用户来讲,最喜欢的还是不被打扰的原生广告形式。毫无疑问搜索是用户的基础需求,如果开发者嵌入百度搜索框到应用中,还能获得分成收入。那样既丰富网站的功能性,又方便了用户使用,而且还可以获得超过其他广告5倍以上的收入。

通过搜索,我们找到了百度移动端搜索框的独家合作伙伴-乐点移动广告平台,APP开发者可以嵌入乐点开发的百度搜索框SDK,让用户在使用APP的时候直接方便的进行搜索,同时也可以获得丰厚的广告收入。既方便了用户,同时也是开发者继插屏,Banner,积分墙广告之后又一个重要的变现渠道。

乐点作为国内优秀的移动广告平台,现有开发者5万多家,采用先进的精准投放技术,每天广告展现10亿多次。这次百度选择和乐点独家合作推出的搜索框SDK,既是对乐点产品技术的信任,同时也是对乐点市场地位的认可。这一广告形式必将推动整个移动互联网APP开发者变现的进程,同时也可以使APP专注于开发出更好的功能给用户。

(责任编辑:HN666)

SEO 百度搜索量等于百度指数 千万别这么认为

SEO这个行业,无论是专业的网站优化公司,还是个体或者企业都在不断的寻觅和挖掘访客的心思,可能都在揣摩着选什么样的关键词来做优化,才能给网站带来相当多的访客。对于经历不是很丰厚的网站优化员来说,依托百度索引量,是一个合理的方向,我觉得只需一个词就是做在百度主页上,随之而来的用户流量比较大,所以网站的运用不用忧虑。

当进行网站优化时,当挑选和规划关键词时,不少企业可能会要求做一批流量词。当然,有两种状况,一种是做主页,另一种做栏目页。接下来我们主要针对在主页的状况下,对这个问题进行扼要阐明,以找出实践访客搜索量是否等于百度索引量。

首先,我们来说说:100指数的关键词做上百度主页

当SEO把一个100指数的关键词放在百度主页时,只需关键词排名不是前三名,那么这个关键词带来的预期IP在5到30之间就不会太高。百度对一个词的反响不是你只有这个流量,也不是你的用户流量将保持在这个值。

网站的流量估量仅仅第三方的热门趋势,并不意味着它能够直接带来这样的用户流量。

接着,我们再来讲讲:100索引的关键字不在主页上

例如,当网站的关键词索引为100时,网站管理员希望经过优化技能在百度主页上完成这些关键词。这个词仍然比较简单,可是需求被看到。什么样的行业,当然,关于一些新手来说,我以为关键词有一个指数,这有点心理障碍,我觉得这个词会很难,这是了解的问题,因为不是一切的交通词都难,主要是考虑到竞赛和压力。网站的相关性和改变的关键字,也取决于优化的质量在你的站。只需网站的质量高,那么关于指数不是太高的都是能够做的。

并且要注意的是,并不是一切的关键词都很难,尽管流量很高,可是可能存在一个虚伪的高,即所谓的刷流量、刷索引,一般存在两种问题,有些人砸头做字,仅仅为了一个假的流量字,有些为了E无望,不管做出什么挑选,他们都有自己的理由,但做SEO就是寻求一种实在的赋性。

所以说关于SEO优化,千万不要认为网站访客搜索量等于百度指数值。可是百度的指数值并不能断定一切的用户编号。这是一个参数值,而不是绝对值。许多网站管理员能够经过不同的数据发现,即便你的网站真的不猜测流量,网站仍然有一个用户量。

江映蓉搜索指数一夜暴涨500% 斗鱼平台人气加持功不可没

  互联网直播浪潮之下,明星与主播的界限越发模糊。一方面,头部主播的价值和影响力直线逼近一线明星。另一方面,大牌明星也开始拥抱直播,通过直播平台的高人气加持,明星可以实现粉丝暴增,也可以实现二次爆红。

以斗鱼平台近期加盟的两位明星江映蓉和陈姿彤为例,我们可以从一个简单的角度来看斗鱼平台的人气对明星所产生的价值。

5月4日,作为斗鱼趣玩创意官的江映蓉开启了她的直播首秀,引发了弹幕狂潮,此后一连四天准时在斗鱼直播间上线。首秀当晚取得了开门红,直播间热度一度高达200万,1400个贵族和4个“皇帝”用户在其直播间停留。

这是斗鱼平台方面的数据,我们也可以通过一个第三方的数据百度指数来看江映蓉在斗鱼首秀所带来的影响。这个数据是指某个关键词在百度的搜索规模有多大,一段时间内的涨跌态势以及相关的新闻舆论变化趋势,例如“江映蓉”的百度指数我们可以简单地理解为,每一天在百度上搜索“江映蓉”来获取相关信息的网民有多大规模。

很明显可以看出,在江映蓉斗鱼首秀的当天5月4日,江映蓉的百度指数形成了一个急剧攀升的势头,相比前一天提升了足有500%。

再看此前入驻的陈姿彤,不同于江映蓉出道后一直对外保持曝光状态,陈姿彤在成名后选择了转行,在此后长达五年的时间内一直从事幕后工作,从歌手转型为制作人身份。但在4月16日的斗鱼首秀日中,陈姿彤的百度指数也呈现了和江映蓉几乎一致的飙升态势。

如果说江映蓉通过斗鱼首秀在自己既有的知名度上为自己再上一层楼,那么陈姿彤毫无疑问是再度走红。这个过程中,斗鱼平台的人气加持所产生的价值体现得淋漓尽致。

斗鱼平台的高人气来自哪里?这与斗鱼深耕内容运营,吸引多元化用户来源密不可分。简单来说,斗鱼通过获取重大赛事的独家版权以及自制赛事等方式,同时发展综艺、科技、音乐、旅游等版块,以满足用户的多样化需求,以优秀和多样化的内容满足用户的更多需求,将用户牢牢吸引在斗鱼平台上。

丰富的内容带来更多元的观众,平台也就拥有了更高的人气。来自高人气的加持带来的优势流量资源势必能够让更多的明星看在眼中记在心中,明星试水直播带来的成功让更多的明星加入进来获取斗鱼的人气加持。

与此同时,斗鱼平台也接机拓展了自己的直播生态圈,从内容供给侧提供更多可能性,形成了一个“内容(吸引)用户(带来)人气(吸引)明星(提供)内容”的良性循环。毋庸置疑,斗鱼平台的高人气,也是斗鱼强大的运营能力的体现。

百度竞价账户内的搜索词如何进行正确否定

竞价账户否定匹配关键词是竞价操作的的基本方式之一,否定匹配包括短语否定匹配和精确否定匹配两种形式。否定关键词是百度搜索推广账户操作层面的概念,否定关键词在推广计划层级和推广单元层级都可以设置。百度提供了“否定关键词”设置和“精确否定关键词”设置两种基本设置形式。前者的名称并不确切,准确的说应该叫短语否定关键词或词组否定关键词。

否定匹配是关键词的基本匹配方式之一,否定匹配包括短语否定匹配和精确否定匹配两种形式。否定关键词是百度搜索推广账户操作层面的概念,否定关键词在推广计划层级和推广单元层级都可以设置。百度提供了“否定关键词”设置和“精确否定关键词”设置两种基本设置形式。前者的名称并不确切,准确的说应该叫短语否定关键词或词组否定关键词。

否定关键词与关键词匹配方式中的广泛匹配、短语匹配组合使用,可以对创意的展现进行限制,过滤无效点击,从而对流量进行精细化管理,提高关键词有效率和精准度,降低成本,提高投资回报率。

短语否定关键词:当且仅当网民的搜索词中完全包含否定关键词时,推广结果将不会展现。

精确否定关键词:当且仅当网民的搜索词与精确否定关键词完全一致时,推广结果将不会展现。

注意,否定关键词不单独使用,需要配合关键词匹配方式和搜索词报告,三者组合使用。否词仅对“广泛”和“短语”匹配的关键词生效。

正确使用否定关键词,可以精准流量,提升转化。更多百度竞价账户操作技巧关注资深SEM竞价托管魏大帅。

旺季搜索趋势大揭秘 哪些关键词获得的展示最高

在过去两年中,移动端关于“Black Friday”(黑色星期五)的搜索量增加了80%。

11月21日(周二),谷歌公布“Black Friday”(黑色星期五)相关关键词的搜索数据,发现消费者购物行为通常在旺季前几周变化最大,人们已经习惯于通过研究发现新品牌。

非品牌向品牌转移

早在11月份初,谷歌上非品牌产品的搜索量就大大超过了品牌产品搜索量, “black friday ads furniture”、“black friday clothing”等获得大量搜索。

黑色星期五前两周起,消费者搜索开始从非品牌产品转向品牌产品,“Ashley furniture black friday”、“Old Navy black Friday”等相关搜索呈上升趋势。

视频推广

现在,有许多消费者到YouTube寻找礼品创意。在过去的几年中,与黑色星期五相关的视频越来越受欢迎。据谷歌估计,2015年以来,这类视频观看量增长了120%以上,越来越多的零售商和品牌借助网络红人的影响力进行品牌、产品宣传。

11月中旬,YouTube红人Kyrah Stewart就发布了品牌零售商Pink的一个黑五促销相关视频,视频中Kyrah Stewart打开了来自Pink的礼物盒。

谷歌发现,消费者正在寻找Vans、Canada Goose和Nike Air Jordan Retro 11等经典服装品牌。此外,还有一些名人推荐产品,如Nike KD 10、Pharrell x Adidas和Rihanna’s Fenty Beauty也获得了较多的搜索。

在过去两年中,“where to buy”(上哪购物)和“best times to shop”(最佳购物时间)等问题的搜索量增长了85%。

谷歌广告主管Emily Eberhard表示,“黑五相关热门搜索中,有许多消费者正在将黑五和‘网络星期一’进行对比,我们经常看到消费者搜索‘cyber monday vs black Friday’、‘ is cyber monday as good as black Friday’等问题。”

黑色星期五的促销时间正在拉长,从一天变成了一周。零售商也从中受益,获得了更多的商店流量,因为消费者不再只在感恩节后的那一天涌入商店购物。

据预计,2017年感恩节周末移动端成交额将上涨40%。Eberhard说:“这是一个信号,在移动端搜索的买家,将在这段时间在移动端购物。”

搜索广告关键词表现差异

卖家要把握旺季销售,最重要的一点是投入搜索广告。据研究,搜索广告在移动端和桌面端的表现也有所不同。

Adthena(该公司通过人工智能、机器学习技术和大量的数据分析或得出最新趋势)11月20日的最新报告显示,桌面搜索广告的展示次数市场份额(impression share)正在下降,而移动搜索广告正在上升。

据悉,带“50% off”字样的广告在桌面获得了0.53%的展示次数市场份额,而在智能手机上获得了1.81%的市场分额。

“70% off”广告在桌面获得了2.59%的份额,移动端为2.62%。

但也有例外,“40% off”广告在桌面获得了0.39%的份额,而移动端仅为0.32%。

Adthena分析了2016年黑色星期五期间,161个消费电子品零售商投放的15171个搜索广告和获得的214103179个展示,指出2017年黑色星期五期间,消费电子产品的一些趋势。

以下分别是桌面端和移动端获得较高展示的关键词:

桌面端: (1)“Gift”( 礼物)8.29%

(2)“iPad” 4.49%

(3)“TV”(电视)4.48%;

移动端:(1)“Gift”( 礼物)8.48%

(2)“phone”(电话)6.31%

(3)“appliance”(电器)4.33%。

“free delivery”(免费配送)不重要

研究发现,55%获得展示的桌面广告并没有提及“free delivery”(免费配送),包含“free delivery”(免费配送)字眼的广告获得的展示占总展示量的45%。可见,消费者更少考虑运费问题,也就是说“free delivery”并不重要。

移动端广告也呈现出了类似的趋势,63%广告展示来自于不含“free delivery”(免费配送)的广告,仅37%的广告包含了相关字眼。

Adthena产品营销总监Ashley Fletcher表示,“free delivery”(免费配送)的价值在减少,人们购买变得更加冲动。

桌面搜索广告中,包含“Save”字眼的广告获得最多展示,份额高达20.51%。“% off”(优惠)和“Clearance”(清仓)紧随其后,分别占5.31%和4.66%的展示份额。

移动端,包含“Save”(省钱)的搜索广告展示数依旧最高,份额达19.87%,接着是“% off”(优惠)和“Clearance”(清仓),分别为5.39%和9.66%。

(编译/雨果网 吴小华)

校招 百度搜索公司

招聘时间:2017年10月16日 10:30

招聘地点:中南大学校本部 立言厅

世界那么大,大牛那么多

从优秀到卓越

你需要最好的同行者

走得越远,只会离自己越近

而梦想,也会变得更大

百度搜索校招季

遇见壹百分的自己

我们的使命用科技让复杂的世界更简单

我们的核心价值观简单可依赖

我们的人才理念招最好的人,给最大的空间,看最后的结果,让优秀人才脱颖而出。

1

单位简介

百度,全球最大的中文搜索引擎、最大的中文网站。2000年1月由李彦宏创立于北京中关村。百度是一家持续创新的,以“让人们最平等便捷地获取信息,找到所求”为使命的高科技公司。

百度搜索公司成立于2016年4月13日,百度高级副总裁向海龙担任总裁,由搜索业务群组(SSG)、移动服务事业群组(MSG)、糯米事业部组成。

2

项目介绍

以百度的企业文化及人才观为宗旨,通过集中公司优势资源对具备销售管理潜质的优秀人才进行系统、全面的业务锻炼和管理培训,从而培养出高度契合百度文化价值观的储备管理人才,以支持公司业务快速稳定增长。

[项目目标]

?我们希望吸引优秀大学的潜力人才,将你培养成为百度未来的销售管理/HR专业人才。

?你将接受全方位的见习、自学、轮岗、培训和绩效评估。

?你将拥有机会扩充你的知识宝库并磨练解决问题的能力。

?你将在一个唯贤是用、回报丰厚、拥抱创新的环境中茁壮成长。

[项目特色]

加入销售体系管理培训生项目,你将得到:

1. 轮岗

你将有机会在不同部门之间轮岗,全业务链轮岗实践,定制化课程,丰富的一线销售实操经验为你打下坚实基础,全面的项目管理经验让你提升策略化思维。

2. 导师制引领成长

分级导师制,你的导师是精挑细选的资深销售管理人员,手把手帮助你提升专业销售技能与销售管理能力,为你的职业发展奠定扎实的基础。

3. 行业竞争力的薪酬福利

我们提供具有竞争力的薪酬待遇、项目补贴、用餐补贴、通讯补贴、生日会、节日慰问、六险一金、健康体检等,还有体育联赛拼技术,各项社团觅知音,更多精彩,由你创造。

加入HR体系管理培训生项目,你将得到:

1.轮岗

你将有机会在不同部门之间轮岗,全业务链轮岗实践,定制化课程,丰富的HR实操经验为你打下坚实基础,全面的项目管理经验让你提升策略化思维。轮岗期间有明确的目标、任务、导师、考核方式,在一定周期内完成轮岗任务。根据未来定位、学员自身特性的不同,设计定制化轮岗方案

2.导师制引领成长

三位导师助力你的成长,从文化、专业、业务的角度教导你的成长,定期的培训、分享以及周密的项目运用机制,让你的成长扎实、快速

3.项目制

轮岗、导师制度、专业HR项目的配合下,加强学员的项目管理思想/经验/能力,有效提升其项目运营能力。激励学员发现问题、解决问题,提升思考、解决问题能力,快速学习业务知识,提升HR专业能力,全面视角认知岗位。发挥个性,激发在特定领域的深挖

[招聘岗位-管理培训生]

销售体系管理培训生生:

工作职责

根据公司提供的资源,通过各种渠道或方法与潜在客户进行沟通、尝试开发并促成商机

有效维护客户资源,并为客户提供专业化的咨询服务、制定定制化的增值方案

根据岗位的具体要求完成轮岗实践

根据岗位的具体要求达成销售目标

根据岗位的具体要求达成专业知识和管理技能的学习目标

根据岗位的具体要求达成文化价值观的考核标准

根据岗位的具体要求达成公司销售管理相关的计划、组织、实施和监督工作

根据一线工作中了解到的信息及客户反馈,向公司提出产品、服务及流程优化建议

能力要求

具有良好的教育背景(本科及以上学历)

具有良好的管理潜质(丰富的学生会、班级管理经验)

具有优秀的基础能力(快速学习、沟通影响和团队合作的能力)

具有优秀的综合素质(强烈的进取心、乐观积极的心态和坚持不懈的韧劲)

具有与百度文化相契合的价值取向(诚信正直、简单可依赖)

具有良好的形象和气质

愿意服从工作地点调配

HR体系管理培训生:

工作职责

根据岗位的具体要求完成(跨业务线、跨地区、跨专业模块)的轮岗实践

根据岗位的具体要求协助参与人力资源项目的推进和实施

根据岗位的具体要求达成轮岗期间具体模块/岗位的考核标准

根据岗位的具体要求达成HR各业务模块专业知识和管理技能的学习目标

根据岗位的具体要求达成文化价值观的考核标准

根据工作中了解到的信息及反馈,向公司提出组织、人才及思想方面的优化建议

上级领导交办的其他工作

能力要求

本科及以上学历,专业不限,人力资源、心理学、社会学等专业优先

诚信正直,认同百度“简单可依赖”的文化

拥有比较丰富的学生会、班级管理经验

拥有良好的快速学习、沟通影响和团队合作的能力

强烈的进取心、乐观积极的心态和坚持不懈的韧劲

能适应快节奏、多变化、高速成长的互联网行业的要求

愿意服从工作地点调配

[培养规划架构]

阶段:学前班(1个月)→一年级(10个月)→二年级(9个月)→三年级(4个月)→毕业

目标:业务/HR新人→ 业务独立贡献→ 基层管理者→ 中层管理者→ 优秀的管培生

“:学习地图+高管课堂 ““:以老带新+导师制度 ““:轮岗制度+项目锻炼

[校招流程] 在线投递简历→ 在线笔试→ 三轮面试→ 发放offer

官网主页:http://talent.baidu.com/external/baidu/index.html(选择“2018百度搜索公司管理培训生校园招聘”)

网申地址:2019/20190426A/F0114592

网申二维码:

编辑/王佳月

责编/向美玲

基于Elasticsearch构建千亿流量日志搜索平台实战

Elasticsearch 常用于日志搜索服务的基础技术栈,七牛云在基于 ES 构建日志搜索云服务的时候,碰到不少问题,也总结了很多经验,本文是对这些解决方案的总结。

6 月 11 日下午,在饿了么&七牛云联合论坛——大数据最新场景化应用实践中,王拓带来了 Elasticsearch 为主题的实战分享,本文是对演讲内容的整理。

作者简介:

王拓,七牛云大数据高级工程师,硕士毕业于中国科学技术大学,曾就职于 PPTV 的广告团队,主要从事视频广告系统、ad exchange 交易平台、dsp 系统的设计和开发工作。于 2016 年加入七牛云,主要负责日志搜索云服务 logdb 的架构和开发工作。目前 logdb 承载公司每天近千亿、近百 TB 数据的日志增量。

今天的分享会从五个方向展开:一,背景;二,系统的设计目标;三,我们在做这个系统过程中遇到的挑战;四,如何应对;五,简单的总结。

图 1

介绍这个系统之前,先介绍一下我们整个七牛云 Pandora 大数据平台产品的形态图。

这个产品形态图最左边会有数据源,用户可以把数据导到 Pandora 大数据平台上,通过计算任务的加工,数据可以到一个消息队列。这时候用户可以选择把数据导到日志检索,如果用户有日志检索需求;

另外一条线可以把这个数据再导到新的计算任务,再到消息队列里面,这时候他可以选择将数据导到时序数据库,如果数据带有时间戳的特征。通过时序数据库可以对数据进行一些报警或者监控分析;

另外也可以把数据导到七牛云的对象存储中,有什么好处呢?对象存储其实是七牛的存储服务,这里的定位和 hdfs 类似 ,用户可以通过 Xspark 对已经存放在对象存储里的数据进行多维数据分析。

图 2

图 3

图 4

图 5

如图 5 所示是整个 Pandora 的系统架构图。最左边是接入层,我们可以通过 SDK 等方式把数据接入到 Pipeline 管道上,通过 transform 进行计算,这些 transform 就是刚刚对应的计算任务。然后可以通过 Export 导到指定的产品中。右边可以通过 Xspark 等对它进行分析。

今天我们要讨论的 Topic 是位于整个产品中的子产品,在 LogDB 的环节上。LogDB 是一个搜索云服务。我们对这个产品的定位是这样的,希望这个产品能够基于 Pandora 的数据做一些分析服务,希望对普通用户来讲可以在 5—10 分钟内可以完成整个数据的接入,同时我们希望每天可以搞定 MB 到 100TB 的日志增量。当然对于用户来说,最重要的是云服务要做到 0 运维、0 开发、低成本。

我们对系统最初的设计目标如下:

  1. 搞定公有云的海量用户,要支持各种规格;

  2. 支持单个用户日志规模从 MB —100TB 每天;

  3. 查询秒级响应;

  4. 系统必须要有可靠性,主要表现在两方面,一方面不能丢数据,另外一方面系统可用性必须在 99.9% 以上;

  5. 要拥抱开源,可以适配 Kibana、grafana 等。我们希望以前使用 ELK 的用户可以用非常低的成本迁移到我们的上面,以前使用 ELK 的范式切过来,对你来说没有任何变化。

图 6

有了设计目标之后,我们马上要做出一个多租户模型。

我们一开始就认为单个 ES 集群搞不定海量 repo ,因为大家都知道 ES 在 Master 被选举之前是一个 P2P 的系统,但是当 Master 被选取后,它的管理本质上是 Master 和 slave 的模式。所以随着集群规模的增大,以及 repo 数量的增多,整个集群管理负担越来越大,对于 Master 要求会越来越高,最终会导致集群挂掉。

因为我们团队都是比较有经验的 ES 工程师,所以我们一开始就提出产品必须是多集群的海量 Cluster 的模型。如果 Cluster 出现资源不够的情况,我们从运维的角度加一些新的 node 即可。另外如果某一个 Cluster 里面 repo 达到了一定数量,超过了 ES 本身系统资源的瓶颈,我们就会选择增加一个新的 Cluster 来搞定这个事情。

图 7

当我们敲定了多租户模型之后很快迭代出了第一版系统,第一版系统架构图如图 7 所示,最上面一层会有 Portal、logical、SDK 等等。右边是 export,我们的数据从 export 过来,所以要跟 export 对接。

在 API Server 这层我们做了一些服务的解藕,首先是一个 search 集群,一个索引集群,同时其他类型业务会被集中放在一个集群。我们的数据存在 Mongo 里面,下面是整个 ES 集群的集合,最左边需要有一个管理的服务,对 ES 集群进行维护,比如对 ES 进行优化等。

我们第一版系统上线之后遇到什么问题?

首先,因为打点的 QPS 非常高,导致我们的 Mongo 成为系统里最先达到瓶颈的一环,它的查询压力非常大。那么,怎么解决这个问题?其实,我们需要一套 Cache 系统,这样就可以把大量请求拦在 Mongo 之前来解决问题。不过还好,因为我们已经有了一套缓存系统,所以不需要花太长时间来解决这个问题。

七牛的缓存系统是一个二级缓存系统,第一级指的是 Local Cache,第二级是指 Memory Cache。举个例子,当一个请求发出来,如果 Local Cache 没有命中,它会去 Memory Cache 找,如果 Memory Cache 也没有找到,这时候它会通过 qconf Master 到 Mongo 里找,如果 Mongo 找到之后,会把这个值回写到 Memory Cache 和 Local Cache ,那么第二次请求时直接在 Local Cache 会被拦掉。如果这个请求很不幸命中了另外一个API Server,实际上 Local Cache 是没有的,但是 Memory Cache 也是有的,所以直接去 Memory Cashe 就可以拿到值了,然后再回写 Local Cache。

通过计算,我们发现,基本上 99% 的请求都会被整个 Cache 系统拦住,而这个系统里基本上有 80% 的请求会被 Local Cache 拦住,也就是说整个 Memory Cache 和 Mongo 的压力都是非常小的。所以我们马上迭代出了新一版的系统,即我们加入了一个 Qconf Cluster。

这时候我们遇到的新问题是什么?第一个问题是 LAG,经常有用户反映这个系统查不到最近 10 分钟或者 1 小时的数据。那么,LAG 是怎么产生的?我们认为整个写点代码是有问题的,写点的整个效率有问题。所以,我们要对写点做一些优化,在开始优化前,我们首先要了解 Benchmark,对整个效率有一个正确的认识。首先,我们要正确知道 ES 真正的吞吐量在哪里,因为我们整体资源是够的。比如,我们有十台机器,但是为什么我们搞不定这些量,对用户产生 LAG 了呢?所以我们先对 ES 集群做一个 Benchmark。

我们拿到一个具体的值,ES 集群做一个 Benchmark 要怎么做?官方说,首先你一个并发控制 batchSize,从 0 加到 1 万,当你的 batchSize 增加没有任何收益时,固定这个值,再去增加它的并发数。当并发数增加也没有收益的时候,固定的这两个值就代表了 ES 最佳的效率。

那也就是说,其实 ES 打点的吞吐量其实取决于客户端,对于这种推送系统其实大部分都是这样。即我们对客户端程序要求比较高,当然我们的数据如果是直接从内存里面来的,没有问题,我们可以一直维持这个并发数。但事实上我们的数据时 export 打给我们的,它发的请求可能是零散的,可能一个 batch 有可能一个只有一条数据或者一万条数据,这种零散的数据打到 ES 之后,整个吞吐量会下滑。

所以,我们其实在 ES 之前需要做一个数据传输系统,这套系统要搞定 export 打给我们数据零散的点,我们要把它包装好,以 ES 最佳的效率打给 ES,同时这套系统应该是多租户的,我们内部称这个系统叫 Producer。那么,这个系统应该怎么做?首先,我们对数据传输做一个简单的思考,很多人经常会说,你做一个下游系统,对我的服务应该是稳定的,不管我以什么样的姿势跟你交互。或者说传输的下游消费速度也是稳定的,很多时候我们也会认为,这个链路整体传输速度其实取决于上游和下游的影响。但事实上并非如此,对于上游或者下游的速度来讲,吞吐量核心取决于并发数和并发大小,而维持最大吞吐量的核心是要维持并发数和并发大小。另外,要维持整体吞吐量要考虑三方面因素:拉取效率、链路效率和吞吐效率。

举个例子,我们要搞定从 Kafka 到 ES 每秒 10K 的流量。我们知道 Kafka 效率很高,可能三个 Patation 可以搞定这个事情。那么我们需要的并发是 3。它的整个batchSize 是 10K,这对 Kafka 是最友好的。但是对于 ES 来说,你要搞定每秒 10K 的流量,其实他的姿势应该是这样的,可能你的并发数是5,你的 batchSize 是 20K。

对于一个正常的系统,我们的 batchSize 该如何调?肯定是以最慢的为准,调到 20×5 的并发数,但事实上即便这样也解决不了。因为链路本身也有效率的损耗,比如你数据是 JSON 格式,它首先要做 unMarshal,这个时间其实是 CPU 的开销。所以真正要搞定这个问题,你可能需要大概 20K×8 的姿势才能搞定这个问题。那么,如何解决这个问题?我们认为我们需要引进一个东西来对上游下游做解藕,我们称之为 Memory queue。

图 8

所以,我们首先需要一个队列,而且是内存队列,因为我们知道数据从上游拉下来之后进入内存队列,它的效率是最高的。进入内存队列之后,我们需要一个 Source 和 sink,因为我们要动态调整上游的 Source 数量和它的 batchSize 、下游的 sink 数量和它的 batchSize。与此同时,我们要做一个事务,为什么呢?用 ES 的人都知道,当我们通过bulk接口打点的时候,一个请求里面有 2w 个点,ES 其实是非常不友好的,他会告诉你这 2 万个点里有一半失败一半成功。其实这对客户端的负担很重。所以我们希望这套系统带事务,这样对于客户端来说,你打给我的点可以保证要么都成功要么都失败。

图 9

我们基本模型做好之后,马上迭代出了最基本的代码。因为七牛是 Go 的深度用户,所以我们很多系统都是用 Go 做的。在这个系统里,我们用 Go 的 channel 来搞定 memory queue。图 9 是 channel 的一个生产者模型,首先你要事务池里面拿到一个事务并开启,同时要把数据塞给这个事务,然后把事务提交,把数据塞给 memory query,当然可能会失败,要做回滚,回滚的时候是把数据从事务里面删掉,同时告诉用户这次整体是失败的。

图 10

图 10 是 channel 的另外一端,是消费者的一个模型,首先你拿到事务,把数据从 channel 塞到事务里,然后尝试去下游打点,如果成功了你可以提交事务,如果失败了回滚事务。回滚是指把数据从事务回滚到 channal。

图 11

有了这么一个基本模型之后,我们马上要做的事情就是要把这个模型付诸于实践,我们要先做一个单机版的 Producer。首先定义一个新的概念 task,task 由 source、sink 和 channel 组成。同时我们要构造一个新的概念 agent,agent 是对 task 进行管理。因为我们上游的 export 系统是通过 Http 协议来向我们发送数据的,所以我们需要一个 rest 的 source。有了这个基本系统后,我们还需要一个 checkpoint sink 来解决丢点的问题。因为我们的数据是在 memory queue 里面,可能会有丢点的情况。

有了单机版的 Producer 后,马上我们要解决一个新的问题,解决多租户的 Producer,因为是我们公有云的厂商。那么如何解决呢?

图 12

图 12 是多租户的 Producer 模型。首先我们要对 task 进行基本描述,我们要描述它channel、batchSize 的大小,还有它的并发度。描述好 task 后,我们需要描述第二个东西就是 Producer agent metrics,它代表 cpu 资源、磁盘资源、网络资源,我们需要 Producer 对自己的所在机器的状态能够进行实时描述。有了这两个基本点之后,我们马上要做分布式系统,做分布式系统,我们首先想到的思路是通过 ZooKeeper 来解决,但是我们觉得用 ZooKeeper 来解决我们问题有点太重了,我们的服务是可以接受最终一致性的。所以我们觉得可以换一种新的思路去解决。

最终的思路如下:通过版本戳 + PULL 的模型搞定这个数据一致性问题。即通过定时到上游拉数据,由版本戳来判定这个数据是不是最新的,通过这种方式,整个系统的管理最终都会是一致的。

那么这个架构就很明显了,我需要一个 Master 对整个集群进行协调,同时我需要一个Producer agent,它表达的是资源单位。Producer agent 会定期把自己的状态上报给 Master,Master 知道现在整个系统有多少个 task,它需要对 task 以及整体资源池作编排,我们叫它 rebalance。这样每个 agent 就知道我要搞定多少 task,每个 task 状态如何。

因为假如我们的 agent 非常多,对 Master 的压力则非常大,所以用到了上文提到的 Qconf 集群来搞定 Cache 的问题。当然,我们相信任何自动化都是不靠谱的,总有 case 可能跑在已有的规则以外。所以这套系统刚开始设计的时候就增加了一个 admin 后台,我们可以对它进行人工干预。有了这套系统后,基本能保证我以最大的效率从 export 把数据导入到 ES。即我们通过这套系统搞定了 LAG。

紧接着,我们马上会遇到一些新的挑战,这个挑战是什么?就是大量的查询超时。我们系统上线之后经常有用户抱怨,譬如有用户发现用在系统搜索十次,其中有八次都在超时,根本不可用。

怎样解决这个问题?我们对线上数据做了一些采样分析,然后发现以下规律:

  • 用户的 Query 总是多样的,有可能一个 Query 扫的数据量只有一百万,也可能是一个亿、一百亿、一千亿。

  • 搜索的过程其实有点像 mapper-reduce 的过程,比如 1 个数据有 1 个 shard,它搞定了 1 个 G 的量,在搜索的过程中如果是 10 毫秒没问题。当数据增加的时候,可能需要 10 个搞定 10 个 G 的量,这时候每个的时间可能都是 10 毫秒,但是整体响应时间其实大于 10 毫秒,因为这个时候做 reduce 的节点(es 叫 coordinating node)要 merge 的数据量更大。也就是随着 shard 的增减,它的搜索体验会越来越差,即当客户尝试搜索 1 千亿条数据,它可能落在 100 个 shard 上,那么它的搜索响应时间是不可估算的。

听起来这个问题很难去解,我们觉得问题是很复杂的,但是我们可以抓住其中一些主要的变量,那这是什么?我们首先还是要做 Benchmark,这样才能正确认识到瓶颈到底在哪里。

譬如我们测了一个 shard ,他搞定数据,实际的 QPS 是多少。这时候 QPS 是很重要的关键点,我们可以控制 QPS。比如每个用户的 Query 是很复杂的,我可以控制 QPS 对限制某个用户对资源的掠夺,这样可以保证整个 shard 的 QPS 不会出现特别高的情况,是在可控范围之内。另外要对日志的 Query 进行优化,针对特定的 Query 调优会比对 es 参数的调优收到比显著的效果。

所以我们的思路是:首先通过 QPS 控制整体的量,然后再做 Query 的优化,把一些大的 Query 拆成小的 Query。

那么如何优化?首先看一下日志 Query 的特点,在我们看来日志 Query 天生带有时间的 Tag,另外它的排序是时间排序,不像一个广告系统的排序可能是相关度。有了这两点之后我们就可以展开了。

举个例子,一个用户 Query 来了之后,它是带时间的,我们知道这个时间所需要的 Shard 大概在哪一天,这样我们可以避免无用的资源消耗,相当于是把大的 Query 拆成小的 Query,因为之前我们的 search是要扫所有的 shard。假如我确定它在第一天,这时我到对应的 shard 上搜即可。还有就是满足条件预判呢?比如,它对这次搜索的结果希望是反馈 200 条数据,那因为你是时间排序,很有可能你去搜索的时候第一个Shard 就已经有 200 条数据了,这时候我们可以提前返回。

第二个思路是,我们要做一个执行计划的可控。那么,怎么去控制一个执行计划?我们刚才有讲到,搜索体验随着 Shard 的增多而增多。同时搜索 100 个 Shard ,它的体验非常差,所以我们要控制。经过测试发现 5 个 Shard 的搜索体验最好。

我们的执行计划是这么做的,比如你要搜索最近一年的数据,那怎样去做呢?如果按照之前的姿势,你会把整个系统资源占掉,把系统拖垮,还拿不到数据。而现在我们在后台把这个做成串行的,先给你搜索 5 个 Shard,5 个 Shard 一直叠加,而用户看到的是一个进度条,通过这种方式,用户更容易接受,不会感到茫然。因为我们之前的搜索时间经常到 60 秒或者 60 秒开外,这时候用户会感到茫然,说我等了这么长时间你给我看一个 503。

我们其实关于 Query Excecutor 这块的优化点其实蛮多,我挑了关键的三个点讲一下。搞定了查询的超时问题似乎大部分问题搞定了,但其实也不是这样,我们的挑战永远都存在。我们经常会在晚上 24 点被用户叫来,说你们的集群挂掉了,我们经常凌晨 2、3 点一起讨论到底什么原因导致的。

关于 24 点挂掉的原因,用 ES 的人可能都清楚,ES 的自带的 TTL 机制其实很笨,效率非常差。那我们要避免要使用这种姿势,按天建立索引,所以不可避免在 24 点会有一些问题,比如到 24 点都要对它进行创建索引,而且这个创建索引非常扎堆,扎堆是指比如现在有 1000 用户,可能需要 2000 个 shard 搞定这个事情,也就是说在 24 点这一刻马上创建 2000 个 Shard,这个对于整个集群的压力是非常大的,因为整个任务会持续堵塞,会造成整个集群内存爆炸,最终导致 Master 挂掉,集群解散。

这个问题解法其实非常简单,我们可以提前一天平滑创建。24 点的问题核心是扎堆创建,所以我们要平滑,我们可以提前一天的 3 点一个一个去创建索引,保证整个集群的压力是可控的。

上面的问题解决后,我们系统基本上稳定了,但是会有用户反馈说我用你们系统偶尔会超时,问题又不太好复现出来。

这个问题是怎么产生的?我们对线上用户的 Query 进行大量分析,同时也对 Shard 整个编排进行大量分析。我们发现这个问题产生的主要因素是集群有几个点特别热,因为它的资源不够,所以导致一次查询非常不幸命中这个点,不管是打点还是查询,都会出现超时或者 LAG。

那么怎么解决这个问题呢?我们团队有不同背景的工程师,有搞 Docker 的工程师,也有搞 ES 的工程师。所以解决的思路会比较多样化,做 docker 的同事认为,这本质上是资源编排的问题,我们要用 docker swarm 的思路来解决这个问题,也就是说对 shard 进行编排,但 docker swarm 解决这个问题的前提是他可以对硬件进行基本的描述,比如机器可以是 4U32G,1T 磁盘 1G 网卡。

如果我们要用这种方式解决我们的问题,那么首先要对 Shard 进行基本描述。那影响 Shard 标准化的因素有哪些?第一, Shard 不是免费的,当你创建了 ES 的一个 Shard之后,它其实就已经耗费了内存资源,同时还耗费很多文件描述符;第二,写点;第三个是查询,第四个是集群管理。集群管理为什么会影响 Shard 资源?因为它需要的资源是磁盘拷贝、网络资源、简单的 CPU 资源。

这个事情听下来还是有点玄乎,因为感觉都不太好控制,所以我们还是根据之前的解决方案,抓大头,只要搞定写点和查询即可。之前已经强调过写点的 batchSize ,查询的 QPS 我们都是有的。那我们可以考虑对 shard 进行切分,70% 的资源用来搞定写点,30% 的资源用来搞定查询。这时候整个 shard 都是一个可量化的指标,譬如,这个 Shard 可以搞定多少写点,这个 Shard 可以搞定多少查询。有了 shard 这个标准化概念后,我们要马上要搞定它。

但搞定它之前,应该先看看现在面临的问题是什么样?我们的系统是基于 ES 构建的,但是它 rebalance 算法是有局限性的。用过 ES 的人都知道,它 rebalance 的考虑因子主要有以下几个方面:

第一,对磁盘的使用率,第二,认为每一个 Shard 都是一样的,他不知道随着时间的推移每一个 Shard 能搞定的量是多少。按天的方式,第一天我们有 10 个节点 10 个Shard,每个节点搞定一个 Shard。但是经过一天的发展,每个节点上的 Shard 数据量量都不一样。这时候到了第二天,某几个节点的磁盘使用率可能非常低,这 10 个 Shard 有可能出现互相的堆积,集中在其中 3—4 台节点上。也就是说我们不能依靠 ES 搞定这个事情,我们需要自己动手。

再看看另外一边,我们能够正确描述一个 Shard,因为 Shard 编排是双向的,首先你要表达清楚需要多少资源,然后才能根据我的现有资源进行安排。但是在另外一边,用户打点的量和他查询的 K8S ,其实都是弹性的,因为你不知道公有云用户什么时候来我们平台,你根本不知道他的流量需求、查询需求是多少。如果他是来查问题的。比如查一下日志,当然这种 QPS 非常低,大概每天几百个。他有可能用你的服务构建一个系统,这种系统写点可能比较低,查询比较高。所以现在首先 ES 不能帮我们搞定这个事情,我们需要自己动手搞。其次,用户流量不可预期。

那么,怎么解这个问题?我们认为需要从四个方面考虑:

首先是冷启动。对于一个新用户来到我们平台之后,我们对他其实是没有任何认知的,这时候我们需要给他一个冷启动的标配。比如,他来之后给他一个默认的标配,给他分一定量资源。

另外要做流量预估,对于一个已经在我们平台上跑了很多天的用户,他的流量是可预期的。我们可以根据他历史上多少天对流量进行预估,这跟广告比较像,广告里面有一个库存的概念,你要提前预估库存才能进行售卖,同理,要预估流量来采购资源,保证系统平滑运行。这套系统现在是在跑在 XSpark 上的。

另外需要一个实时扩容缩容的东西。什么意思呢?就是当某用户是在我们平台上跑了大概三个月,表现非常好,流量很稳定。但如果是一个电商用户,比如他 618 大促,这种我们算法搞不定,它跑在我们的算法之外。所以我们需要进行动态的扩容缩容,它不依赖于任何算法去做预测,只是根据现有的情况,实时增加容量或者减少容量,它是基于我们之前的 Pandora workflow 做的,我们也不需要做基建,只需要搞定这个系统就可以了。

搞定了流量预估、动态扩缩容,我们应该不会存在热点了。这里面还有一个问题需要注意,就是稳定性的事情。就是我们的编排算法一定要稳定,这个稳定是什么意思?

之前我们在介绍的 Producer 的时候大家也注意到,Producer 是一个轻状态的server,它的迁移成本非常低,而对于 ES Shard ,迁移成本非常高,比如这个 Shard 本来已经搞定了 100G 的量,这时候属于算法不稳定,每天算法跑完之后编排结果出来之后,需要对 Shard 进行大量挪动迁移,其实对整个集群压力非常大。因为你想 1 个 T 的 Shard 如果从这个磁盘拷到另外一个磁盘,大致也是需要好几个小时的。

所以这个算法必须是稳定,必须能够以最小的 Shard 编排结果搞定热点问题。搞定了 Shard 编排系统,又搞定了 Producer 系统,还搞定了搜索的查询执行计划系统,看似我们的系统应该是完美了。

图 13

因为我们团队 ES 工程师有经验的比较多,所以我们觉得可以用 ES 搞定这个问题。但是在项目选型之初,我们觉得不希望系统被 ES 绑定,所以我们的系统其实是跟ES 解耦的,包括 API 的一些接口定义都是跟 ES 无关的,也就是我们希望我们的系统后面能挂到更多的引擎,事实上我们现在在搞定之前一些比较头疼的问题之后,我们现在也在尝试一种新的可能,尝试让我们的系统可以挂在更多的引擎解决这个问题。

我说完那么多,那么,我们到底搞定了多少事情?

第一,支撑海量用户;第二,支撑每天100T+、2000亿+ 的流量;第三,没有 LAG;第四,查询可以保证秒级返回;第五,接近 0 运维,因为即便我们系统现在做的特别好,但是总有一些不在我们的现在系统能够做的范围之内,这个指的是编排等分配问题,所以有时候需要人工去干预一下;第六,现在系统能够做到可用性在 99.9%。

最后再给大家做个预告,七牛云 Pandora 大数据平台内测邀请中,点击阅读原文即可参与。

    本文作者王拓转载请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。

    高可用架构

    改变互联网的构建方式