帮我吧是金万维(北京金万维科技有限公司)应用于全行业的新一代全渠道智能客服平台,可以支撑各种来源入口和渠道(包括电话、Web、H5、微信公众号、小程序、企业微信、钉钉、微博、邮件、APP、客户端等)快速接入到帮我吧服务平台,并通过灵活的工单工作流实现问题/事务在用户及企业内部多部门之间高效流转;系统提供aPaaS、iPaaS以及BI等灵活自定义配置功能,能很好的满足中大型客户的复杂及多变的客户服务场景需求。
为提供承载量大、灵活配置售后流程和多维度的数据统计服务能力,我们需要构建高性能、灵活弹性、支持大存储、高效备份、可快速恢复数据的数据库方案。帮我吧前期采用自建Percona XtraDB Cluster(PXC)结合某开源分布式数据库的方式构建数据库方案,在使用过程中存在维护复杂、性能扩展代价大、扩缩容时间久+复杂度高、弹性不足等问题。经过多轮技术调研。我们计划采用阿里云瑶池旗下的云原生关系型数据库PolarDB for MySQL支撑帮我吧平台,利用PolarDB弹性多机并行(ePQ)、闪回查询、秒级DDL、快照备份等特性,支持我们构建低成本高性价比的数据库方案。通过引入PolarDB替代原有数据库方案,帮我吧实现了以下业务收益:能平稳支撑十亿级数据读写、超复杂SQL提速、分钟级增加节点应对业务高峰、秒级备份数据库、快速恢复客户数据。
北京金万维科技有限公司成立于2004年,是国内倍受信赖的企业信息化互联网平台。金万维定位于“携手各行业管理软件提供商为企业提供信息化服务”,通过提供“售前”、“售中”、“售后”的互联网平台服务,来帮助管理软件提供商及其用户成功。“售后”帮我吧是金万维旗下新一代全渠道智能客服平台,帮助企业快速连接客户、提升客服工作效率、提升客户满意度、降低服务成本等。
作为金万维的战略级产品,帮我吧为用户打造覆盖电话、Web、H5、微信公众号、小程序、客户端等各个企业级入口的服务平台。通过智能机器人、在线客服、远程协助、呼叫中心、座席助手、工单、现场服务等服务功能和模块,帮助企业快速连接客户、提升客服工作效率和客户满意度,降低服务成本,让客户服务真正成为企业利润增长的强大引擎。
帮我吧全国有25家分支机构,向全国十万家企业客户提供智能售后平台服务,并签约IT、家居、机械设备、共享服务、餐饮连锁、服务外包等行业100多家头部客户。服务的企业客户量大,部分行业的售后流程和售后流程复杂,导致我们的售后平台售后数据量大、售后业务逻辑复杂、客户对数据备份恢复时效性要求高、自定义查询器配置灵活带来大量复杂且查询慢的SQL、数据结构变更迭代快,这些都给我们技术团队数据库选型带来较大的挑战。
在数据库选型上,我们做过各类尝试来解决业务问题,比如某开源分布式数据库、MySQL、PXC、MongoDB等,一直没有找到一个数据库引擎匹配帮我吧所有业务的方案,为满足业务需求,选择多写、数据复制等方式选用多个引擎来支撑不同业务。为降低维护成本、降低客户使用门槛,帮我吧在云上采用SaaS模式向企业客户提供售后智能服务平台,技术架构图如下:● 为支持售后平台灵活配置和灵活查询,在配置界面和查询界面支持自定义查询器,客户可以选择不同字段支持售后流程配置和查询配置,为规避频繁增加字段,技术侧在MySQL数据库将业务数据的多列转换为主键、配置列、列名key、列value值的方式,复杂售后流程的客户业务数据量放大较多,少则十几倍多则几十倍,导致售后核心数据量大;在配置和查询功能上多个不同维度字段的组合,部分大客户的查询需要核心表自关联十几次甚至几十次,导致复杂业务大客户查询SQL复杂查询慢。● 帮我吧在云上采用SaaS多租户模式部署,客户误操作后有数据恢复或数据回溯需求,从数据库实例恢复单租户数据时间成本较高、人力成本较高。● 业务数据量增长迅速、业务流量持续增加,需要定期扩容、升配数据库,使用自建方案(Percona PXC+某开源分布式数据库)数据库扩容效率低、扩容时间久。● 业务上有定时做数据库备份、单独库表恢复的诉求,自建方案备份时间久、备份人力成高、不支持库表恢复,需要单独搭建集群恢复。● 售后平台由于迭代比较快,经常需要对业务库做结构变更,自建方案做数据库DDL的时候存在锁全表、结构变更时间长、结构变更影响数据库性能等问题,部分场景影响业务。● 业务库核心数据量大,需要采用支持大存储的业务库引擎,大客户复杂查询慢,需要提速;
● SaaS部署,单租户数据恢复慢,要小时级到天级;
● 数据库扩容效率低、扩容时间久,扩容IT成本大资源成本与收益线性关系差;
● 数据库备份时间久、备份人力成本高,不支持库表级恢复恢复慢;
● 业务库DDL锁全表、结构变更时间长、结构变更影响数据库性能。
我们在产品升级支撑客户的同时也在不断调研和升级数据库引擎,以便提供更高效的数据库服务,满足高弹性、高扩容效率、降低备份恢复效率和成本、高效率结构变更、高效运维等。在选型过程中,我们了解到PolarDB MySQL具备高弹性、高性能、海量存储、运维高效、配套完善等特点,通过技术验证确认可以解决我们的数据库痛点,替代现有数据库方案。
● 通过弹性多机并行(ePQ)优化慢查询,可提速几倍到十几倍,支持海量数据存储,最高可支持100TB;● 通过闪回查询(Flashback Query)可以分钟级恢复单租户数据,使用简单;● 分钟级弹升加节点和自动弹性伸缩,PolarDB基于共享存储架构,可分钟级扩容、升配和加节点,借助弹性多机并行能力可以利用小计算节点完成比较慢的大SQL提速;● PolarDB支持通过快照备份和库表恢复,降低备份和恢复操作成本,提高备份恢复速度;● PolarDB支持秒级加字段,提高DDL速度和降低DDL对业务影响,同时也支持并行DDL,可以提高部分DDL的速度。帮我吧选择PolarDB前期主要考虑点是希望评估PolarDB的高并发读写能力能否支撑交互业务的同时,可以高性价比支持自定义查询器的大量数据、复杂多表关联查询性能。经过技术交流和功能、性能验证,PolarDB可以通过弹性多机并行(ePQ),利用多个小规格节点(4核16GB)应对复杂查询。通过官网和阿里云技术专家交流我们了解到,弹性多机并行(Elastic Parallel Query)ePQ是PolarDB新推出通过多节点并行查询能力提速复杂查询的新特性。ePQ可以支持跨机并行查询(Parallel Query),利用多个节点的多线程并行查询、多线程CPU和IO资源提高查询语句速度,适用于大表查询、多表连接查询、计算量较大的查询等。针对我们自定义查询器的业务场景,验证PolarDB的ePQ功能,通过多轮验证和调试,ePQ可以很好地提速帮我吧售后平台复杂查询和自定义查询器的功能。借助多机并行能力,用多个4核16GB节点支撑了此前需要16核32GB自建某开源分布式数据库才能支持的业务。上线后,ePQ对业务效果较好,通过ePQ跨机并行提速和动态扩缩容能力降低了扩容的资源投入。ePQ架构图如下:
闪回查询(Flashback Query)帮快速恢复SaaS平台单租户数据
帮我吧的客户在业务上有时会有误操作,希望恢复数据或者查看历史版本数据,在使用PolarDB之前,我们是这样恢复的:1. 新搭新自建数据库集群;
2. 恢复备份到客户希望的时间点;
这种恢复方式会占用我们一些资源,也消耗人力。我们了解到PolarDB提供闪回查询功能(Flashback Query),通过在查询语句上使用特定语法,可以在生产数据库查询出一个表部分数据的历史版本,可以提高单租户数据恢复的效率。我们在实际业务上验证了闪回查询,确实比之前的单租户数据恢复快,可以在分钟级查询出租户历史数据,提高了历史数据恢复速度,不过我们在使用的时候发现目前闪回查询还不支持二级索引,和阿里云团队沟通确认,在未来将实现闪回查询支持二级索引查询进一步提高恢复速度。PolarDB闪回查询(Flashback Query),支持在当前实例高效地查询某个表的数据的历史版本。通过innodb_backquery_enable参数打开Flashback Query功能,并通过innodb_backquery_window设置需要回查的时间范围,然后通过AS OF关键字来指定需要看到的历史时间点开启查询。比如要查询products表的历史版本,这个表中有createtime字段来记录当前行的最后修改时间。实时查询:帮我吧业务和流量变化有数据库扩容的诉求,自建方案扩容需要较长时间成本、扩容有一定操作成本和稳定性风险,需要有同学持续跟进扩容进度,也有扩容异常问题需要处理。PolarDB具备高弹性能力,通过共享存储和RDMA网络可以支持扩容升配与存储量无关,同时支持控制台一键动态扩容和增减节点,通过使用集群地址,可屏蔽底层的变化,应用对于增减节点无感知,这个特性比较满足我们快速升降配和扩容诉求,在使用ePQ过程中增加节点几分钟就完成,很方便。我们从阿里云技术专家侧了解到,PolarDB还支持自动弹性伸缩,未来我们也会在实际业务中尝试自动弹性伸缩以提高稳定性和性能。
业务数据至关重要,我们对数据库备份恢复尤为重视,希望备份恢复功能能支持便捷、快速的备份和恢复,以及支持单独对象的快速恢复。之前的方案备份和恢复操作成本较高,备份恢复花费较长时间。利用PolarDB后秒级快照备份和库表恢复提高了备份恢复效率,降低备份恢复时间。我们主要使用PolarDB支持秒级快照备份和库表恢复功能。秒级快照备份支持控制台一键快速完成数据库备份,也支持高频快照备份以增加备份密度,没隔几小时备份一次提升恢复速度。假设3月1日8:00设置了每4小时创建一个备份,系统将自动在2小时内(即3月1日8:00~12:00)完成一个备份,并以每4小时一个备份的频率持续创建。并会保留每天一个备份以及最新当天的多个快照备份,提高恢复速度。通过库表级恢复,帮我们提高了数据库表恢复速度,通过一个完整的数据全量备份(快照)以及后续一段时间的Redo日志,可以将部分库或部分表的数据恢复到日志保存期限内期望的时间点。如下图:帮我吧业务变更较多,经常需要对数据库做结构变更,比如增加字段、增加索引、修改字段、修改字段类型等操作,使用自建数据库需要通过第三方工具进行无锁结构变更。使用PolarDB后,可以利用秒级加字段(Instant add column)、并行DDL等能力,并结合DMS无锁结构变更功能,支撑大部分结构变更提速、降低锁粒度,降低业务影响。我们利用PolarDB秒级加字段功能,在加列操作时只变更表定义信息,无需修改已有数据,可以快速完成对任意大小表的加列操作,秒级完成加列操作。借助PolarDB并行DDL功能,充分发挥数据库硬件资源,大幅降低DDL的执行耗时,缩短执行DDL操作的窗口期,降低了对业务有影响的DDL的执行时间。帮我吧技术团队通过使用PolarDB提高了业务开发效率、降低了维护成本和IT成本,PolarDB为帮我吧智能客服平台的快速、平稳发展提供了坚实的技术支撑。目前我们的智能客服平台业务运行在由多个小规格PolarDB节点组成的集群上,借助ePQ提速了复杂查询,也可以快速弹升弹降应对业务高峰,并通过闪回查询、秒级加字段降低了我们的资源成本和人力维护成本。期待阿里云PolarDB未来推出更多优秀的功能,帮助我们的业务提效。相关文档
弹性多机并行(ePQ)功能说明:https://help.aliyun.com/document_detail/439776.html
点击「阅读原文」了解云原生关系型数据库PolarDB更多内容