多IDC的数据分布设计(二)

标签: data consensus dynamo paxos PNUTS | 发表时间:2010-03-25 02:21 | 作者:Tim crystal
出处:http://timyang.net/

在前文《多IDC的数据分布设计(一)》中介绍了多IDC数据一致性的几种实现原理,遗憾的是,目前虽然有不少分布式产品,但几乎都没有开源的产品专门针对IDC来优化。本文从实践的角度分析各种方法优缺点。

背景资料 Latency差异

Jeff Dean提到不同数据访问方式latency差异

Numbers Everyone Should Know
L1 cache reference                           0.5 ns
Branch mispredict                            5 ns
L2 cache reference                           7 ns
Mutex lock/unlock                           25 ns
Main memory reference                      100 ns
Compress 1K bytes with Zippy             3,000 ns
Send 2K bytes over 1 Gbps network       20,000 ns
Read 1 MB sequentially from memory     250,000 ns
Round trip within same datacenter      500,000 ns
Disk seek                           10,000,000 ns
Read 1 MB sequentially from disk    20,000,000 ns
Send packet CA->Netherlands->CA    150,000,000 ns

这个数据对于我们设计多IDC数据访问策略具有关键的指导作用,我们可以用这个数据来衡量数据架构来如何设计才能满足高并发低延迟的目标。
这份数据实际上对所有网络应用及分布式应用开发者都具有很大借鉴作用,数据需要根据访问频率尽量放在latency小的地方

1. 2PC/3PC/Paxos模式

在上文中提到,2PC/3PC相比Paxos有明显的缺点,因此最好不用于生产环境,这里就不再详述。
Paxos选择了CAP理论中的”Consistency, Partition”, 需要牺牲availability。它可以在多个IDC之间实现强一致性复制。

Paxos缺点

  • IDC之间需要高速稳定网络
  • 一个2f+1个节点的网络中,需要f+1个节点完成事务才能成功。
  • Throughput低,不适合高请求量的场合。所以大部分分布式存储产品并不直接使用Paxos算法来同步数据。

2. Dynamo模式

Dynamo论文中并未专门描述Dynamo算法是否适合多IDC场景,只有少量文字提到

In essence, the preference list of a key is constructed such that the storage nodes are spread across multiple data centers. These datacenters are connected through high speed network links. This scheme of replicating across multiple datacenters allows us to handle entire data center failures without a data outage.

从上文看到,前提条件是“high speed network links” 可能对国内的情况不太适用。假如IDC之间网络不稳定,那会发生哪些情况呢?

Quorum 算法中,如果要考虑高可用性,则数据需要分布在多个机房。双机房如NRW=322由于单机房故障后可能会发生3个点中2个点都在故障机房,导致出现数据不 可用的情况,所以合适的部署是NRW=533,需要3个机房。大部分请求需要2个机房节点返回才能成功,考虑到多IDC的带宽及latency,性能自然会很差。

Quorum算法在读写的时候都要从quorum中选取一个coordinator,算法如下

A node handling a read or write operation is known as the
coordinator. Typically, this is the first among the top N nodes in
the preference list. If the requests are received through a load
balancer, requests to access a key may be routed to any random
node in the ring. In this scenario, the node that receives the
request will not coordinate it if the node is not in the top N of the
requested key’s preference list. Instead, that node will forward the
request to the first among the top N nodes in the preference list.

如果严格按照Dynamo协议,coodinator一定要在N中第一个节点,那在3个机房中将有2/3的请求需要forward到异地机房的 coordinator执行,导致latency增大。如果对coodinator选择做优化,让client选取preference list中前N个节点中在本地机房的一个节点作为coordinator,这样会一定程度降低latency,但是会存在相同的key选择不同节点作为 coordinator的概率增大,导致数据conflict的概率增大。

同时在多机房模式下,Failure detection容易产生混乱。Dynamo并没有使用一致性的failure view来判断节点失效。而是由每个节点独自判断。

Failure detection in Dynamo is used to avoid attempts to
communicate with unreachable peers during get() and put()
operations and when transferring partitions and hinted replicas.
For the purpose of avoiding failed attempts at communication, a
purely local notion of failure detection is entirely sufficient: node
A may consider node B failed if node B does not respond to node
A’s messages (even if B is responsive to node C’s messages).

而最近非常流行的Cassandra基本上可以看作是开源的Dynamo clone, 它在Facebook Inbox Search项目中部署在150台节点上,并且分布在美国东西海岸的数据中心。

The system(Facebook Inbox Search) currently stores about 50+TB of data on a 150 node cluster, which is spread out between east and west coast data centers.

虽然在它的JIRA中有一个提案 CASSANDRA-492 是讲”Data Center Quorum”,但是整体看来Cassandra并没有特别的针对对IDC的优化,它的paper[5]中提到

Data center failures happen due to power outages, cooling
failures, network failures, and natural disasters. Cassandra
is configured such that each row is replicated across multiple
data centers. In essence, the preference list of a key is con-
structed such that the storage nodes are spread across mul-
tiple datacenters. These datacenters are connected through
high speed network links. This scheme of replicating across
multiple datacenters allows us to handle entire data center
failures without any outage.

跟Dynamo中的描述几乎是相同的。

3. PNUTS模式

PNUTS模式是目前最看好的多IDC数据同步方式。它的算法大部分是为多IDC设计。

PNUTS主要为Web应用设计,而不是离线数据分析(相比于Hadoop/HBase)。

  • Yahoo!的数据基本都是用户相关数据,典型的以用户的username为key的key value数据。
  • 统计数据访问的特征发现85%的用户修改数据经常来源自相同的IDC。

根据以上的数据特征,Yahoo!的PNUTS实现算法是

  • 记录级别的master, 每一条记录选择一个IDC作为master,所有修改都需要通过master进行。即使同一个表(tablet)中不同的记录master不同。
  • master上的数据通过Yahoo! Message Broker(YMB)异步消息将数据复制到其他IDC。
  • master选择具有灵活的策略,可以根据最新修改的来源动态变更master IDC, 比如一个IDC收到用户修改请求,但是master不在本地需要转发到远程master修改,当远程修改超过3次则将本地的IDC设成master。
  • 每条记录每次修改都有一个版本号(per-record timeline consisitency),master及YMB可以保证复制时候的顺序。

Yahoo!的PNUTS实际可理解为master-master模式。
一致性:由于记录都需通过master修改,master再复制到其他IDC, 因此可达到所有IDC数据具有最终一致性。
可用性

  • 由于所有IDC都有每条记录的本地数据,应用可以根据策略返回本地cache或最新版本。
  • 本地修改只要commit到YMB即可认为修改成功。
  • 任一IDC发生故障不影响访问。

论文中提到的其他优点

hosted, notifications, flexible schemas, ordered records, secondary indexes, lowish latency, strong consistency on a single record, scalability, high write rates, reliability, and range queries over a small set of records.

总之,PNUTS可以很好的适合geographic replication模式。

  • 记录publish到本地YMB则认为成功,免除Dynamo方式需要等待多个Data Center返回的latency。
  • 如果发生master在异地则需要将请求forward到异地,但是由于存在master转移的策略,需要forward的情况比较少。

极端情况,当record的master不可用时候,实现上似乎有些可疑之处,读者可自行思考。

Under normal operation, if the master copy of a record fails, our system has protocols to fail over to another replica. However, if there are major outages, e.g. the entire region that had the master copy for a record becomes unreachable, updates cannot continue at another replica without potentially violating record-timeline consistency. We will allow applications to indicate, per-table, whether they want updates to continue in the presence of major outages, potentially branching the record timeline. If so, we will provide automatic conflict resolution and notifications thereof. The application will also be able to choose from several conflict resolution policies: e.g., discarding one branch, or merging updates from branches, etc.

初步结论

低带宽网络
PNUTS record-level mastering模式最佳。
高带宽低延迟网络
(1Gbps, Latency < 50ms)
1. 用Dynamo Quorum, vector clock算法实现最终一致性
2. 用Paxos实现强一致性

后记

本文从开始准备到发布时间较长,由于在多IDC数据访问方面目前业界并无统一的成熟方案,相关资料和文献也相对较少,而且对这方面有兴趣且有相应环境的人不多,短时间要提出自己成熟独立的见解也具有一定难度,本文仅包含一些不成熟的想法的整理,由于自己对文中的观点深度也不是满意,所以一直没有最终完稿发布。但考虑到最近工作较忙,暂时没有精力继续深入研究,所以希望公开文章抛砖引玉,同时也欢迎对这方面课题有兴趣者进一步交流探讨。

Resource

  1. Ryan Barrett, Transactions Across Datacenters
  2. Jeff Dean, Designs, Lessons and Advice from Building Large Distributed Systems (PDF)
  3. PNUTS: Yahoo!’s Hosted Data Serving Platform (PDF)
  4. Thoughts on Yahoo’s PNUTS distributed database
  5. Cassandra – A Decentralized Structured Storage System (PDF)
  6. Yahoo!的分布式数据平台PNUTS简介及感悟
Similar Posts:

相关 [idc 数据 分布] 推荐:

多IDC的数据分布设计(二)

- crystal - Tim[后端技术]
在前文《多IDC的数据分布设计(一)》中介绍了多IDC数据一致性的几种实现原理,遗憾的是,目前虽然有不少分布式产品,但几乎都没有开源的产品专门针对IDC来优化. 本文从实践的角度分析各种方法优缺点. 背景资料 Latency差异. Jeff Dean提到不同数据访问方式latency差异. 这个数据对于我们设计多IDC数据访问策略具有关键的指导作用,我们可以用这个数据来衡量数据架构来如何设计才能满足高并发低延迟的目标.

IDC 发布 2011 年全球手机销量数据

- - 博客园_新闻
IDC 发布了 2011 年第四季度全球手机市场数据,苹果成为全球第三大手机厂商(不是智能手机领域). 同步汇总的 2011 年全年手机市场数据中,苹果同样强势上升,以 9320 万台 iPhone 销量佳绩稳坐“全球第三大手机厂商”宝座,其中中国厂商中兴以 6610 万台手机销量成为全球第五大手机制造商(华为非上市公司无须公布财报).

Linode VPS 迁移到日本 Tokyo IDC

- 半兽人 - DBA Notes
今天看到 Linode 针对亚太地区用户的需求新开辟了日本东京机房. 价格不变,速度会更快(地理优势),看了网友的反馈也是如此. 迁移 VPS,需要在后台 Support 处开一个 Ticket ,客服人员会在分钟级别提供响应,提供一个简单的指导,要你关掉 VPS , 点击迁移 , 然后耐心等待. 并且会告之你在东京机房的 IP 地址.

宽带提速有望——电信IDC或遭反垄断调查

- Lionheart - 月光博客
  据消息人士向《财经国家周刊》记者证实,相关部委已就宽带接入问题,对中国电信展开反垄断调查,并有可能进行反垄断处罚. 作为中国最大的宽带接入及IDC提供商,中国电信的自身战略如因反垄断调查进行调整,对中国互联网的产业发展格局也将带来巨大影响.   消息人士透露,相关部门此次调查自今年上半年就已经展开调查取证,相关部委与中国电信就进行了多轮沟通取证,还向联通、铁通等多家接入企业、研究机构及多位专家进行了求证.

IDC:苹果iPad占据平板市场68.3%

- clowwindy - GeekPark 捕风捉影
据IDC今天公布的数据显示,二季度,苹果占据全球平板电脑市场的68.3%. 不过,随着竞争性Android平板进入市场,到今年晚期、明年初,苹果的市场份额会下滑. 报告称,全球平板电脑出货今年增长88.9%,二季度同比增长303.8%,达1360万台,当中iPad 2的销量达930万台,为此,IDC将2011年下半年平板的出货量由5350万台升至6250万台.

IDC:联想 PC 出货量再次提升,来到第二名

- foxmachia - Engadget 中国版
才刚在 Q2 的 IDC 市调中庆祝自己升到第三名的 Lenovo,短短一季后又以 36.1% 的年增率再前进一名,成为第二大 PC 供货商. 被丢到第三名的是年增率轻微负成长 1.6% 的 Dell,而第四名的 Acer 则是继续狂泻而下,年减率 20.6% 和年增率 30.2% 的第五名华硕形成强烈的对比.

iSuppli 與IDC英雄所見略同:Windows Phone在2015超越iOS

- - 數位時代 Beta3.0 | Topics & Links
去年九月當IDC與Gartner預測iOS的地位將在2015被Windows Phone取代時,除了肩負行銷自家平台手機的微軟副總裁Achim Berg表示這個預估過度保守,以及分析師們支持此看法外,市場普遍反應冷淡. 日前iSuppli也加入力挺Windows Phone的陣營,出具報告指出2015年時Windows Phone將獲得16.7%的市佔,而Apple在智慧型手機的市佔將從18%下滑到16.6%.

云计算与 IDC 【1】世纪互联为什么股价低迷?

- ZeeJee - 爱范儿 · Beats of Bits
 2011 年 4 月 20 日,中国 IDC 公司,世纪互联,在美国 Nasdaq 上市,代号 VNET. 华尔街对于世纪互联的上市,充满期待. [1] 热情洋溢地写到,“当一家公司,贴着 ‘云计算’ 和 ‘中国’ 这样的标签,昂首上市时,免不了会引起热议. 世纪互联(VNET),‘中国’ 的 ‘云计算’ 公司,不仅在本周上市公司名单中榜上有名,而且被华尔街称为 ‘本周热选’ ”.

IDC:中国Q3智能手机出货6000万台 超PC三倍多

- - TechWeb 今日焦点 RSS阅读
  【搜狐IT消息】12月9日消息,据IDC最新公布的亚洲/太平洋地区季度性移动手机跟踪报告显示,今年第三季度,中国市场智能手机出货量突破6000万台,创历史新高,是同期PC出货量的三倍多.   目前,中国市场智能手机出货量的季度增长率为38%,远高于总移动手机市场的9%.   其中,Android系统仍延续了它在中国智能手机市场的主导地位,但预计,搭载新iOS系统的手机和Windows Phone 8手机阵容将在今年第四季有所表现.

IDC Q4 智能机市场份额:三星略降,苹果大幅攀升

- - 爱范儿 · Beats of Bits
IDC 最新发布的报告显示,2012 年第四季度全球智能手机出货量达 2.194 亿部,同比增长 36.4%,在全部手机出货量中所占比例达到有史以来最高的 45.5%. 从各大手机厂商排名来看,位居榜首的三星该季度占据全球智能手机出货量份额的 29%,相比于上一季度的 31.3% 略有下滑. 排名第二的苹果所占份额由上一季度的 15.0% 大幅攀升至 21.8%.