返回 登录
0

【SDCC讲师专访】马进:网易十年一剑之分布式数据库DDB的架构更迭

2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升级和改造、全面提升技术人员的综合实力。十二大专题鼎立,大咖荟萃,一触即发。

大会将至之际,我们有幸采访到高吞吐数据库架构专题的马进老师,他将在本次大会上带来主题为《分布式数据库DDB性能优化实践》的演讲。采访中,他以幽默而不失专业的口吻围绕一些大家关心的DDB相关等问题分享了自己的观点。

图片描述

网易杭州研究院资深开发工程师 马进

马进,来自网易杭研大数据平台组,入职以来先后参与了分布式数据库DDB,缓存NKV,分布式事务调度器TCC等项目,目前是DDB项目负责人,主导数据库中间件的各种项目研发。专注于分布式系统架构与数据库技术,热衷于构建高效的,高性能的分布式后台应用。

以下为采访正文

CSDN:请先和大家介绍下您和目前所从事的工作,以及关注哪些技术领域?

马进:我叫马进,13年加入网易杭研院,目前在杭研大数据平台部门负责分布式数据库DDB和一些相关产品。在网易这几年接手过的项目不少,除了DDB之外还有缓存,分布式事务协调服务TCC,分布式视频处理系统等,总体上说跟分布式和存储脱不了关系,所以对这两大领域比较感兴趣,几年下来算是从门外汉过渡到了初窥门径。

嗯,目前单身。

CSDN:是什么样的机会让您加入网易,在这个过程中有什么难忘的经历吗?

马进:毕业前去网易找师兄玩,在园区内吃了两顿饭,见识了杭州网易的园区建设和美女质量,于是就不想走了。

其实当时跟师兄聊了聊杭研的企业文化和技术氛围,觉得在这里可以沉下心来做深一门技术,很多人可能觉得网易的互联网平台没有BAT大,但是在网易做互联网基本上没什么部门壁垒,我们做一个底层系统可以同时支撑好多个日活上千万的产品,遇到的业务场景更加复杂多变,比如云音乐和考拉都用DDB,一个是电商业务,一个是典型的读多写少,给这两个产品做支撑时就需要根据场景转变思路。当然同样的问题放在淘宝这样的体量下不能同日而语,我觉得各有各的挑战。

CSDN:在项目研发过程中,您和您的团队遇到哪些技术难点,在这些阶段又是如何克服的呢?

马进:我举两点吧,DDB从06年开始,在我加入网易时已经在线上服务了将近7年。7年里互联网技术发生了很大的变化,比如06年时tomcat还不流行,那时使用JDK1.5就已经算作激进了。你很难想象一个系统经历了这样的时代更迭,它的架构和实现几乎没有经历过重构,这样的系统在BAT我知道也有几个,但绝不多,在网易同时代的已经完全没有了。这一方面说明DDB的架构和代码经得起时间考验,一方面也确确实实给我们后来者带来了挑战,比如我想给DDB扩充语法兼容度,当时做的第一件事就是想让DDB支持别名。如果让我自己写个系统,我会用JavaCC、Antlr,或者直接用些开源的语法解析器生成语法树,但DDB的语法解析是全手写的(06年上面这些东西都还没有),而且语法解析的过程与后面执行计划耦合度很高,替换代价很大。最终我只能硬着头皮在原先代码上改,当然事情做完以后自己从DDB源码中学到很多,但是开发周期就比较失控,而且不好测。

对底层系统或实现做废旧立新绝不是一件轻松愉快的事情,尤其是对一个经历了多年大风大浪的系统。不过最终该做的改变还是要做,现在社区那么多好资源,不用白不用。

再来就是DDB的版本管理和问题跟踪,DDB最早是以JDBC驱动的方式给应用提供服务,语法解析,执行计划这些逻辑都是在应用端JAR包里,应用如果使用DDB出了什么问题,往往第一反应是重启恢复,对一些比较奇葩的场景,现场没了再复现有可能非常困难。另一方面,应用的迭代开发和我们这边是完全独立的,在DDB没有特大痛点时,我们一般很难驱动他们升级,这就导致各个产品线的DDB版本非常凌乱,而我们开发组则要花很多碎片时间为十几个不同版本的DDB做技术支持。以前我们最大的杀手锏就是告诉他们XXX版本有个特大BUG,踩到会出大事情,后来“狼来了”喊多了,信的人也就少了。

再后来云计算来了,要求我们提供的服务必须“无侵入”,于是有了Proxy,因为Proxy是独立于应用部署的,在版本和问题排查方面我们和运维人员就有了很大掌控度。Proxy的开发和推广是我接手DDB以来一直致力做的事,目前网易很多产品都用私有云统一版本的DDBProxy。

CSDN:您所负责的分布式数据库DDB主要运用在哪些架构层面,在整个系统架构中承担着什么样的责任?

马进: DDB一般在应用产品中做数据服务层,为上层业务提供透明分库分表服务,同时也会做些读写分离,数据节点高可用的事情。也有其他数据存储系统拿DDB做海量结构化数据存储,比如网易著名的对象存储系统NOS,就是用DDB存储元数据信息。

CSDN:是哪些因素促使网易将目光投向分库分表数据库DDB的研究与开发的?

马进: DDB最早是为网易博客开发的,06年网易博客算是业界比较标杆的产品了,当时日活上百万已是了不起的成就。相比而言,当时的MySQL和单机性能远不如现在这般强大, 如果没有一个像DDB这样的中间件是无法支撑博客当时的体量的。现今虽然单机性能和MySQL都有了长远进步,但大产品的日活也从百万上升到千万级别。DDB这种分库分表的系统依然是大产品不可或缺的一部分。

CSDN:网易私有云项目的启动,对DDB产生了什么样的影响?

马进:网易私有云首先给DDB Proxy模式的推广起了很好的促进作用,很多应用都非常喜欢用自己熟悉的ORM框架通过标准驱动访问DDB,而且在DDB Proxy模式下,我们也接了一些Python和Go的产品,效果都不错。其次,云计算的思维要求我们必须站在平台化的立场上去考虑问题,这也直接推动了DDB的整体架构向平台化的方向走,对DDB而言,这种变化非常有意义。

CSDN:能否结合您多年的实战经验,谈谈DDB的发展前景,分享下您对未来分布式数据库相关领域的一些看法?

马进:近几年NoSQL和NewSQL很火,各种系统层出不穷,有些声音说传统RDBMS过于中庸,早晚被取代。我并不这么看,虽然NoSQL和NewSQL在性能上与传统数据库相比有巨大优势,比如大部分KV系统在吞吐率好很多,大部分列存做分析速度快很多,但这些系统都是以牺牲应用场景为代价换来的,比如KV索引单一,做缓存还可以,却难以应对多元化的查询需求,列存则不适合做OLTP和随机读。目前我还没有看到比传统RDBMS在可靠性、需求满足性上更让人放心的存储系统。而DDB这类分库分表的数据库算是传统RDBMS在多机上的延伸,在应用场景上有一定的trade off,以换取更好的延展性和性能,需求满足度上相比NoSQL和NewSQL还是让人放心许多。

无论是数据库,还是分库分表中间件,开发成本都很大。大公司或许有足够的人力可以自己搞一套,但对一些中小型企业,或研发实力不足的大企业,自研一般不是一个好选项,这也是为什么现在基于云计算和容器技术的SaaS这么受欢迎,未来DDB也会在网易蜂巢上以SaaS的形式面向大众,帮助外部客户解决分库分表的难题。

CSDN:在本次SDCC 2016·北京站上,您的分享主要聚焦哪些方面?

马进:第一是要带大家了解DDB是个什么东西,有哪些价值,简单介绍一下这十年来DDB的架构更迭,作为网易十年一剑的内部系统,相信DDB的研发历程可以给大家带来一些启发。

随后会介绍我接手DDB之后做的一些性能上的优化,算是抛砖引玉,希望能够让大家在性能优化形成一些有效思路。


SDCC 2016·北京站:干货满满,诚意巨献。目前门票火热销售八折优惠中,5人以上团购立减800元,点击这里注册参会

图片描述

评论