信息技术发展突飞猛进,网络数据呈现爆炸之势,搜索引擎的实时性面临巨大挑战。百度搜索引擎每天处理着数万亿次的链接分析和数百亿次的互联网资源采集。作为百度搜索引擎的核心数据库Tera,是如何支撑万亿量级的实时数据处理呢?

在5月20日百度开发者中心主办、极客邦科技承办的71期百度技术沙龙上,百度网页搜索基础架构技术经理齐志宏和资深工程师郑然,为大家免费放送了大型分布式表格系统Tera在百度搜索引擎中的应用、以及Tera架构设计与实践的全攻略。

Tera在百度搜索引擎中的应用

在讲解Tera的应用之前,百度网页搜索基础架构技术经理齐志宏首先介绍了百度搜索架构,百度搜索引擎的作用是连接人与信息、连接人与服务,信息抓取、索引构建、检索系统构成了搜索引擎最经典的三大板块。

互联网上的信息是如何通过搜索引擎最终展示给用户的?首先,网页被搜索引擎发现,通过抓取进入搜索引擎;然后,有价值的网页经过筛选,进行正排计算和倒排计算,完成索引构建;最后,通过检索系统将最终的结果呈现给用户。

伴随互联网信息爆发式的增长,百度搜索架构也在逐渐向实时化方向演进,在介绍完搜索架构之后,齐志宏从链接存储、索引筛选、用户行为分析三个场景切入,详细讲解了Tera在实时搜索架构中的应用。

齐志宏先为大家解释什么是Tera:一种大型分布式表格存储系统,具有高性能、可伸缩等存储特点,最初的设计是为了管理万亿量级的超链和网页信息。Tera在架构演进中到底扮演了怎样的核心角色呢?

首先来看存储链接。百度推出的Spider 3.0系统是基于Tera的实时架构,以Tera为核心,承载了链接库、网页库的存储,将原有基于MapReduce的批量计算转变为基于Tera的实时计算,实现每秒亿级的数据随机读写、每天处理万亿量级的链接操作,信息抓取模块(即Spider)进入了实时处理时代。

第二个是索引筛选。索引筛选的核心作用是让有价值的信息进入索引。Tera架构作为数据存储中心,存储了包含网页库、去重库、结果库在内的所有中间数据和最终结果,通过流式计算的方式完成页面特征拼接、页面价值计算、网页去重以及索引排序等核心操作的实时化改造。网页从抓取到筛选完成的整个过程,实现了从天级变到分钟级甚至秒级的飞跃。

最后一个是用户行为分析。用户行为分析在搜索效果改进和搜索引擎的评价等方面,都具有重要价值。基于Tera的实时用户行为数据流,将用户数据的时效性推向新高度。实时数据产出的延迟可降至秒级,突发时效性识别、用户意图分析、产品迭代评估等多个维度均可实时获取用户数据,进行实时分析,对时效性和用户体验有很大的提升。

总体上,Tera支撑了着搜索引擎大规模的实时数据读写,将批量、全量计算转变为增量、实时的数据计算,极大的提升了搜索引擎的实时数据处理能力,Tera是百度搜索引擎从批量处理迈向实时计算的架构基础。

Tera大型分布式表格系统的设计与实践

Tera完成了百度搜索向万亿级数据实时搜索的跃进,成为炙手可热的数据库系统,那么,如何做好Tera架构的设计与实践成为开发者最为关心的问题。百度网页搜索基础架构资深工程师郑然在演讲过程中,围绕背景、数据模型、架构与设计、高可用实践以及性能优化等方面,详细讲解了Tera设计和实践过程。

郑然表示,百度搜索引擎面临三大业务特点, (1)数据量大,PB到百PB这样的量级;(2)离线处理过程中,以站点等前缀方式访问数据是普遍的需求;(3)数据类型不固定。 这样的业务特点决定着Tera设计和实践的过程。

Tera设计的数据模型

Tera的数据模型有以下几个特点,首先它是Key-Value模型,再深入一层,它是典型的BigTable模型,同时,一个非常重要的特点就是全局有序。这几个特点结合在一起,就是Tera数据模型的设计目标。

Tera设计的系统架构

Tera系统主要由Tabletserver、Master和ClientSDK三部分构成, 数据持久化到底层的分布式文件系统中。其中Tabletserver是核心服务器,承载着所有的数据管理与访问;Master是系统的仲裁者,负责表格的创建、Schema更新与负载均衡;ClientSDK包含供管理员使用的命令行工具Teracli和给用户使用的SDK。

表格被按RowKey全局排序,并横向切分成多个Tablet,每个Tablet负责服务RowKey的一个区间,表格又被纵向且分为多个LocalityGroup,一个Tablet的多个LocalityGroup在物理上单独存储,可以选择不同的存储介质,用以优化访问效率。

Tera的高可用实践

Tera的高可用性比较关键,直接影响整个系统的服务质量,其实现方式包括两个方面:Tablet Server可用性以及负载均衡。

Tablet Server的可用性:1)Tablet Server向ZooKeeper注册,利用ZooKeeper检测Tablet Server的存活;2)Tablet Server挂掉之后,Master收到ZooKeeper通知,进行Tablet迁移。具体迁移过程,会把挂掉的Tablet Server节点迁移到Kick节点上,当Tablet Server发现自己出现在Kick节点下面,自行退出。

负载均衡:负载均衡会直接影响整个集群的可用性,所以负载均衡更本质上来说是实现高可用的技术手段。影响Tera负载均衡的因素相对较少,主要在SSD容量、随机读和随机写这三个方面。针对上述影响因素, Tera从两个层面来进行负载均衡策略的设计。首先平衡各个Tablet Server读请求Pending的数据量, 同时利用历史值来平滑负载短时间内抖动的影响; 其次根据SSD容量平衡各个Tablet的数据大小。

Tera设计的性能优化

郑然表示,Tera设计的性能优化,是百度在做设计过程中总结出来的,实用性较强。

第一个经验是需要考虑对分布式文件系统友好。Tera的数据持久化在分布式文件系统上,必须考虑对其友好的使用。根据LevelDb的特点,数据首先要持久化在WAL上,确保异常情况下不丢数据,所以写WAL的延迟和吞吐直接决定了用户写请求的延迟和吞吐。然而分布式文件系统需要写多个数据副本,在某些副本异常情况下,如果依赖分布式文件系统层面去自动恢复的话,可能大幅增加延迟。Tera针对写WAL异常情况,采用关闭旧文件创建新文件的方法,规避分布式文件系统的短板。同时WAL持久化成功才能保证用户数据不丢,所以WAL写完之后必须sync强制数据落盘,而sst文件不强制要求每次写请求落盘,从而减少对分布式文件系统的压力。

第二个经验是关于SSD的运用。SATA的随机读能力很差,虽然LevelDb做了很多优化,但是仍然无法突破硬件瓶颈,SSD的价格现在是越来越便宜,但成本依然比SATA高。Tera的数据全部持久化在SATA上,仅把SSD作为Cache使用,这是平衡性能和成本的一种途径。

第三个经验是异步逻辑设计。Tera里面所有可能阻塞的逻辑都是异步的,异步逻辑可以很好提高性能,另外客户端缓存Tablet位置信息,因为tablet位置信息通常情况下变化的也不频繁,同时扩展了LevelDb的BloomFilter机制,可以提升20%左右的读性能。

java数据库的量级_百度万亿量级数据库Tera架构应用、设计与实践全攻略相关推荐

  1. 百度搜索数据库——Tera 设计和实践全攻略

    百度搜索引擎的作用是连接人与信息.连接人与服务,信息抓取.索引构建.检索系统构成了搜索引擎最经典的三大板块. 互联网上的信息是如何通过搜索引擎最终展示给用户的?首先,网页被搜索引擎发现,通过抓取进入搜 ...

  2. 58技术主席:还原万亿级三高业务场景的设计与实践

    孙玄,前58集团技术委员会主席,前转转二手交易平台首席架构师.今天想跟你聊点儿企业里那些年薪百万的架构师,他们的架构设计思维是如何升级的,我们来聊点儿干的! 01.百万年薪的核心竞争力 作为前58集团 ...

  3. prusai3打印机使用教程_【打印虎】零基础自制RepRap Prusa i3图解全攻略

    第一节,介绍 3D 打印技术,特别是面向普通用户的桌面级 3D 打印,在最近几年间得到了快速的发展. 很多国内外 DIY 爱好者,都可以利用 3D 打印机,自己设计.改进机械零件,并把自己的 设计快速 ...

  4. 百度万亿流量的转发引擎BFE开源了!华为折叠屏曝光,采用传统翻盖式手机折叠方案;微软将关闭安卓iOS平台Cortana……...

    关注并标星星CSDN云计算 速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周两次,打卡即read   更快.更全了解泛云圈精彩news   go ...

  5. 美团万亿级 KV 存储架构与实践

    KV 存储作为美团一项重要的在线存储服务,承载了在线服务每天万亿级的请求量. 在 2019 年 QCon 全球软件开发大会(上海站)上,美团高级技术专家齐泽斌分享了<美团点评万亿级 KV 存储架 ...

  6. java pdf 修改内容_生成PDF全攻略之在已有PDF上添加内容的实现方法

    项目在变,需求在变,不变的永远是敲击键盘的程序员..... PDF 生成后,有时候需要在PDF上面添加一些其他的内容,比如文字,图片.... 经历几次失败的尝试,终于获取到了正确的代码书写方式. 在此 ...

  7. 万亿级消息背后: 小米消息队列的实践

    万亿级消息背后的小米消息队列实践 往期文章回顾:Mysql数据实时同步实践 目录 业务背景 架构与关键问题 性能与资源优化 平台化效率 小米消息中间件的规划与愿景 前文<消息队列价值思考> ...

  8. 《Java程序员职场全攻略:从小工到专家》连载十二:大家都是个什么身价

    大家都是个什么身价 根治这种症状的第一步,就是让其彻底看清大家到底都是什么样的身价.不过这服药可不好熬出来,薪水这个问题,从哪个角度讲可能都不一样.横向可以分为不同学历.不同技术.不同公司.不同职位. ...

  9. dw2019连接mysql数据库_Dreamweaver 8.0连接Mysql数据库全攻略

    1 Dreamweaver 8.0 连接 Mysql 数据库全攻略 一.所需安装文件清单: 1 . Dreamweaver8.0 2 . SP2DBFix1.0.2.mxp ( Dreamweaver ...

最新文章

  1. SQL2K数据库开发二十三之索引操作重建索引
  2. find查找文件的时候排除某个或几个文件或目录
  3. JavaScript流程控制之分支结构
  4. 移动端页面滑动事件穿透问题及其解决方案
  5. 采用开源软件搭建WebGIS系统(6)数据格式
  6. Java EE 7:带有Glassfish v4的JMS 2.0
  7. 读书笔记《Spring Boot实战 —— Java EE 开发的颠覆者》
  8. Python2和Python3中@abstractmethod的用法
  9. GitHub提速方法大揭秘,10M速度使用无忧
  10. plc 上位机编译算法_西门子PLC的开放式TCP通信
  11. Theano 中文文档 0.9 - 7.2.1 起手式 —— 代数
  12. 【文智背后的奥秘】系列篇——分布式爬虫之WebKit
  13. iphone4 Safari实现滚动条功能
  14. ECS Linux 服务器解除ssh登陆后被锁定或暂停输入输出的终端
  15. 服务器系统上1068错误,一个backup exec 2012的真实故障案例,服务无法启动1068
  16. linux离线安装pyhive所依赖的包
  17. 神经网络中_,predicted=中_,的作用
  18. 钉钉邮箱登录入口_钉邮的使用攻略②
  19. Windows 7安装loopback接口
  20. 斐波那契数列(剑指offer 10-I)

热门文章

  1. 2020年中国高端物业在管面积、市场规模发展现状及高端物业竞争格局分析[图]
  2. 关于win10连网显示“网络使用较旧的安全标准。建议连接到其他网络”的解决方法
  3. JS标签选择器以及节点操作
  4. Mybatis-plus中QueryWrapper的使用
  5. php生成sn码,php生成唯一随机码
  6. 在 Java 中如何加快大型集合的处理速度
  7. Java中常见的几种任务调度框架对比
  8. Uber火了!它改变了哪些营销游戏规则?
  9. 拼多多app是原生还是html,拼多多app下架了是怎么回事?原因及上线时间分析
  10. git 基本命令总结