SlideShare a Scribd company logo
分布式 Key Value Store 漫谈

        V1.0
    广州技术沙龙(09/08/08)

           Tim Yang
      http://timyang.net/
Agenda
• Key value store 漫谈
  – MySQL / Sharding / K/V store
  – K/V store性能比较
• Dynamo 原理及借鉴思想
  – Consistent hashing
  – Quorum (NRW)
  – Vector clock
  – Virtual node
• 其他话题
说明
• 不复述众所周知的资料
 –不是Key value store知识大全
• 详解值得讲解或有实践体会的观点
场景
• 假定场景为一IM系统,数据存储包括
 – 1. 用户表(user)
   • {id, nickname, avatar, mood}
 – 2. 用户消息资料(vcard)
   • {id, nickname, gender, age, location…}
 – 好友表(roster)
   • {[id, subtype, nickname, avatar,
     remark],[id2,…],…}
单库单表时代
• 最初解决方案
 –单库单表, MySQL
• 随着用户增长,将会出现的问题
 –查询压力过大
• 通常的解决方案
 –MySQL replication及主从分离
单库单表时代
• 用户数会继续增大,超出单表写的负
  载
• Web 2.0, UGC, UCD的趋势,写请求
  增大,接近读请求
 – 比如读feed, 会有 “like” 等交互需要写
• 单表数据库出现瓶颈,读写效率过低
分库分表时代
• 将用户按ID(或其他
  字段)分片到不同数
  据库
• 通常按取模算法
  hash() mod n
• 解决了读写压力问
  题
但是,Shard ≠ 架构设计
• 架构及程序人员的精力消耗在
  切分上
• 每一个新的项目都是重复劳动
不眠夜-resharding
通知:我们需要21:00-7:00停机维护
• 有办法避免吗?
Sharding framework
• 框架,如hivedb
 –隔离分库的逻辑
 –期望对程序透明,和单库方式编程
• 没有非常成功的框架
 –数据存储已经类似key/value
 –期望用SQL方式来用,架构矛盾
• 框架之路也失败了,为什么?
分库分表过时了
• 无需继续深入了解那些切分的奇巧淫技
• nosql!
Key value时代
• 我们需要的是一个分布式,自扩展
  的storage
• Web应用数据都非常适合
  key/value形式
–User, vcard, roster 数据
  • {user_id: user_data}
百家争鸣
•   Berkeley DB(C), MemcacheDB(C)
•   Bigtable, Hbase(Java), Hypertable(C++, baidu)
•   Cassandra(Java)
•   CouchDB(Erlang)
•   Dynamo(Java), Kai/Dynomite/E2dynamo(Erlang)
•   MongDB
•   PNUTS
•   Redis(C)
•   Tokyo Cabinet(C)/Tokyo Tyrant/LightCloud
•   Voldemort(Java)
问题
• Range select:
 –比如需删除1年未登录的用户
• 遍历
 –比如需要重建索引
• Search
 –广州,18-20
• 没有通用解决方法,依赖外部
• Search
  –Lucene
  –Sphinx
非分布式key/value store
• 通过client hash来实现切分
• 通过replication来实现backup,
  load balance
• 原理上和MySQL切分并无区别,
  为什么要用?
 –读写性能
 –简洁性 (schema free)
Key store vs. MySQL
• 性能
 – Key store读写速度几乎相同 O(1)
   • O(1) vs. O(logN)
 – 读写性能都比MySQL快一个数量级以上
• 使用方式区别
 – MySQL: Relational      Object
 – Key store: Serialize   De-serialize
非分布式k/v缺少
• 自扩展能力,需要关心数据维护
  – 比如大规模MCDB部署需专人维护
• Availability, “always on”
• Response time, latency
  – No SLA(Service Level Agreement)
• Decentralize
  – Master/slave mode
产品
• Berkeley db及其上层产品, 如
  memcachedb
• Tokyo cabinet/Tyrant及上层产品,如
  LightCloud
• Redis及上层产品
• MySQL, 也有用MySQL来做,如
  friendfeed
分布式K/V store
•   Dynamo (Amazon)
•   Cassandra (facebook)
•   Voldemort (LinkedIn)
•   PNUTS (Yahoo)
•   Bigtable (Google)
•   HyperTable(Baidu)
                           (* 粗体为开源产品)
Benchmark
• Key value store
  – Berkeley db - memcachedb
  – Tokyo cabinet - Tyrant
  – Redis
• 测试环境
  – XEON 2*4Core/8G RAM/SCSI
  – 1 Gigabit Ethernet
Benchmark
• Server使用同一服务器、同一硬盘
• Client为局域网另外一台,16线程
• 都是用默认配置,未做优化
 – Memcached 1.2.8
 – bdb-4.7.25.tar.gz
 – memcachedb-1.2.1(参数 -m 3072 –N –b xxx)
 – tokyocabinet-1.4.9, tokyotyrant-1.1.9.tar.gz
 – redis-0.900_2.tar.gz (client: jredis)
• 三大高手
–Tokyo cabinet
–Redis
–Berkeley DB
• 究竟鹿死谁手?
100 bytes, 5M rows
       request per second
900
 00
800
 00
700
 00
600
 00
500
 00
400
 00                                Wie
                                    rt
300
 00                                Ra
                                    ed
200
 00
100
 00
   0
       Mmahd Mmahd
        ecce  ecceb    Tko
                        oy   Rds
                              ei
                      Cbnt
                       aie
Requests per second, 16 threads

Store              Write     Read
Memcached           55,989    50,974
Memcachedb (bdb)     8,264    35,260
Tokyo
                    11,480    46,238
 Cabinet/Tyrant
Redis               85,765    71,708
20k data, 500k rows
  request per second
16000

14000

12000

10000

8000                                         Write
                                             Read
6000

4000

2000

   0
        Memcachedb   Tokyo Cabinet   Redis
Requests per second, 16 threads

Store               Write     Read

Memcachedb            357    15,318

Tokyo Cabinet        2,080    7,900

Redis                1,874    5,641
• 到此,我们已经了解了
 –繁琐的切分
 –Key value store的优势
 –Key value store的性能区别
• 可以成为一个合格的架构师了吗
• 还缺什么
新需求

• 如何设计一个分布式的有状
  态的服务系统?
–如IM Server, game server
–用户分布在不同的服务器上,
 但彼此交互
• 前面学的“架构”毫无帮助
分布式设计思想红宝书
– Dynamo: Amazon's Highly Available
  Key-value Store
– Bigtable: A Distributed Storage System
  for Structured Data
CAP理论
• 分布式领域CAP理论,
  Consistency(一致性),
  Availability(可用性), Partition
  tolerance(分布) 三部分在系统
  实现只可同时满足二点,没法
  三者兼顾。
• 架构设计师不要精力浪费在如
  何设计能满足三者的完美分布
  式系统,而是应该进行取舍
Dynamo 思想
• The A.P. in CAP
  – 牺牲部分consistency
  – “Strong consistency reduce availability”
  – Availability: 规定时间响应(e.g. < 30ms)
• Always writable
  – E.g. shopping cart
• Decentralize
1. Consistent Hashing
• 传统的应用
 – 如memcached, hash() mod n
 – Linear hashing
• 问题
 – 增删节点,节点失败引起所有数据重新
   分配
• Consistent hash如何解决这个问题?
1. Consistent Hashing




* Image source: http://alpha.mixi.co.jp/blog/?p=158
如何确保always writable
• 传统思路
 – 双写?
 – 如何处理版本冲突,不一致?
2. Quorum NRW
• NRW
  – N: # of replicas
  – R: min # of successful reads
  – W: min # of successful write
• 只需 W + R > N
场景
•   典型实现:N=3, R=2, W = 2
•   几种特殊情况
•   W = 1, R = N, 场景?
•   R = 1, W = N , 场景?
•   W = Q, R = Q where Q = N / 2 + 1
• 如果N中的1台发生故障,Dynamo立
  即写入到preference list中下一台,确
  保永远可写入
• 问题:版本不一致
• 通常解决方案:timestamp,缺点?
 – Shopping cart
3. Vector clock
   • Vector clock
          – 一个记录(node, counter)的列表
          – 用来记录版本历史




* Image source: http://www.slideshare.net/takemaru/kai-an-open-source-implementation-of-amazons-dynamo-472179
Reconciliation, Merge version
• 如何处理(A:3,B:2,C1)?
 – Business logic specific reconciliation
 – Timestamp
 – High performance read engine
    • R = 1, W = N
• 越变越长?Threshold=10
如果节点临时故障
• 典型方案:Heart-beat, ping
• Ping如何处理无中心,多节点?
• 如何保证SLA?
 –300ms没响应则认为对方失败
• 更好的方案?
gossip
gossip




* Image source: http://www.slideshare.net/Eweaver/cassandra-presentation-at-nosql
临时故障时写入的数据怎么办
• Hinted handoff
由于存在故障因素
        如何检查数据的一致性
• Merkle tree
4. Virtual Node
• Consistent hashing, 每个节点选一个落
  点,缺点?
增删节点怎么办
• 传统分片的解决方法:手工迁移数据
• Dynamo: replication on vnode
IDC failure
• Preference list
• N nodes must in different data center
程序如何组织上述一切
• Node has 3 main component
  – Request coordination
  – Membership
  – Failure detection
Client driven vs. server driven
• Coordinator
  – Choose N nodes by using
    consistent hashing
  – Forwards a request to N
    nodes
  – Waits responses for R or
    W nodes, or timeout
  – Check replica version if get
  – Send a response to client
Dynamo impl.
• Kai, in Erlang
• E2-dynamo, in Erlang
• Sina DynamoD, in C
  –N=3
  – Merkle tree based on commit log
  – Virtual node mapping saved in db
  – Storage based on memcachedb
• 已经学习了4种分布式设计思想
–Consistent hashing
–Quorum
–Vector clock
–Virtual node
• 只是分布式理论冰山一角
• 但已经够我们使用在很多场合
• 实战一下?
分布式Socket Server
        可借鉴的思想
• 节点资源分布
• 假定5个节点采用取模分布, hash() mod n
• 某台发生故障,传统解决解决方法
 – 马上找一个替换机启动
 – 将配置文件节点数改成4,重启
 – 都需影响服务30分钟以上
应用更多分布式设计
• 1. consistent hashing
• 2. 临时故障?Gossip
• 3. 临时故障时候负载不够均匀?vnode
Hinted handoff
• 失败的节点又回来了,怎么办?
• Node 2 back, but user still on Node1
• Node 1 transfer handoff user session to
  Node2
其他话题?
Bigtable
Bigtable
• 相比Dynamo, Bigtable是贵族式的
 –GFS vs. bdb/mysql
 –Chubby vs. consistent hashing
• Dynamo更具有普遍借鉴价值
PNUTS
PNUTS
进阶指南-了解源码
• 如果关注上层分布式策略,可看
 – Cassandra (= Dynamo + Bigtable)
• 关注底层key/value storage,可看
 – Berkeley db
 – Tokyo cabinet
Language
• 实现分布式系统的合适语言?
• Java, Erlang, C/C++
 – Java, 实现复杂上层模型的最佳语言
 – Erlang, 实现高并发模型的最佳语言
 – C++, 实现关注底层高性能key value存储。
Q&A

         Thanks you!

• Tim Yang: http://timyang.net/
• Twitter: xmpp

More Related Content

What's hot

Pegasus In Depth (2018/10)
Pegasus In Depth (2018/10)Pegasus In Depth (2018/10)
Pegasus In Depth (2018/10)
涛 吴
 
Plazma - Treasure Data’s distributed analytical database -
Plazma - Treasure Data’s distributed analytical database -Plazma - Treasure Data’s distributed analytical database -
Plazma - Treasure Data’s distributed analytical database -
Treasure Data, Inc.
 
Improving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberImproving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at Uber
Ying Zheng
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
XiaoJun Hong
 
Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain
confluent
 
Building Microservices with Apache Kafka
Building Microservices with Apache KafkaBuilding Microservices with Apache Kafka
Building Microservices with Apache Kafka
confluent
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
SANG WON PARK
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
confluent
 
Diving into the Deep End - Kafka Connect
Diving into the Deep End - Kafka ConnectDiving into the Deep End - Kafka Connect
Diving into the Deep End - Kafka Connect
confluent
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
Jiangjie Qin
 
Apache Tez – Present and Future
Apache Tez – Present and FutureApache Tez – Present and Future
Apache Tez – Present and Future
DataWorks Summit
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
Guozhang Wang
 
How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017
How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017
How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017
Amazon Web Services
 
Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...
Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...
Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...
Flink Forward
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal Architecture
Alvaro Videla
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applications
hadooparchbook
 
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Helena Edelson
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Igor Anishchenko
 
HDFS Namenode High Availability
HDFS Namenode High AvailabilityHDFS Namenode High Availability
HDFS Namenode High Availability
Hortonworks
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Noritaka Sekiyama
 

What's hot (20)

Pegasus In Depth (2018/10)
Pegasus In Depth (2018/10)Pegasus In Depth (2018/10)
Pegasus In Depth (2018/10)
 
Plazma - Treasure Data’s distributed analytical database -
Plazma - Treasure Data’s distributed analytical database -Plazma - Treasure Data’s distributed analytical database -
Plazma - Treasure Data’s distributed analytical database -
 
Improving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at UberImproving Kafka at-least-once performance at Uber
Improving Kafka at-least-once performance at Uber
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain Kafka streams windowing behind the curtain
Kafka streams windowing behind the curtain
 
Building Microservices with Apache Kafka
Building Microservices with Apache KafkaBuilding Microservices with Apache Kafka
Building Microservices with Apache Kafka
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?Kafka Streams: What it is, and how to use it?
Kafka Streams: What it is, and how to use it?
 
Diving into the Deep End - Kafka Connect
Diving into the Deep End - Kafka ConnectDiving into the Deep End - Kafka Connect
Diving into the Deep End - Kafka Connect
 
Producer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache KafkaProducer Performance Tuning for Apache Kafka
Producer Performance Tuning for Apache Kafka
 
Apache Tez – Present and Future
Apache Tez – Present and FutureApache Tez – Present and Future
Apache Tez – Present and Future
 
Introduction to Kafka Streams
Introduction to Kafka StreamsIntroduction to Kafka Streams
Introduction to Kafka Streams
 
How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017
How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017
How Netflix Tunes Amazon EC2 Instances for Performance - CMP325 - re:Invent 2017
 
Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...
Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...
Flink Forward Berlin 2017: Aris Kyriakos Koliopoulos - Drivetribe's Kappa Arc...
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal Architecture
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applications
 
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
Lambda Architecture with Spark, Spark Streaming, Kafka, Cassandra, Akka and S...
 
Thrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased ComparisonThrift vs Protocol Buffers vs Avro - Biased Comparison
Thrift vs Protocol Buffers vs Avro - Biased Comparison
 
HDFS Namenode High Availability
HDFS Namenode High AvailabilityHDFS Namenode High Availability
HDFS Namenode High Availability
 
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the CloudAmazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
 

Viewers also liked

High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
Tim Y
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
bluedavy lin
 
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Feng Yu
 
Scaling GIS Data in Non-relational Data Stores
Scaling GIS Data in Non-relational Data StoresScaling GIS Data in Non-relational Data Stores
Scaling GIS Data in Non-relational Data Stores
Mike Malone
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
Tim Y
 
I18n design approach for global enterprise platforms
I18n design approach for global enterprise platformsI18n design approach for global enterprise platforms
I18n design approach for global enterprise platforms
Reddappa Gowd Bandi
 
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
zhujiadun
 
Design and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web CrawlerDesign and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web CrawlerGeorge Ang
 
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析isnull
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
XiaoJun Hong
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用Feng Yu
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
zijia
 
Erlang高级原理和应用
Erlang高级原理和应用Erlang高级原理和应用
Erlang高级原理和应用
Feng Yu
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm II
Feng Yu
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务
Wensong Zhang
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
zijia
 
LVS development and experience
LVS development and experienceLVS development and experience
LVS development and experience
Wensong Zhang
 
Git 实战
Git 实战Git 实战
Git 实战
简放 视野
 
[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
NAVER D2
 
DAE
DAEDAE

Viewers also liked (20)

High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011High Performance Weibo QCon Beijing 2011
High Performance Weibo QCon Beijing 2011
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
 
Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言Erlang分布式系统的的领域语言
Erlang分布式系统的的领域语言
 
Scaling GIS Data in Non-relational Data Stores
Scaling GIS Data in Non-relational Data StoresScaling GIS Data in Non-relational Data Stores
Scaling GIS Data in Non-relational Data Stores
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
 
I18n design approach for global enterprise platforms
I18n design approach for global enterprise platformsI18n design approach for global enterprise platforms
I18n design approach for global enterprise platforms
 
分布式系统缓存设计
分布式系统缓存设计分布式系统缓存设计
分布式系统缓存设计
 
Design and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web CrawlerDesign and Implementation of a High- Performance Distributed Web Crawler
Design and Implementation of a High- Performance Distributed Web Crawler
 
人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析人人网技术经理张铁安 Feed系统结构浅析
人人网技术经理张铁安 Feed系统结构浅析
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
Erlang及其应用
Erlang及其应用Erlang及其应用
Erlang及其应用
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Erlang高级原理和应用
Erlang高级原理和应用Erlang高级原理和应用
Erlang高级原理和应用
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm II
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
LVS development and experience
LVS development and experienceLVS development and experience
LVS development and experience
 
Git 实战
Git 实战Git 实战
Git 实战
 
[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster[2B5]nBase-ARC Redis Cluster
[2B5]nBase-ARC Redis Cluster
 
DAE
DAEDAE
DAE
 

Similar to 分布式Key Value Store漫谈

分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
XiaoJun Hong
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws锐 张
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
reinhardx
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDL
mysqlops
 
构建可扩展的微博系统
构建可扩展的微博系统构建可扩展的微博系统
构建可扩展的微博系统lonegunman
 
java title
java titlejava title
java title
lonegunman
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
Ho Kim
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展Hesey
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展drewz lin
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
84zhu
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discusseverestsun
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
MongoDB
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
Memcached浅析 韩建华
Memcached浅析 韩建华Memcached浅析 韩建华
Memcached浅析 韩建华
youzitang
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
ken shin
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
國昭 張
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
Xuefeng Zhang
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
iammutex
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
RolfZhang
 

Similar to 分布式Key Value Store漫谈 (20)

分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
亚马逊云计算Aws
亚马逊云计算Aws亚马逊云计算Aws
亚马逊云计算Aws
 
豆瓣网技术架构变迁
豆瓣网技术架构变迁豆瓣网技术架构变迁
豆瓣网技术架构变迁
 
A
AA
A
 
分布式存储与TDDL
分布式存储与TDDL分布式存储与TDDL
分布式存储与TDDL
 
构建可扩展的微博系统
构建可扩展的微博系统构建可扩展的微博系统
构建可扩展的微博系统
 
java title
java titlejava title
java title
 
Comment System of 56.com
Comment System of 56.comComment System of 56.com
Comment System of 56.com
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
大型网站架构的发展
大型网站架构的发展大型网站架构的发展
大型网站架构的发展
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
Google LevelDB Study Discuss
Google LevelDB Study DiscussGoogle LevelDB Study Discuss
Google LevelDB Study Discuss
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
Memcached浅析 韩建华
Memcached浅析 韩建华Memcached浅析 韩建华
Memcached浅析 韩建华
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
NoSQL-MongoDB介紹
NoSQL-MongoDB介紹NoSQL-MongoDB介紹
NoSQL-MongoDB介紹
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析NoSQL误用和常见陷阱分析
NoSQL误用和常见陷阱分析
 
1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计1到100000000 - 分布式大型网站的架构设计
1到100000000 - 分布式大型网站的架构设计
 

分布式Key Value Store漫谈