转载来源:OceanBase数据库星球公众号

编者按:和DBA100系列之前的采访对象不同,本期采访嘉宾严格意义上并不能算DBA。不过,向永清也是从DBA一步步成长起来的,后来出来创业,到如今成为了一名公司技术高管和数字化转型专家。一路走来,向永清始终保持对技术的好奇心,他的技术情结以及使命感值得DBA学习。

嘉宾介绍:向永清,2010年进入中国空间技术研究院总体部工作。7年的时间里,他先后参与了资源一号02D、资源一号03星、高分2号、高分3号、北斗2号、嫦娥5号等卫星的研制,现为阅信云CTO,负责阅信云产品研发和团队管理工作。

业务系统面临性能瓶颈

在向永清的带领下,阅信云今年完成了一件大事:替换了核心业务系统的数据库,让阅信云终于没有了后顾之忧。

向永清所在的阅信云隶属于北京金楼世纪科技有限公司,是国内新兴的智能云通信服务商。阅信云专注企业云通信服务,经过8年的发展与积累,先后为包括北京城市副中心、某国家部委、国家电网、中国人寿、中国邮政、昆明航空、兰州银行、沧州银行、阿里巴巴、京东、字节跳动等上千家政府、大型企事业单位、金融企业和互联网公司提供云通信服务。

阅信云的短信业务平台是公司的核心业务系统,它为企业提供一个电信运营平台向目标用户即时推送短信服务,日均短信处理能力达3亿条,接口响应处理速度小于30毫秒,单通道下发速度3000条/秒,而这些离不开后台数据库的强力支持。

“数据库需要存储所有的短信发送记录,包括是否发送成功和各种下行的消息。如果客户有回复,还要记录客户的回复情况,这些都需要完整地记录下来。”向永清介绍。

随着公司业务的高速成长,阅信云短信业务平台开始出现短信发送超时和漏发的情况,而且存储容量也达到了RDS实例的极限,数据库面临的压力越来越大。具体而言,数据库面临以下四个挑战:

第一,数据量接近了RDS实例存储容量上限。如果突破这个上线后,扩容会比较麻烦。为了避免扩容,目前只能每过一段时间删除一部分数据以腾出一点存储空间。操作麻烦,而且存在很大的安全隐患。

第二,目前数据库数据量太大,导致数据库性能不稳定,经常抖动,查询超时,越来越难以保证查询以及批量修改时的性能。

第三,由于数据量太大,阅信云不得已采用了分库的设计,数据按照业务逻辑拆成了相对独立的两部分数据,而这种分库设计带来了很大不便。因为业务经常需要对全量数据进行查询分析,此时需要从几个库中分别把数据查出来之后再汇总,效率低,使用体验差。

第四,目前RDS服务成本压力较高,阅信云希望能进一步降低数据库的使用成本。

总体上看,阅信云目前的这个RDS服务要提升和优化都已经非常难,考虑到未来随着业务的增长将来对系统的查询性能和并发吞吐量要求还会更高,数据库的替换已经迫在眉睫了。

从MySQL迁移到OceanBase

决定了要更换数据库,随着而来的问题就是该选择哪个数据库?基于国产数据库软件目前的发展和国家对国产替代的重视,在选型之前,阅信云确立了一个基本原则是选国产数据库。接下来,阅信云对目前市场的主流国产数据库进行了评估,重点是性能、运维成本以及迁移难度。在认真评估和全面测试后,阅信云最后选择了分布式数据库OceanBase。

“我们发现OceanBase在性能和使用成本方面有比较明显的优势,而且,测试后还发现,采用OceanBase后我们的业务系统可以平滑地迁移到新数据库,基本上对业务没有什么影响。因此,我们最后就选择了OceanBase。”向永清表示。

OceanBase上线后的运行效果也证明了阅信云此次选型的正确性,向永清对OceanBase的三大表现尤其印象深刻。

首先是查询效率高,极大地提升了用户体验。和阅信云之前采用的MySQL相比,绝大多数应用场景OceanBase性能上平均有10倍的提升。

其次,节省存储空间。OceanBase采用了一些压缩技术,能大大节省对存储空间的占用。根据阅信云的测算,至少能节省70%的存储空间。

第三,OceanBase的动态扩容能力。阅信云之所以要更换MySQL数据库,一个非常重要的原因是原来的MySQL实例已经接近容量上限,换成了OceanBase之后这一上线没有了,可以按照需求选择合适的配置。而且,扩容非常方便,基本不用人工介入,几条命令下去,系统可以自己完成扩容,非常方便。

“这种自动扩缩容能力对我们的业务开展非常关键。因为我们经常会有大促活动,此时资源的消耗是平时的好几倍,如果能及时去扩缩容,可以帮助我们节省不小的成本。”向永清说。

向永清坦言这次更换数据库之前他面临不小的压力。“开始我有些担心这个方案可能会有风险,回头看来整个过程比较平稳,对业务的支持也比较好,是一个比较成功、值得骄傲的案例。”向永清表示。

国产数据库迎来机遇期

应该说,作为阅信云CTO和本次数据库选型的负责人,向永清对数据库并不陌生,在其职业经历中也一直和数据库打交道。

向永清毕业于哈尔滨工业大学软件工程专业,这个专业是他经过认真考虑后做出的选择。向永清2003年参加高考,读高中时数学成绩就非常好,在对就业市场进行了一番分析后决定选择软件工程作为自己的专业。因为计算机专业就业前景好,而且软件工程能让自己数学好的优势得到展现。

数据库是软件工程专业的一门基础课程,不过,课堂内容还是偏重于理论,而向永清真正接触大数据库是在北京大学读研究生的时候,后来参加工作接触数据库的机会就更多,除了Oracle、MySQL之外,在项目中接触了不少国产数据库,包括人大金仓、达梦、南大通用和神州通软等。而阅信云的这次MySQL向OceanBase的迁移,加深了向永清对国产数据库的了解。

“我们看到这些年国产数据库得到长足发展。国家对基础软件越来越重视,出台了很多政策,我国的企业也对国产数据库有了更多认知。特别是借助信创,数据库等国产软件有了更多的机会,甚至完成了一些关键系统的国产替换,应该说国产数据库从技术、市场、人才等各个方面都有了明显的改观。”向永清表示。

在国产数据库中分布式数据库尤其亮眼。向永清说,分布式数据库技术是未来的发展方向,因为不论是从并发量还有吞吐量,以及性能,分布式数据库都有显著的优势。这也是阅信云选择OceanBase的一个大前提。

“尤其是一个数据量非常大的行业或者领域,比如互联网金融和一些涉及民生的行业,未来可能还有一些工业互联网的场景。总之,如果数据量会非常大,同时,对实时性的要求也很高,都会是分布式数据库的应用场合。”向永清说。

向业务倾斜,放大DBA价值

近几年来,云计算、分布式技术、信创等给中国的数据库行业带来了新的变化,作为技术专家的向永清自然对这些变化深有体会。他说,这些变化对于DBA而言是挑战,也是一个机遇,但无论什么时候,对DBA的基本要求不会变,这就是基础知识必须牢靠。

“DBA是一个综合性的角色,需要跟不同的技术team 打交道,比如跟开发、跟测试、跟运维都要打交道,因此知识的掌握上必须全面。”向永清表示。

首先,作为一名DBA,数据库方面的知识是必不可少。比如,数据库的索引技术、查询优化技术,以及数据库的一些特性如何使用,这些基础能力都必须具备。不过,DBA要掌握的不仅是数据库,还有其他计算机方面的基础知识,比如操作系统、数据结构、网络、算法等,必须学得扎实。他说,只有根基打牢,后来开发应用、做工程项目才能轻松和得心应手,也才能给未来的这个职业发展打下一个比较好的基础。

其次,作为DBA一定要熟悉业务。“数据其实是业务的一个反馈,如果你对业务不熟,你就不可能提出优秀的数据库方案和架构设计,也不可能在数据库出现性能或者其他问题的时候,很快定位这个问题,提出解决办法。”向永清说。

第三,作为DBA需要有一定的编码能力,不仅要能编写执行脚本,可能还要参与应用程序的编写。而且,DBA还需要了解一些典型的数据中间件,比如ETL工具、常用的消息中间件,如kafka、Reids等。

第四,DBA是介于开发和运维中间的一个角色,因此也需要掌握一定运维的技能,尤其是数据库相关的运维技能。比如,数据库的日志备份和删除策略、数据备份策略、线上线下数据同步策略等,都需要DBA来制订。

向永清特别提醒说,未来DBA很大一部分价值会体现在研发环节,需要支持一些业务侧的数据需求,只有这样DBA 的价值才会得到放大。

保持好奇心,坚持学习

向永清十分庆幸自己所处的这个时代,他说“今天我们所处的这个时代是一个技术工程师能否大放异彩的时代”。

这个时代诞生了很多技术大牛,他们依靠自己的能力推动了社会的进步。向永清对这些技术大牛非常崇拜。比如,以太坊创始人V神(维塔利克˙布特林,Vitalik Buterin),这个立志用区块链技术颠覆实体经济的90后小伙,20岁时挤下扎克伯格拿下世界科技奖。

“Linux之父”Linus Torvalds是向永清非常崇拜的另一个技术大牛,他为世界打开了Linux的大门。向永清说,尽管他今天的工作与Linux关系并不紧密,但他至今还保持订阅Linux项目在Github上的更新,一旦项目有更新,他就可以收到通知。

看到Linus Torvalds等牛人的成长经历和他们至今依然在技术领域活跃,让向永清更加坚信程序员是一个可以干一辈子的职业,也是一个非常有成就感和价值的职业,他也非常享受这个职业。

“我觉得技术的成长和修炼过程是一个很有趣的过程。因为每到一个阶段,你都会有一些新的感悟或者说一些新的思考,这样不断激发你往下一个阶段去成长、去进步。”向永清说。

向永清认为技术人员不要担忧那些所谓的35岁门槛,而要保持对技术的好奇心,能持久地坚持学习。

“我觉得35岁门槛其实是不存在的。但如果你到35岁就停止进步、停止学习、停止去刷新(refresh)自己的知识,那就是你自己的原因了,不能归结到社会。”向永清表示。

向永清透露,他现阶段正在思考两件事情:第一,如何能为中国软件产业的成长上做出一些自己的努力,对中国的软件产业起到一些推动作用。第二,继续提升自己的技术能力和管理能力。在技术能力方面,主要是在架构,特别是高并发架构设计能力;在管理能力方面则是要激励团队,让团队的每个成员都能发挥最大潜力。

向永清说,作为技术人员需要有点使命感。“目前国内真正牛的软件相对少,因此中国的程序员还任重道远。不过,我相信只要我们一步一个脚印,中国的软件产业也会像今天的制造业一样引领全球。作为一名技术人员,我希望自己能为中国的软件产业做一点点事情。”他说。