平安科技汪洋:专业+优雅,聊聊你不知道的程序员艺术

跬步以积,云上看PostgreSQL的生态发展之路

2017年10月21-22日,PostgreSQL 2017中国技术大会于深圳科兴科学园国际会议中心圆满收官。拥抱开源,聆听不同,广纳业界同好,与众PGer共话PostgreSQL的前世今生,来年他日。

近来,“程序员”似乎逐渐成为大家调侃的对象,“无趣”、“不修边幅”等标签化误解更是屡见不鲜,甚至成为许多技术从业者的“自黑”台词,但平安科技数据库总监汪洋却用自己的一天日程告诉我们“程序员也可以优雅和可爱”。从PostgreSQL的上云实践到开源理念在中国的践行现状,从PostgreSQL中国生态的推进到人工智能时代下的DBA之路,很专业;从运动健身到绿色出行,从买咖啡自备保温杯到周末的“家人时间”,很生活——或许,这就是在“玩最酷的PG,做最优雅的技术人”。

CSDN:闲话暂搁,首先能否请您谈一谈您近来的发展路线,包括所在的平安科技团队近期的研究方向及下一步规划?

汪洋: PostgreSQL方面,我们近两年一直在按部就班地推进,一步步将我们长久以来累积的经验和技术能力,部署至平安内部的私有云,而今年,我们又开始在自己的公有云上做了一些尝试,以PostgreSQL作为我们第一个RDS服务,对外发布了基于PostgreSQL的RDS产品——这是我们现在的一个循序渐进的过程。当然,无论是在公有云还是私有云方面,我们都还在不断完善自身的服务以及开发新的特性,持续将我们在日常工作中解决问题累积下来的经验集成到私有云和公有云上,从而达成用户体验的稳步提升,以上都是我们正在进行中的工作。

至于未来规划方面,因为我们目前在公有云上,所部署的还只是基于PostgreSQL单实例的数据库。当然,做为金融系统,必然有自己的同城容灾和远程容灾,但其本质上毕竟仍是一个单实例。随着数据的爆发性增长,单一实例将很难承担如此大的负载,因而如何在私有云或公有云上实现读写分离从而分散负载,怎样实现分库分表,以及如何实现分布式数据库,都是我们接下来需要考虑的问题。这也指明了我们未来的两大研究方向:一是通过中间件实现读写分离,即DRDS的分库分表;再者,就是一些开源分布式数据库的探索,在设计阶段就将这种内置分布式特性的数据库纳入考虑,再基于我们内部对于金融行业的一些要求,相应地适配到平安的环境中,继而将其引入我们的公有云或私有云。

此外,因为现在大数据及人工智能都需要对大量数据进行训练或处理分析,所以我们也在考虑利用GPU的能力,这也是开源数据库的一个好处。PostgreSQL很早以前就开始通过一些插件支持基于GPU的运算,现在平安公有云上也会推出一些GPU的资源池,之后我们就可以基于GPU资源池在PostgreSQL中实现大批量加速、大批量数据处理和分析等功能。

CSDN:这次您在大会上的分享主题是《平安科技在PostgreSQL方面的私有云和公有云的高可用架构实践》,而如今包括亚马逊、Microsoft Azure等都已经逐渐实现了PostgreSQL的云化,那么您认为PostgreSQL上云的技术价值是什么,您又是如何看待国内PostgreSQL上云的发展态势呢?

汪洋: PostgreSQL上云的价值,或者说上云在DBPaaS这个领域,大家的实现价值是差不多的,都是为了能够进一步DevOPS,也就是最快的交付价值——能够尽快面对市场需求加以挖掘,继而实现并交付这一价值。另外一方面,就是通过上云,我们可以将整个部署、架构,以及一些运维实践经验,进行统一化、标准化、规范化,从而从整体上降低运营成本。

对于用户而言,上云的价值在于可以省却冗长的审批流程,抢占市场先机,提升效率。通过上云,可以实现自主化操作,能够在分钟级,甚至秒级交付一个PostgreSQL实例,或者一个数据库使用。在这方面,大多云数据库的实现价值也都一样。

至于发展态势,首先我们基于前面提到的价值,现在可以看到这种上云的需求,那么为什么有这种需求呢?部分商业化数据库的上云可能会涉及到一些风险,但PostgreSQL和MySQL属于开源数据库。如果大家要用到数据库内部一些强大的特性,或者其过往基于一些商业化软件开发的系统,又苦于巨大的迁移成本,这时就可以选择PostgreSQL,所以这种需求显然是存在的。纵观现阶段整个市场情况,虽然亚马逊、阿里,包括平安都发布了基于PostgreSQL的云化服务、RDS服务,但整体上来看还是不及MySQL,当然这也说明PostgreSQL还有很大的发展空间,这也是为什么要和社区一起继续持续推广PostgreSQL的一个原因。

CSDN:平安科技作为中国部署量最大的PostgreSQL用户,能否谈一谈PostgreSQL在金融领域的使用场景下的优势?

汪洋: PostgreSQL的使用场景下,现在我们有超过1500多个实例,平均下来每天都约有一到两个实例在新建,为什么需求如此之大?

一方面是平安集团子公司很多,业务线亦然,每天的需求往往应接不暇,因此对数据库肯定是有刚性需求的。首先,PostgreSQL非常类似于Oracle数据库,两者特性也很相像,无论是体系结构,还是一些语法,乃至在数据库里实现的一些功能都很像。而金融行业的很多系统都需要比较复杂的处理逻辑,也就是说在数据库中经常是需要访问较大的数据量,而不是像MySQL那样简单地把数据库当成一个存储就可以实现。不止是访问的数据量大,还要进行一些复杂运算,然后再把这个请求结果反馈给用户,如果把这部分应用逻辑迁移到应用服务器,因为要访问大量的数据,所以会造成在网络上的开销,响应时间增加,从而导致不良的用户体验。因为金融行业有这样的逻辑,而这些逻辑又最好是封装在一个数据库中,一些商业化数据库软件又相对比较昂贵,所以PostgreSQL正好填补了这方面的空白。

CSDN:随着PostgreSQL在平安科技内部的推进,面对巨量数据,PostgreSQL在数据异地备份方面是如何处理的?

汪洋:在本地,我们是两地三中心,首先从架构层面保证满足金融行业的一些要求,在同城有同城容灾,在远程有远程容灾,在本地还会进行备份。至于远程的备份,基于远程容灾的节点可以进行异地的备份,这样就保证任何情况下,如果本地发生地域性灾难,切到远程不仅可以承担起系统负载,还可以继续进行备份。

CSDN:在此前的讨论中大家也有谈过类似的问题,就是在国内对于PG的发展一直有颇多争议,尤其对初学者以及面临技术选型的技术人员而言,会有一些疑惑,像是PostgreSQL是否是个正确的选择?如果之前一直习惯用Oracle、MySQL,现在想要转型是否适当?对于这些良性困惑或是初学者的好奇,您有什么想说的?

汪洋:这一年来,我们也面试过很多同学,他们对于PostgreSQL基本上还是处于听说过,但没有深入了解过,甚至也没有看过。但其实大家可以看到特别是这一年来,PostgreSQL也取得了不少成绩。在新特性上,PostgreSQL的版本从9.6直接变到了10,这是版本编号策略的一大变动(当然,MySQL也是从5.7直接转到版本8了)。伴随版本升级,PostgreSQL也发布了很多令人激动的特性,包括此前社区,乃至整个用户集体所反馈的声音都在其中得到体现,其功能在不断增强。另外可以证明PostgreSQL在不断进步的一点就是如果大家去DB Engine这个网站上去看的话,不难发现PostgreSQL最近一年基本上是稳步保持在第四的位置(去年其与MongoDB还存在互相交错的情况),并且它的分数每个月大体上也是呈上扬趋势。鉴于DB Engine属于一个全球范围内的数据库流行度指标,所以从中可以看到PostgreSQL的全球流行度是在不断上升的。另外一方面,我觉得无论是PostgreSQL社区,还是PostgreSQL本身在整个数据库领域的影响力都处于一种不断增加的状态,当然整体上来讲我觉得还是需要大家继续努力,不断加速推广。

对于初学者而言,首先Oracle是一个极其大而全的数据库,可以承载所有种类的负载,而且无论是在性能方面、管理方面,还是备份和恢复方面都具备相当优秀的特性。但是正是因为这一原因,初学者往往可能不知道该从何入手,或者入手了又觉得越挖越深,从职业发展的角度来评判,很难把这个产品快速用起来,用好它,简单来说也就是Oracle的学习曲线比较长。而MySQL和PostgreSQL,相对来说都没有Oracle那么复杂,学习曲线也相对较短。

与此同时,如果你是一个初学者,面对PostgreSQL与MySQL,这之间从来不是谁取代谁的问题,而是都各自有不同的应用场景。初学者可以二者一起来学习,因为从现在这个时代来看,如果你只掌握一门数据库技术是远远不够的。先说PostgreSQL,正因为它和Oracle比较相似,初学者一方面可以快速上手,另一方面还能够从中体会到一些优秀数据库所具备的能力,包括其中的Procedure、其支持的语言的种类、分析函数等等,再加之它还是一个学院派数据库,可以从中学到很多数据库的理论知识,所以其实在接触PostgreSQL的过程中,也是在为日后的数据库理解,以及从事其他数据库相关的工作,打下了一个很好的基础。而MySQL与其他商业化数据库软件相比,较为简单,上手也比较快,能够快速地应用到工作中,这也是为什么MySQL能够快速发展起来的原因之一——对于开发人员来说,上手快、学习曲线短。PostgreSQL也一样,且现阶段发展态势良好。

CSDN:我们之前有了解到,平安科技正在研究PostgreSQL的地理位置信息插件,用于替换原来的MongoDB地理位置信息研发系统,这是出于什么样的技术考量,而现在这一研究又进入到什么阶段了?

汪洋:首先,MongoDB无疑是一个很好的分布式数据库,其在设计初期就是分库分表的,而且每一个分片都有自己的一套复制机制,这是一个非常好的分布式架构,用户可以在其基础上进行线性扩展,也可以分库分表。它为什么叫MongoDB?并不是芒果,它正确的英文的Humongous,也就是它从设计初期的定位就是要存储海量数据,可以对海量数据进行访问,这显然是它的一大优势。同时,MongoDB支持一个很好的地理位置信息查询功能,所以处理相关问题也比较方便。但是你会发现,如果是一个相对较小的系统,用MongoDB的话架构就会比较重。因为就像前面说的,要分库分表的话,它还有自己的复制集,还有自己的配置节点,还有自己的路由节点,所以从运维的角度来说成本很高。如果是对于小型系统,PostgreSQL也有相应的功能,而且我们经过测试发现其并不弱于MongoDB,因此在这种环境下没有必要用MongoDB这么重的架构。故而我们可以把这些相对来说小的,或者是中等规模的一些系统部署到PostgreSQL上面,这样操作整体的运维成本实际上是下降的,并且提高了效率产能,我们正是出于这一考量而做的选择。

CSDN:在此前的第十二届开源世界高峰论坛上,平安科技也作为联盟PostgreSQL分会的核心成员加入其中——平安科技践行开源理念,客观分析开源理念实践在中国的总体发展情况,以及一些常见的认知误区?

汪洋:关于开源软件,首先我一直坚定开源并不是免费的。信息自主可控,但并非免费,你需要培养自己的运维团队,需要非常了解所采用的开源软件,因为在这个过程中很少有外部公司能够帮助你,特别是当你在开源的基础上做出了一些代码改动之后,无论是开发了一些插件,还是对内核做了一些修改,所以如果有问题发生时,你无法像商业化软件一样求助于厂商自身的团队,或者是外界的第三方支持该软件的公司。他们对此都无能为力,因为他们并不知道你对这个开源软件做了什么,这就要求你要培养一个自己的运维团队,而这部分显然需要付出成本,所以说开源并不是免费的。

此外,开源软件基于的开源协议也有很大不同,也不是拿来随便怎么改都可以,不同的开源软件,像是MySQL,因为其基于GPL开源协议,如果要对其代码进行修改,就需要将修改的部分开源出来,并且要继承同样的开源协议,这样才能符合其开源协议所要求的条件。PostgreSQL的BSD(开源协议)相对而言比较灵活,允许任何人开发者自由使用和修改源代码,在保留版权声明的情况下使用、复制、修改或者分享代码,自由度较高。

至于整个中国的开源软件情况,实话来讲在开放程度上的确尚未达到国外水准,大家对于开源软件进行了一些修改,但又并不像国外那样很积极地反馈给社区。还有一点不同就是:国外的一些开源软件更多考虑一个产品的通用性需求;国内则习惯专注于本公司某一个特定点上的问题与需求,所以很难具备通用性和适用性——这也是国内外开源社区对比的一大区别所在。而对于PostgreSQL而言,我们在这一方面也要逐步按部就班去走,目前着重插件的开发:一方面对开发者友好,方便开发人员舒适地使用PostgreSQL,考虑到很多开发者的Oracle背景及习惯,基于这些开发出类Oracle功能;另一方面,方便运维人员在发生问题时可以快速定位,降低运营风险——平安PostgreSQL一直在基于这两类需求进行插件的开发。

CSDN:主流开源数据库,MySQL和PostgreSQL都是针对OLTP环境的,在OLAP在线分析需求下它们的性能明显不足。据了解,您的团队此前便就PG在OLAP领域应用的可行性展开研究,能否为我们介绍一下相关课题进展以及技术支撑?

汪洋: MySQL暂时还做不了分析型,特别是大量数据的分析型应用,因为它从设计角度来看更加适合OLTP,一些为OLAP负载设计的存储引擎发展也不尽如人意。而PostgreSQL却不一样,PostgreSQL虽然现在多应用于OLTP系统,但是从数据库本身的功能来看,它还备有丰富的分析函数、Window函数等主要应用在分析领域,或用以进行大量数据加工处理分析。所以从功能上来看,PostgreSQL具备处理OLAP负载的能力,只是要考虑当数据量超过一个PostgreSQL数据库能够处理的限度时,我们该如何解决?这里就像前面提到的,我们会考虑分布式、MPP,以及像是Greenplum或PG-XL这样的开源产品。但是从平安目前的使用情况来看,现在使用PG的生产系统中还没有一个分析类型的应用是真正用来处理大量数据的(当然小量数据还是有的)。因为现在的系统不可能是纯OLTP或纯OLAP的负载,例如一些在线系统,也可能需要夜晚去跑批,像是这些负载交由PostgreSQL来处理是完全没有问题的,但是交给MySQL就多少有些困难。但若说对很大量数据访问的分析加工处理,也就是传统意义上的数据仓库,现在还没有使用到PostgreSQL。

而我们这方面的想法可能是会使用一些像Greenplum这样基于PostgreSQL的MPP数据库加以配合,这是指存储方面,因为它可以将数据分散在不同的节点上,来增加其所能够处理的大数据量;从计算能力上来分析,我们也会考虑使用GPU,这样是为了在分析类型上能够发挥GPU大规模并行处理的优势。

CSDN:近来人工智能、物联网、区块链等都是大热的话题,其中是否有您最近关注的方向?您觉得PostgreSQL在哪些新技术下的发展空间比较值得称道?

汪洋:当然,如你所说,现在AI确实非常火,凡是大会,都能看到AI+——现在已经不是互联网+了,基本上是AI+一切。具体来讲,我更关心的可能主要是AIOps,即如何在系统运维过程中,应用到人工智能技术,以此协助我们进行故障发现,检测是否有不符合平时模式的情况出现,并帮助我们快速进行问题的定位分析和解决,在这一层面AI可以走到哪一步,我们拭目以待。

另外我想说,大家也不要把AI神化了。如今运维领域提到人工智能,大家都在聊AIOps,这也只是解决已知模式的问题,也就是说AI不会告诉你这个系统有什么新问题,它只是基于你过往的一些经验,对数据加以训练,本质上是已知模式的重复性问题。你可以通过AI来降低运营成本,但对于一些新问题,暂时还是需要交由DBA,交由人工来解决,所以大家暂时不用去担心AI会取代我们。

CSDN:下面让咱们聊一聊技术之外的话题,您在开发之余还有那些兴趣爱好?一天的生活节奏是怎样的呢?

汪洋:在开发运维之外,我的兴趣本身是挺广泛的,但是现在碍于时间问题只能从中挑选几个。一般我早晨起床之后都会游泳,而且差不多会游2.5到3公里,这往往要花上一个多小时,因为这个习惯能让我再接下来的一天里保持充沛的精力以及清晰的思维。我不知道大家有没有发现,如果早晨不运动,可能就会选择睡到八九点,然后起床 → 洗漱 → 穿衣服 → 吃早餐 → 上班,这样的一天下来,你会觉得精神却并没有那么好。反而是提前一个多小时,比如6:30起床运动一下再开始一天的安排,这样看似是少了一个半小时的睡眠时间,但因为你通过有氧运动做了锻炼,倒是给你带来了一天的好精神,所以我现在基本上是在条件允许的情况下坚持早起游泳,接下来就是一天紧张的工作。

晚上下班之后,我偏好读书,内容也包括前面提到的技术新趋势,因为现在技术更新太快,我不光负责数据库,还有服务器和存储,所以会留意这三大领域的发展趋势,会去看一些相关书籍。当然还包括现在炙手可热的AI,虽说我们暂时不会被人工智能取代,但是长远观之,几乎大多评论都认为AI会取代80%的工作,所以我们总要未雨绸缪,时刻保持危机感,因此我也会自己补充一些这方面的知识。当然如果时间充足,我晚间会再去健身房做一些健身。至于周末,因为我现居香港,所以周末通常会回香港陪伴家人。

深圳来讲,一旦进入秋冬季节,天气转凉,逐渐摆脱了夏季闷热的时节,户外活动也是个不错的选择。去年我就是游完泳然后骑行去上班,这也符合绿色出行的导向。

CSDN:最后,您还有什么内容想要和读者朋友们分享的吗?

汪洋:最后我还是想谈一谈PostgreSQL方面的内容:此前Bruce Momjian(PostgreSQL开源社区创始人之一)也聊到PostgreSQL如今在全球,像是欧洲、俄罗斯、日本等地区发展得都很不错,但唯独在中国的发展规模要远小于其应该达到的预期规模,所以我认为,作为PostgreSQL社区的一员,同时也是特聘专家,再者还是你前面提到的开源联盟PostgreSQL分会的一个成员,我都有责任去推广PostgreSQL,让更多人了解PostgreSQL,认识到它是一款非常优秀的数据库,并且在当前互联网飞速发展的情况下,PostgreSQL是能够发挥其能力的。因此我希望更多人能够加入到PostgreSQL这个大家庭里,通过学习交流,一同推动其在中国的发展。

最后,做IT无疑需要一个好的身体的,做IT里面的运维更需要一个好的身体,因此希望大家在学习之余还是要注意锻炼自己的身体,老话说得好——身体才是革命的本钱。


1月13日,PostgreSQL中国社区发起人之一周正中将于SDCC 2017之数据库线上峰会上围绕《PostgreSQL流计算案例》展开分享。峰会采用直播形式,打破地域限制,讲师为来自阿里、腾讯、微博、网易等7位一线专家,从核心技术到实践应用,为听众奉上独家数据库深度挖掘指南,欢迎报名参加

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/joy0921/article/details/80133457
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭