存档

2010年5月 的存档

最近整理了一些关于数据库架构方面的技术专题,并整理成为PPT,准备拿出来和大家一起分享。
为什么要这么做,并不是要为了证明我自己,更不是为了其他什么目的。因为最近一直有一种强烈的执着,想要做成一些事情,在这之前,必须找到很多志同道合的人一起来努力,所以需要先布道。我并不是为了分享而分享,而是希望这些东西能够改变大家对现在一些架构的理解,真正了解我们现在面对的问题和未来的挑战。
蔡学镛说:大多數的工程師並不是「做了五年的系統開發」,而是「做了一年的系統開發,然後重複五次」。我不希望我和周围的同事们都是如此,所以我分享,帮助别人,也帮助我自己。
PPT:数据库高可用架构

5 27th, 2010 | Filed under 大话技术

分布式系统的hash策略,决定了数据的分布。传统的方式采用mod n的算法,非常简单,但是一旦节点发生变化,所有的数据都需要重组,代价非常大。一致性哈希(Consistent hash)很好的解决了这个问题,当节点发生变化时,只会影响到部分数据,而且永远可以找到一个提供服务的节点。
对于数据库Sharding的架构,Consistent hash并不十分适合,我们采用了一种新的hash策略,我将其称之为“Virtual Partition Hash”策略。
为了解决节点数量变化时,全部数据需要重组的问题,我们采用了预分区的策略,将整个系统分为很多个Virtual Partition,每个物理节点由多个Virtual Partition组成。比如整个系统分为128个VP,共有8个物理的服务器,每个服务器包含16个VP的数据,只要整个系统的物理节点小于128个,增加节点只需要移动部分VP就可以了,避免了数据重组的问题。另外,为了提高可用性,每个物理节点都有一套备机,如果节点失效则切换至备用节点。
新增一个物理节点:

只需要移动部分VP至新节点,不需要数据重组。

Virtual partition hash策略非常简单,实现也很容易,实际上它是Consistent hash策略的一个简化版本,Oracle hash分区也是类似的做法,尽可能的减少数据重组的代价,可以参考我以前的文章《Oracle hash分区的秘密》。
这个策略的另外一个好处是非常灵活,可以根据服务器压力的情况,通过移动VP的来达到负载均衡的目的。利用MySQL数据库复制的特性,移动VP是非常容易的,而且配合我们的分布式数据库架构,可以做到对应用透明。
这个方案的缺点是:每个节点都准备一台备机,硬件资源比较浪费。但是如果可以和读写分离架构配合起来,备机可以承担部分读的服务,那么这个缺点就不存在了。
“Simple but Incomplete Solutions Win!”
—EOF—

5 26th, 2010 | Filed under 大话技术

最近一直在为招聘而苦恼,一方面很多朋友觉得找份工作非常困难,另一方面我们却苦于找不到合适的人才。就想写一篇文章说说我们到底需要什么样的人, 同时也谈谈我对职业规划的一些看法,也许对朋友们有帮助。
招聘或者找工作,偶然性是非常大的。因为人的能力是很多方面构成的,不管是通过简历,笔试还是面试,其实都只能反映出很小的一部分。对于求职者来说,找工作就是展现自己能力的过程,必须在整个过程中充分表现出自己的能力和潜力,而对于招聘者,如何在短短的面试中识别出一个人的潜在能力,更是一个巨大的挑 战,所谓千里马常有,伯乐不常有。个人觉得,找工作和相亲差不多,“能力”很重要,但是”感觉“同样重要,因为每个组织和团队都有自己的文化,现代的组织 都要求每个人能够融入到团队中,在阿里这种感觉叫做”味道“,面试的过程中有个角色是”闻味官“,闻闻味道看看我们是不是一路人。
我相信看过《非诚勿扰》的人都知道,美女的要求是很高的,一份好工作其实就如同一位美女,要想获得美女芳心,你必须有房有车(当前的能力),或者虽然现在没有,但是具备在一定时间内买房买车的能力(潜力)。除了能力以外,感觉也是很重要的,最好年轻又有上进心,找工作同样如此。 我们可以分析下美女喜欢哪类人,就知道我们需要怎么样的你:第一类是你有豪宅和宝马车(能力很强),就算丑一点老一点,脾气稍微差一点,美女还是会主动投怀送抱的,毕竟就算“坐在宝马车里哭,也比坐自行车强”。现实中,这类人通常具备某个特别强的能力,比如某个领域内的技术大师,可 以给我们团队带来巨大的价值,这类人往往不需要找工作,而是工作主动投怀送抱的,毕竟,能力还是第一位的。
第二类人是虽然暂时没有车也没房,但是具备很大提升的潜力,买车买房只是个时间问题,有理想,有上进心,当然一定要比上一类人年轻些,性格要温柔些。现实中,大多数人求职时都是这个状态,如果能力暂时不能符合我们的要求,我们会从很多方面去评估是否具备发展的潜力,最重要的手段就是通过以往的工 作经验来判断,如果是应届生也可以通过学校和社会实践的经历来判断。我们需要的人是目标明确,学习能力强,加入团队就可以迅速成长和提高,在阿里这个特性被称为“要”性,只要非常想“要”的人,才会成功。如果你能力暂时还不够,那么一定要有两样东西:巨大的潜力和很强的“要”性。
第三类人是有房有车,可能房子小点车子破点,但是足够满足日常的需要,不希望生活有什么改变,平平稳稳就好,他们找女朋友,也许只是为了满足婚姻的需要而已。对于这类人就比较纠结了,他们虽然没什么上进心,但是吃老本就可以满足工作的需要了,他们往往只是把工作看成是一种谋生的手段而已,没什么激情但是也能做好。这类人在现实生活中还是非常多的,如果仅仅是招一个人去完成某个工作,这类人还是很适合的,但是很可能时间长了,如果没有什么发展,这类人可能会被团队淘汰。我对工作的看法是,工作不仅仅是谋生的手段,通过工作我们要提高自己的能力,获得周围的人的信任,进而提高自己的社会地位。仅仅是为了工资而工作的人,注定不会有很大的成功。
另外一个话题是:如果成为大师?成为大师是很多技术人的梦想,最近也和很多年轻人聊过,他们的目标很明确,就是成为象 biti_rainy,eygle,fenng,piner,wanghai这样的大师。在我看来,要想从技术高手成为大师,不仅仅是技术上要有所突破,更重要的是要具备开放和分享的心态,持续不断的突破自我的勇气,以及领导团队不断向前的能力。其实,我的目标也是成为象他们一样的大师,追随大师,学习大师,超越大师。
李嘉诚说过,“只要勤奋,肯去求知,肯去创新,对自己节俭,对别人慷慨,对朋友讲义气,再加上自己的 努力,迟早会有所成就,生活无忧”。 祝愿大家都能找到自己的位置,为了梦想而努力吧。
—EOF—
顺便做下广告,阿里巴巴诚聘Oracle DBA和MySQL DBA,如果有梦想在数据库领域成为大师,那么加入我们吧。发邮件到freezr@gmail.com

5 22nd, 2010 | Filed under IT江湖

根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。而传统数据库保 证了强一致性(ACID模型)和高可用性,所以要想实现一个分布式数据库集群非常困难,这也解释了为什么数据库的扩展能力十分有限。而近年来不断发展壮大 的NoSQL运动,就是通过牺牲强一致性,采用BASE模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。
但是,对于CAP理论也有一些不同的声音,数据库大师Michael Stonebraker就撰文《Errors in Database Systems, Eventual Consistency, and the CAP Theorem》,表示为了P而牺牲C是不可取的。事实上,数据库系统最大的优势就对一致性的保证,如果我们放弃了一致性,也许NoSQL比数据库更有优势。那么,有没有可能实现一套分布式数据库集群,即保证可用性和一致性,又可以提供很好的扩展能力呢?回答是:有的。
目前,有很多分布式 数据库的产品,但是绝大部分是面向DSS类型的应用,因为相比较OLTP应用,DSS应用更容易做到分布式扩展。Michael Stonebraker提到了一种新型的数据库VoltDB,它的定义是Next-Generation SQL Database for Fast-Scaling OLTP Applications。虽然产品还没有问世,但是从技术资料上来看,它有几个特点:
1.采用Share nothing架构,将物理服务器划分为以CPU core为单位的Virtual node,采用Sharding技术,将数据自动分布到不同的Virtual node,最大限度的利用机器的计算资源;
2.采用内存数据访问技术,类似于内存数据库(In-memory database),区别于传统的数据库(Disk-based database),消除了传统数据库内存管理的开销,而且响应速度非常快;
3.每个Virtual node上的操作是自治的,利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销(比如Latch和Lock);
4.数据同步写多个副本,不存在单点故障,而且消除了传统数据库需要记录redo log的开销。

VoltDB与传统数据库的对比,可以看到VoltDB即支持传统数据库的ACID模型,又提供了类似NoSQL产品很高的扩展能力。

这个产品,让我想到了MySQL cluster,同样是shared-nothing架构,NDB存储引擎也要求将数据存放在内存中,数据根据PK被分布到多个不同的节点上,同一份数据可以保存多个副本,防止单点故障。

MySQL cluster目前的主要问题是性能不佳,但是我认为MySQL cluster的架构是分布式数据库未来的趋势,Oracle收购MySQL后,很多人对MySQL的前途表示担忧,而我作为一个用户,除了可能会收费这件事以外,我一点也不担心MySQL的前景,反而有所期待,因为在数据库领域没有任何一个公司比Oracle更懂数据库,而Oracle也正在大力发展MySQL cluster,MySQL cluster一定会成为分布式数据库领域内最好的解决方案之一。
–EOF–

5 10th, 2010 | Filed under 大话技术
标签: , , ,