分布式系统
youling_lh
这个作者很懒,什么都没留下…
展开
-
淘宝的KV存储系统的设计思路总结-tair系统
tair系统功能:(主要用来对付那些静态化相关资源)1、作为架设在各类存储介质前边的一层系统2、可以用来存储cache数据,也可以持久化数据一、要解决的问题1、当用户访问数据为海量的时候,并且并发太大的时候直接访问数据库会让数据库被穿透,直接宕机2、淘宝的用户信息和产品信息数据调用量是海量二、设计思路1、初期设计思路(转载 2013-08-21 00:22:04 · 1309 阅读 · 0 评论 -
一种可以避免数据迁移的分库分表scale-out扩容方式
一种可以避免数据迁移的分库分表scale-out扩容方式目前绝大多数应用采取的两种分库分表规则mod方式dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月份的数据在一个库表)这两种方式有个本质的特点,就是离散性加周期性。例如以一个表的主键对3取余数的方式分库或分表:那么随着数据量的增大,每个表或库的数据量都是各自增长。当转载 2013-08-17 01:27:48 · 894 阅读 · 0 评论 -
一致性哈希算法(Consistent Hashing)
应用场景这里我先描述一个极其简单的业务场景:用4台Cache服务器缓存所有Object。那么我将如何把一个Object映射至对应的Cache服务器呢?最简单的方法设置缓存规则:object.hashCode() % 4。Cache 0:object.hashCode() % 4 == 0Cache 1:object.hashCode() % 4 ==转载 2013-08-28 23:18:30 · 957 阅读 · 0 评论 -
简单的Vector Clock
上一篇文章中说过Dynamo为了解决数据一致性问题使用了Vector Clock。基本思想就是对同一份数据的每一次修改都加上的标签。在搜索相关资料的时候发现了另一个有意思的项目,Riak。Riak可以说是一个类Dynamo的Erlang实现,更多相关介绍可以参考下边链接。本文来自Riak主页上的一篇blog,简单介绍Vector Clock以及在Riak中的使用。虽然名为“简单的Vector Cl转载 2013-08-29 22:50:35 · 1013 阅读 · 0 评论 -
开源数据库 Sharding 技术 (Share Nothing)
从 Shard 到 Sharding“Shard” 这个词英文的意思是”碎片”,而作为数据库相关的技术用语,似乎最早见于大型多人在线角色扮演游戏(MMORPG)中。”Sharding” 姑且称之为”分片”。Sharding 不是一门新技术,而是一个相对简朴的软件理念。如您所知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 MySQL 的潜在用户都对 MySQL 的扩转载 2013-09-26 23:28:42 · 945 阅读 · 0 评论 -
NoSQL数据库笔谈
颜开 , v0.2 , 2010.2序思想篇CAP最终一致性变体BASE其他I/O的五分钟法则不要删除数据RAM是硬盘,硬盘是磁带Amdahl定律和Gustafson定律万兆以太网手段篇一致性哈希亚马逊的现状算法的选择Quorum NRWVector clockVirtual nodegossipGossip (State转载 2013-09-28 10:12:48 · 2193 阅读 · 2 评论