123
 123

Tip: 看不到本站引用 Flickr 的图片? 下载 Firefox Access Flickr 插件 | AD: 订阅 DBA notes --

2010-06-13 Sun

09:00 满天都是大鲸鱼 (4020 Bytes) » 知道分子

不知是否世界杯的缘故,最近 Twitter 心神不宁,天天冒出大鲸鱼。两天前,Twitter 运维团队发表了博客《完美风暴之鲸鱼篇》,描述他们初步找到的几个症结,以及相关补救措施。

直接原因是某个内部子网拥塞,导致网站性能问题。Twitter 运维团队此前将两个快速增长、吞吐量较高的组件放在一个网段内,但是没有对该网段的容量作较完善的监控,而且某处配置还不小心搞错了。补救措施很简单,网络扩容、完善监控、调整布局、均衡负载。

据接近 Google 和 Facebook 的一位朋友说,这两家全球排名数一数二的网站,近来也颇为内部网络拥塞问题挠头。服务器性能越来越强,数据吞吐量越来越大,加之内部应用组件/服务间的数据交换日趋错综复杂,在数据处理单元尚未达到峰值之前,数据传输单元却往往率先达到瓶颈,从而触发雪崩。

但从今天的状况来看,大鲸鱼依然不时浮现,可见这个问题尚未得到根本解决。如何驯服难以预估的流量怪兽,还得想一些办法。比如,当请求-反馈路径上的任何一个环节容量占用超过 90% 时,系统应自动进入戒备状态,按预定义的优先级列表依次推迟或关闭非关键的后台任务、内部应用,屏蔽爬虫来访,暂停访问量大的第三方应用,以腾出容量应付真正的客户访问需求。待利用率回落至 70% 以下,才解除警戒,陆续自动恢复上述被推迟、关闭、屏蔽、暂停的访问。

大多数网站对于自己的访问量构成、利用率状况、请求-反馈路径都没有作认真统计分析整理,自然也不会有关停优先级列表这种东西出来,更遑论自动调整。什么都重要,就是什么都不重要,什么都要保,于是什么都保不住。突发事件一来,大家一起死。

相信 Twitter 团队的聪明人会找到解决问题的有效方法,毕竟吃互联网这碗饭,可用性就是下锅的米。
04:52 Oracle数据库性能模型 (1726 Bytes) » Hello DBA

建立数据库性能模型,这是我最近一直在思考的一个问题。这个命题还是非常有意义的,因为我们在很多情况下都需要对数据库做性能评估,容量规划和风险预测。很多DBA的优化经验都局限在一个很小的数据库技术领域内,而对整个系统的性能容量并不十分了解。我希望能够给大家一些简单的模型和经验数据,帮助大家对系统的整体性能有一个更深层次的了解。

这篇PPT可能还达不到模型的理论高度,甚至很多数据还不是十分准确,只是我个人思考的一个结果,希望能抛砖引玉,大家一起思考和进步。

2010-06-12 Sat

18:00 支付宝升级数字证书 采用短信校验码提升灵活性 (2156 Bytes) » 支付宝官方 Blog - 支付志

您的支付宝账户还在裸奔吗?或者您还在为安装数字证书而烦恼吗?

6月2日数字证书全面升级

1.   无需备份、无需导入,只要一部手机就能轻松搞定安装(接收短信校验码)
2.   即时安装即时保护账户,免去了电脑重装后证书不可用、非本机操作时无法进行账户操作等烦恼
3.   新增email+安全保护问题的安装方式,多一种选择多一重账户保护方式

安装步骤

l  体验中若有碰到问题,觉得爽和不爽的地方都统统告诉我们吧(问题收集邮箱:aq_szzs@alipay.com )

No related posts.

2010-06-11 Fri

23:48 选择一个键值存储系统(Cassandra Vs Voldemort) (10283 Bytes) » dbthink

选择一个键值存储系统(Cassandra Vs Voldemort)
By Diego Erdody on May 07, 2010 Translated by Jametong

目的

在Medallia,我们的系统目前有一个关键组件是运行在一个开源的关系型数据库上.由于此组件主要通过主键来查询数据库的条目,我们想尝试将此组件切换到一个键值存储系统上,以利用键值系统提供的多种好处,包含分布式复制、负载均衡以及失败切换.对此组件进行重构以实现纵向扩展是我们的一个目标,附带的其它好处是,可以缓解我们目前较高的磁盘存储需求.

最近,我们花了部分时间来研究这项技术(以及部分其他技术改进,Medallia激动人心的时刻!),考察了多个不同选项.长话短说,最终落在以下两个选择上:Apache CassandraProject Voldemort.

这两个项目看似是他们所在开源类别中最成熟的了,都可以提供内置的分散化集群支持,包含分区、容错性以及高可用性.两者都是基于Amazon的Dynamo论文,主要的差异是,Voldemort遵循简单的键值模型,而Cassandra使用了基于BigTable持久化模型的面向列的模型.两者都支持读一致性,也就是读操作总是返回最新的数据,这一点是我们业务所需要的.

高层次的比较

Project Voldemort

虽然不是一份详尽的清单,下面是我们考查这两个存储系统最关心的优势与劣势.

  • 优势
    • 更简单的API
    • 基于Berkley DB的持久化,一个成熟并广泛使用的键值DB
    • 使用向量时钟而不是简单的时间戳.它不需要节点(客户端)的时钟保持同步.
  • 劣势
    • 没有内置的”多数据中心”相关路由支持(意味着至少有一个额外的数据中心有此数据的一份拷贝)

Apache Cassandra

  • 优势
    • 更广泛的生产系统部署(Facebook、Twitter、Digg、Rackspace)
    • 更丰富的API,值可以支持动态的列结构(Schema-free).列可以独立演化,意味着你不需要读出整个结构就可以更新其中的一列.
    • 为写操作做过专门优化(设计上).
    • 可配置的一致性级别(在每个请求上指定)
  • 劣势
    • 文件格式仍在开发中,内部结构仍然可能会发生变化.鉴于它所支持的灵活性,文件格式更加复杂也更加难以理解,在性能方面尤其如此
    • 需要同步时钟(NTP)(节点与客户端都需要)
    • 与竞争产品相比,读操作更加磁盘密集
    • 不支持客户端的冲突检测,因此最近的数据总是赢家

性能测试

令我们吃惊的是,这是我们找到的对这两个项目的进行性能比较的唯一链接,因此,我们决定写这篇文章来分享我们的研究.我们使用了vpork的测试框架,对它的代码做了修改以适应我们的需求,升级客户端代码到最新版本、添加热身阶段、增加了重写能力。下面是我们测试的结果.

配置:

  • 版本
    • Voldemort v0.80.1
    • Cassandra 0.6.0-beta3
  • 机器-3个类似与如下配置的节点
    • 最大4GB的堆大小(heap size)
    • 复制参数: N=3(每个条目的副本数),R=2(每次读时需要等待返回的节点数),W=2(每次写需要等待响应的节点数)
    • 每台服务器上有8个处理器(Intel(R) Xeon(R) CPU E5504 @2.00GHz)
    • 1TB的磁盘空间(Seagate ST31000340NS,7200rpm,32MB Cache)
  • 持久化参数
    • Voldemort(默认值)
      • Key-serializer: String
      • Value-serializer : identity(字节数组)
      • persistence=bdb(Berkley DB)
    • Cassandra
      • ColumnFamily定义: CompareWith=”BytesType” RowsCached=”10000″
      • ReplicationFactor=3
      • Partitioner=org.apache.cassandra.dht.RandomPartitioner
      • ConcurrentReads=16
      • ConcurrenWrites=32
  • 测试
    • 客户端线程数: 40
    • 初始加载:500万记录-每次测试开始前就有的记录数
    • 热身:2万记录-在记录测试时间前的初始化写操作
    • 每次测试的操作次数:50万

我们测试以下4种不同的写-重写-读配置.一次写操作等价于一个包含一条新记录(不存在的Key)的put操作.一次重写操作是一个包含已有Key的put操作.一次读是对一个已有Key的get操作.下面是我们测试的配置:

  • 50% Write 50% Read
  • 10% Write 40% Rewrite 50% Read
  • 50% Rewrite 50% Read
  • 90% Rewrite 10% Read

所有这些测试,我们都测试两组不同的Value大小,15KB与1.5KB.虽然我们评估了不同的选项,但是,对于我们的需求来讲,最后一种配置以及15KB的数据条目大小才是最具代表性的场景.

第一组图表展示延时(Latency),或者说是每个读写操作在每种情况下完成所需的平均时间.值越低越好.与预期一致,Cassandra的写操作(或重写)时间总是优于Voldemort,随着场景的不同读操作时间有点变化,不过总体上两者相差不大.


第二组图显示99%条件下的最大延时时间;仍然是值越小越好:


在前端,我们有一个写回高速缓存,这意味着写操作不会影响用户体验.另一方面,读操作直接与页面加载有关系.这也是为什么我们特别关注Cassandra在最后一个场景中处理15KB数据的峰值时间.我们还做了一些更进一步的测试,来度量99.9%与99.99%条件下的情况,差异更加明显:在99.9%时,Cassandra需要5050ms,Voldemort需要748ms,在99.99%时,Cassandra需要9176ms,Voldemort需要1129ms.这个巨大的差异是影响我们决策的一个关键指标.

最后这两个图表展示每秒操作数(读/写)的吞吐量.在这两个图中,值越大越好:



附注:

  • Cassandra建议将Commit log与数据目录分别存储在不同的磁盘上以提高性能,我们的测试使用的都是同一块磁盘.

在测试过程中发现的问题:

  • 如果在不同的线程中调用同一个Key,Voldemort的client.put(K key,V value)(不是取出特定版本对象的那个方法)会抛出异常ObsoleteVersionException. javadoc的表述是”关联这个Key的给定值,覆盖这个key之前已经存储的任何值”,因此这个错误是预料之外的.

最后的赢家是…

大体上,我认为没有明确的赢家.最佳选择依赖于多个因素,这需要每个公司自己去评估.我的偏好也在考查与测试过程中发生了多次变化.

已经说过,我们必须做出选择,并且最后决定选择使用Project Voldemort.主要的原因是简单、更好的版本控制、成熟的持久化层,以及延时
的可预测性.

我们现在已经开始开发新的解决方案,在我们将其应用到生产环境可能还需要一段时间,但是,我们想要将我们的初步成果与所有考虑这两个选项之一的人共享,这样,他们在做决策的时候就可以多一个参考.

我将对持续关注它的走向.

Diego Erdody
Lead Software Engineer

其他比较有用的关于比较不同的键值存储的文章:

Related posts:

  1. Cassandra – 一个分散的非结构化存储系统

19:35 青年近卫军五期毕业啦! (3980 Bytes) » 支付宝官方 Blog - 支付志

青年近卫军五期华丽丽的毕业了,才分开没几天,常常在忙碌的工作时候会回想在一起的那一个月快乐单纯疯狂又青涩的时光。打心底说,分别的滋味很不好受,其实除了回上海的几个同学,剩下的我们还是能天天见面,但是我也说不清楚为什么毕业那天我们32个人会哭作一团。只是感慨年轻真好,单纯真好。可以有这样的心情肆意的发泄,为这一个月我们的相遇相知。

遗憾的是在我们刚刚都开始熟悉的时候就奔赴了不同的战线,遗憾的是还有许多的故事和心情没有来得及分享,遗憾的是最后我们没有来得及一起欣赏我们最后的照片。

每当回想我们这些人初次见面相互介绍青涩害羞的模样总是忍俊不禁。时间过的太快,一起游西湖品诗词做游戏去拓展过六一玩杀人游戏海吃海喝,每一件平凡的小事包含着太多的记忆和美好。我们享受这样的过程,沉浸在连长文意和小马哥给我们营造这样的氛围,我们学习着快乐着抱怨着但是享受着。下午的时候,我们从连长伊朗那里领回来我们组的奖品,把小组8个人的大头照放在了杯子上的创意实在是太美妙了,放在电脑旁边抬起头就看到一张张笑脸,突然就觉得其实我们离得并不远。当我在公司忙碌匆匆经过你们的时候,只要你的一个带着笑意的眼神,就心底暖的要沸腾,这样的自己从来不觉得孤单。

总归要工作的,带着热情带着主动带着快乐的心情融入到每一个成长中的大集体,我希望也相信我们32个人都像是新鲜的血液注入到这样的一个新环境中,让每个人感受到我们的成长是这样的令人感动和惊喜。

其实,只有经历过才体会到为什么三期四期的同学在聊到他们近卫军的事情时是那么的眉飞色舞,公司给近卫军培训时所营造的团结积极向上的氛围,可以让我们每个人感受到人与人之间是这样的亲切和友好。严格意义上说,从周一开始了自己正儿八经的工作,有我可爱温柔的美女师傅,有我亲切的同事,这样的感觉总是提醒我从来都不是一个人。

以后的路很长,路选对了就不怕远,也谢谢你们的爱,如此深刻动人。

——

“青年近卫军”是支付宝技术部对于每年新入职应届毕业生的称呼,他们会作为一个整体,接受为期一个月的培训后,再进入相应的工作部门。

No related posts.