SlideShare une entreprise Scribd logo
1  sur  21
分布式索引系统调研

   业界
内容
•   Google索引
•   淘宝
•   Solr
•   Katta
GOOGLE索引
基于MapReduce索引框架
• 基于MapReduce的搜索索引系统。从本质上而言,这个索
  引是由序列的批处理操作组成的。它通过把对数据集的大
  规模操作分发给网络上的每个节点进行运算,而每个节点
  会周期性的把完成的工作和状态的更新报告回主计算。
 – 缺点:缺乏实时性
Caffeine 索引
• 咖啡因索引系统更新采用了全然不同的方式,Google针对小部
  分网络进行分析,而非一次分析整个网络,而且一天24小时持
  续更新其全球索引,因此只要Google一发现新的网页,就会直
  接把它加进索引中,这代表使用者比以前更容易找到更新的资
  讯。

• 咖啡因索引系统每秒可平行处理数十万的页面,这些页面若用
  纸张堆起来有3哩高,同时咖啡因占据了Google资料库约1亿GB
  的储存空间,而且以每天数十万GB的速度增加。

• 由于咖啡因改善了索引网络内容的速度,因此当一个新的博客
  甚至论坛文章出现时,使用者将可比过去更快速地通过Google
  找到相关内容的连结。
Percolator
•   Percolator是Google使用的一款基于Bigtable的、支持事务的增量索引系统,以
    客户端库的形式提供给用户。

•   搜索的网页引入索引,在爬取的文件的同时,Google的主系统能够同时进行
    数据处理。
•                              DBMS-Procolator-MR
    Percolator系统能对一个大数据集增量处理更新

•   Percolator的设计原理其中之一在于提供一个能够随机访问的文件库,并单独
    进行处理,以替代MapReduce的全局式处理方式

•   快照隔离——这是Percolator的设计核心,其目的在于提供cross-row、cross-
    table、ACID兼容性等数据交换

•   Percolator还提供了一个类似系统观测员“observers”的功能,意思是一旦用户
    对指定的列进行更改,系统将进行自动调用,“目的在于协助开发人员保持服
    务器计算状态的跟踪”。
Percolator
http://hi.baidu.com/quest2run/blog/item/6ae
d0af88e67d273024f56e3.html




             1.   Percolator worker 包含 注册定制的 observer 列表并 “扫描”/“监视”
                  Bigtable column 的更新,在更新时回调(通知)相应的observer
             2.   observer 向 Bigtable tablet server 发送读/写 Transaction RPC, Bigtable
                  tablet server 进而向 GFS chunk server 转发 该 读/写 RPC
             3.   系统依赖 timestamp oracle service (与 Oracle 数据库无关,不知道 Google
                  工程为什么不取一个更有创意的名字?) 提供严格的递增时间戮达到事务
                  完整性 Transaction ACID (by snapshoot isolation)
             4.   系统依赖 lock service 来达到高效地查找等待处理的更新/“脏”通告(dirty
                  notifications)
淘宝
淘宝OceanBase
• OceanBase是一个支持海量数据的高性能数
  据库系统                                  降低数据规模的方法:
                                        1)GFS+MR/HDFS+MR (离线)
                                        2)弱一致性、软事务

• OceanBase逻辑架构简图




 http://rdc.taobao.com/blog/cs/?p=956
淘宝OceanBase
• ChunkServer
   – 保存基准数据的服务器,通常是多台,为了避免软件硬件故障导致的服
     务中断,同一份基准数据通常保存了3份并存储在不同ChunkServer上
• UpdateServer
   – 保存动态数据的服务器,一般是单台服务器。为了避免软件硬件故障导
     致的服务中断,UpdateServer记录commit log并通常使用双机热备
• MergeServer
   – 进行静态动态数据合并的服务器,常常与ChunkServer共用一台物理服务
     器。MergeServer使得用户能够访问到完整的最新的数据
• RootServer
   – 配置服务器,一般是单台服务器。为了避免软件硬件故障导致的服务中
     断,RootServer记录commit log并通常采用双机热备。由于RootServer负载
     一般都很轻,所以它常常与UpdateServer共用物理机器


                                          Copy on write
TAIR
Tair是一个分布式的key/value结构数据的解决方案,系统默认
支持基于内存和文件的存储引擎,对应于通常我们所说的缓
存和持久化存储。
 – Tair具有良好的架构,使得其在可扩展性、数据安全性方面都有较好
   的表现:
 – 基于对照表的灵活、良好的可扩展性
 – 轻量级的configserver
 – 抽象的存储引擎层,支持添加新的存储引擎
 – 自动的复制和迁移,对用户透明
 – 多机架和多数据中心的支持
 – 插件容器
SOLR分布式索引
SOLR架构
                                                              Update
                           HTTP Request Servlet
                                                              Servlet
 Admin                    Disjunction                                     R
Interface      Standard                 Customer     XML        XML
                              Max                                         e
               Request                   Request   Response    Update
                           Request                                        p
               Handler                   Handler    Writer    Interface
                           Handler                                        l
                                                                          i
 Config                    Schema                  Caching
                                                                          c
                                                              Update      a

          Analysis           Solr Core              Config
                                                              Handler     t
                                                                          i
                                                                          o
                                                                          n
                               Lucene
Solr
Solr优化
• 调优某个Solr服务器(Scale High)
  – 通过缓存和内存管理优化某个单实例的Solr。将Solr部署到一
    个拥有快速的CPU和硬件的专用服务器,通过调优,最大化
    的将单个服务器的性能达到最高。
• 使用多Solr服务器(Scale Wide)
  – 使用多Solr服务器。如果你的avgTimePerRequest参数在你可
    接受的范围内(数据量一般在数百万),那么可以通过配置
    将你的master上的索引完整地复制到slave机器上;如果你的
    查询已经很慢,那么使用分片来讲你的单个查询的负载分发
    到多个Solr服务器上。
• 使用复制(replication)和分片(sharding)(Scale Deep)
  – 当你的数据量足够大,你需要同时使用复制和分片,那么每
    个分片将对应一个master和若干slave,这将是一个最复杂的
    架构。
Solr
SolrCloud
• 对solr的扩展,简化了Solr集群的部署和使
  用。具有如下特点:

 – 对整个集群进行集中式地配置
 – 自动的负载均衡和故障转移
 – 集群的状态和布局存储在中心系统中
 – 集成Zookeeper,对集群的配置进行协调和存储
SolrCloud
• 设计目标
 – 高可得性和容错
 – 集群的大小调整和重新平衡负载
   • 根据热点使集群增长或者重新平衡负载,shards(碎片)应该能
     够调整大小。将碎片分裂,并分配到新的服务器中。
 – clients不应该知道cluster的布局
 – 开发的API
   • zookeeper的schema应该被良好地定义和开放,运行其他组件通过
     zookeeper查看和改变集群
 – 支持各级的自定义集群
   • 用户管多少,solr管多少,可以根据需要自由划分
 – 支持用户指定partition
   • 例如可以根据地理区域,时间或者用户等等,能够显著提高性能
Katta
Katta & Zookeeper
ZookeeperClient                                            ZookeeperServer

  ClientCnxn                                                   QuorumPeer         Factory
              Waiting        Read Response
               Event                                                    IO
              Queue
                                                                                 Outgoing
                                                                    Send
                                                                                  Buffers
                                                      Socket    NIO ServerCnxn
                  Submit                      Send
                                             Thread                  Recv
                  Request       IO
                                                                                             Request
                                                                                            Processor
     Event                      Outgoing       ping               Zookeeper
     Threat                      Queue                              Server
                                                                                        Submit Request



                 Get Data
                                  Register
                                   Event
                 ZK Client                                                                  Server
  Watcher
Others
其他的一些基于Key-value的分布式存储系统

Contenu connexe

Tendances

Exodus重构和向apollo迁移
Exodus重构和向apollo迁移Exodus重构和向apollo迁移
Exodus重构和向apollo迁移wang hongjiang
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统锐 张
 
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)hik_lhz
 
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术团队
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析frogd
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析frogd
 
Ceph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom LabsCeph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom LabsCeph Community
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎frogd
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)ykdsg
 
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析frogd
 
Hbase性能测试文档
Hbase性能测试文档Hbase性能测试文档
Hbase性能测试文档baggioss
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)wang hongjiang
 
Golang advance
Golang advanceGolang advance
Golang advancerfyiamcool
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCfrogd
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结Yiwei Ma
 

Tendances (20)

Exodus重构和向apollo迁移
Exodus重构和向apollo迁移Exodus重构和向apollo迁移
Exodus重构和向apollo迁移
 
20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统20110625.【打造高效能的cdn系统】.易统
20110625.【打造高效能的cdn系统】.易统
 
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
Linux集群应用实战 通过lvs+keepalived搭建高可用的负载均衡集群系统(第二讲)
 
美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践美团点评技术沙龙010-Redis Cluster运维实践
美团点评技术沙龙010-Redis Cluster运维实践
 
Kafka in Depth
Kafka in DepthKafka in Depth
Kafka in Depth
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
 
MySQL查询优化浅析
MySQL查询优化浅析MySQL查询优化浅析
MySQL查询优化浅析
 
Ceph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom LabsCeph Day Shanghai - Ceph in Chinau Unicom Labs
Ceph Day Shanghai - Ceph in Chinau Unicom Labs
 
My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎My sql 5.6新特性深入剖析——innodb引擎
My sql 5.6新特性深入剖析——innodb引擎
 
Jvm内存管理基础
Jvm内存管理基础Jvm内存管理基础
Jvm内存管理基础
 
Ansible 101
Ansible 101Ansible 101
Ansible 101
 
Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)Java线上应用问题排查方法和工具(空望)
Java线上应用问题排查方法和工具(空望)
 
排队论及其应用浅析
排队论及其应用浅析排队论及其应用浅析
排队论及其应用浅析
 
Hbase性能测试文档
Hbase性能测试文档Hbase性能测试文档
Hbase性能测试文档
 
Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)Effective linux.3.(diagnosis)
Effective linux.3.(diagnosis)
 
Baidu Cloud Foundry
Baidu Cloud FoundryBaidu Cloud Foundry
Baidu Cloud Foundry
 
Golang advance
Golang advanceGolang advance
Golang advance
 
InnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCCInnoDB Transaction Lock and MVCC
InnoDB Transaction Lock and MVCC
 
Puppet安装总结
Puppet安装总结Puppet安装总结
Puppet安装总结
 
JVM及其调优
JVM及其调优JVM及其调优
JVM及其调优
 

En vedette

Sit aprend pausa marilene
Sit aprend pausa marileneSit aprend pausa marilene
Sit aprend pausa marileneprofmarilene
 
Jakub Vrána: Zkušenosti z vývoje ve Facebooku
Jakub Vrána: Zkušenosti z vývoje ve FacebookuJakub Vrána: Zkušenosti z vývoje ve Facebooku
Jakub Vrána: Zkušenosti z vývoje ve FacebookuDevelcz
 
ความสัมพันธ์ระหว่างครูจูหลิงกับสมองของ
ความสัมพันธ์ระหว่างครูจูหลิงกับสมองของความสัมพันธ์ระหว่างครูจูหลิงกับสมองของ
ความสัมพันธ์ระหว่างครูจูหลิงกับสมองของmimlovely
 
Bash入门基础篇
Bash入门基础篇Bash入门基础篇
Bash入门基础篇Zhiyao Pan
 

En vedette (6)

la familia
la familiala familia
la familia
 
Sit aprend pausa marilene
Sit aprend pausa marileneSit aprend pausa marilene
Sit aprend pausa marilene
 
Jakub Vrána: Zkušenosti z vývoje ve Facebooku
Jakub Vrána: Zkušenosti z vývoje ve FacebookuJakub Vrána: Zkušenosti z vývoje ve Facebooku
Jakub Vrána: Zkušenosti z vývoje ve Facebooku
 
Absent laboral ind cat
Absent laboral ind catAbsent laboral ind cat
Absent laboral ind cat
 
ความสัมพันธ์ระหว่างครูจูหลิงกับสมองของ
ความสัมพันธ์ระหว่างครูจูหลิงกับสมองของความสัมพันธ์ระหว่างครูจูหลิงกับสมองของ
ความสัมพันธ์ระหว่างครูจูหลิงกับสมองของ
 
Bash入门基础篇
Bash入门基础篇Bash入门基础篇
Bash入门基础篇
 

Similaire à 分布式索引系统调研

大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京vanadies10
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
百度 刘宁 系统也智慧
百度 刘宁 系统也智慧百度 刘宁 系统也智慧
百度 刘宁 系统也智慧guiyingshenxia
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维guiyingshenxia
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维colderboy17
 
Rpc原理与实现
Rpc原理与实现Rpc原理与实现
Rpc原理与实现wavefly
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUGYingSiang Geng
 
Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析Frank Lee
 
Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808OpenCity Community
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统智杰 付
 
淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统Dai Jun
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Wensong Zhang
 
Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02lovingprince58
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Michael Zhang
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践drewz lin
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践Wensong Zhang
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践lovingprince58
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践drewz lin
 

Similaire à 分布式索引系统调研 (20)

大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
百度 刘宁 系统也智慧
百度 刘宁 系统也智慧百度 刘宁 系统也智慧
百度 刘宁 系统也智慧
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维
 
网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维网易 李弈远 网易服务集成框架的构建与运维
网易 李弈远 网易服务集成框架的构建与运维
 
Rpc原理与实现
Rpc原理与实现Rpc原理与实现
Rpc原理与实现
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析
 
Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808Pm 04 华胜天成openstack实践汇报-20120808
Pm 04 华胜天成openstack实践汇报-20120808
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统
 
淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统淘宝图片存储与Cdn系统
淘宝图片存储与Cdn系统
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统
 
Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02Taobao 海量图片存储与CDN系统02
Taobao 海量图片存储与CDN系统02
 
Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统Taobao海量图片存储与cdn系统
Taobao海量图片存储与cdn系统
 
阿里云技术实践
阿里云技术实践阿里云技术实践
阿里云技术实践
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
Taobao base
Taobao baseTaobao base
Taobao base
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 
淘宝软件基础设施构建实践
淘宝软件基础设施构建实践淘宝软件基础设施构建实践
淘宝软件基础设施构建实践
 

分布式索引系统调研

  • 2. 内容 • Google索引 • 淘宝 • Solr • Katta
  • 4. 基于MapReduce索引框架 • 基于MapReduce的搜索索引系统。从本质上而言,这个索 引是由序列的批处理操作组成的。它通过把对数据集的大 规模操作分发给网络上的每个节点进行运算,而每个节点 会周期性的把完成的工作和状态的更新报告回主计算。 – 缺点:缺乏实时性
  • 5. Caffeine 索引 • 咖啡因索引系统更新采用了全然不同的方式,Google针对小部 分网络进行分析,而非一次分析整个网络,而且一天24小时持 续更新其全球索引,因此只要Google一发现新的网页,就会直 接把它加进索引中,这代表使用者比以前更容易找到更新的资 讯。 • 咖啡因索引系统每秒可平行处理数十万的页面,这些页面若用 纸张堆起来有3哩高,同时咖啡因占据了Google资料库约1亿GB 的储存空间,而且以每天数十万GB的速度增加。 • 由于咖啡因改善了索引网络内容的速度,因此当一个新的博客 甚至论坛文章出现时,使用者将可比过去更快速地通过Google 找到相关内容的连结。
  • 6. Percolator • Percolator是Google使用的一款基于Bigtable的、支持事务的增量索引系统,以 客户端库的形式提供给用户。 • 搜索的网页引入索引,在爬取的文件的同时,Google的主系统能够同时进行 数据处理。 • DBMS-Procolator-MR Percolator系统能对一个大数据集增量处理更新 • Percolator的设计原理其中之一在于提供一个能够随机访问的文件库,并单独 进行处理,以替代MapReduce的全局式处理方式 • 快照隔离——这是Percolator的设计核心,其目的在于提供cross-row、cross- table、ACID兼容性等数据交换 • Percolator还提供了一个类似系统观测员“observers”的功能,意思是一旦用户 对指定的列进行更改,系统将进行自动调用,“目的在于协助开发人员保持服 务器计算状态的跟踪”。
  • 7. Percolator http://hi.baidu.com/quest2run/blog/item/6ae d0af88e67d273024f56e3.html 1. Percolator worker 包含 注册定制的 observer 列表并 “扫描”/“监视” Bigtable column 的更新,在更新时回调(通知)相应的observer 2. observer 向 Bigtable tablet server 发送读/写 Transaction RPC, Bigtable tablet server 进而向 GFS chunk server 转发 该 读/写 RPC 3. 系统依赖 timestamp oracle service (与 Oracle 数据库无关,不知道 Google 工程为什么不取一个更有创意的名字?) 提供严格的递增时间戮达到事务 完整性 Transaction ACID (by snapshoot isolation) 4. 系统依赖 lock service 来达到高效地查找等待处理的更新/“脏”通告(dirty notifications)
  • 9. 淘宝OceanBase • OceanBase是一个支持海量数据的高性能数 据库系统 降低数据规模的方法: 1)GFS+MR/HDFS+MR (离线) 2)弱一致性、软事务 • OceanBase逻辑架构简图 http://rdc.taobao.com/blog/cs/?p=956
  • 10. 淘宝OceanBase • ChunkServer – 保存基准数据的服务器,通常是多台,为了避免软件硬件故障导致的服 务中断,同一份基准数据通常保存了3份并存储在不同ChunkServer上 • UpdateServer – 保存动态数据的服务器,一般是单台服务器。为了避免软件硬件故障导 致的服务中断,UpdateServer记录commit log并通常使用双机热备 • MergeServer – 进行静态动态数据合并的服务器,常常与ChunkServer共用一台物理服务 器。MergeServer使得用户能够访问到完整的最新的数据 • RootServer – 配置服务器,一般是单台服务器。为了避免软件硬件故障导致的服务中 断,RootServer记录commit log并通常采用双机热备。由于RootServer负载 一般都很轻,所以它常常与UpdateServer共用物理机器 Copy on write
  • 11. TAIR Tair是一个分布式的key/value结构数据的解决方案,系统默认 支持基于内存和文件的存储引擎,对应于通常我们所说的缓 存和持久化存储。 – Tair具有良好的架构,使得其在可扩展性、数据安全性方面都有较好 的表现: – 基于对照表的灵活、良好的可扩展性 – 轻量级的configserver – 抽象的存储引擎层,支持添加新的存储引擎 – 自动的复制和迁移,对用户透明 – 多机架和多数据中心的支持 – 插件容器
  • 13. SOLR架构 Update HTTP Request Servlet Servlet Admin Disjunction R Interface Standard Customer XML XML Max e Request Request Response Update Request p Handler Handler Writer Interface Handler l i Config Schema Caching c Update a Analysis Solr Core Config Handler t i o n Lucene
  • 14. Solr
  • 15. Solr优化 • 调优某个Solr服务器(Scale High) – 通过缓存和内存管理优化某个单实例的Solr。将Solr部署到一 个拥有快速的CPU和硬件的专用服务器,通过调优,最大化 的将单个服务器的性能达到最高。 • 使用多Solr服务器(Scale Wide) – 使用多Solr服务器。如果你的avgTimePerRequest参数在你可 接受的范围内(数据量一般在数百万),那么可以通过配置 将你的master上的索引完整地复制到slave机器上;如果你的 查询已经很慢,那么使用分片来讲你的单个查询的负载分发 到多个Solr服务器上。 • 使用复制(replication)和分片(sharding)(Scale Deep) – 当你的数据量足够大,你需要同时使用复制和分片,那么每 个分片将对应一个master和若干slave,这将是一个最复杂的 架构。
  • 16. Solr
  • 17. SolrCloud • 对solr的扩展,简化了Solr集群的部署和使 用。具有如下特点: – 对整个集群进行集中式地配置 – 自动的负载均衡和故障转移 – 集群的状态和布局存储在中心系统中 – 集成Zookeeper,对集群的配置进行协调和存储
  • 18. SolrCloud • 设计目标 – 高可得性和容错 – 集群的大小调整和重新平衡负载 • 根据热点使集群增长或者重新平衡负载,shards(碎片)应该能 够调整大小。将碎片分裂,并分配到新的服务器中。 – clients不应该知道cluster的布局 – 开发的API • zookeeper的schema应该被良好地定义和开放,运行其他组件通过 zookeeper查看和改变集群 – 支持各级的自定义集群 • 用户管多少,solr管多少,可以根据需要自由划分 – 支持用户指定partition • 例如可以根据地理区域,时间或者用户等等,能够显著提高性能
  • 19. Katta
  • 20. Katta & Zookeeper ZookeeperClient ZookeeperServer ClientCnxn QuorumPeer Factory Waiting Read Response Event IO Queue Outgoing Send Buffers Socket NIO ServerCnxn Submit Send Thread Recv Request IO Request Processor Event Outgoing ping Zookeeper Threat Queue Server Submit Request Get Data Register Event ZK Client Server Watcher