浙江移动首个基于阿里云技术的生产应用上线成功

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介:

一、项目背景

为落实公司“十三五”战略,建立“架构先进、运营高效、内外兼顾”的IT体系, 浙江移动近日受总部信息技术中心委托和指导,探索传统企业与互联网公司新型合作模式,跟踪行业发展态势,开展新技术、新产品研究和创新,在集团内首次携手亚洲最大的云计算公司——阿里云,在“可监可管可运维”基础上,开展第三方基础组件引入试点验证。

二、实施策略

浙江公司经过与阿里云工程师多次讨论后决定,采用分阶段实施与快速试点,在降低对应用侵入的同时又要兼顾实际效应,考虑轻量级系统验证和关键业务引入。试点具体分为多个阶段执行,其中一阶段以快速落地验证技术组件为目标。

一阶段总体原则以经历天猫双11核心交易业务和各类型业务考验的阿里云DRDS分布式关系型数据库服务(Distributed Relational Database Service)组件在M域试点应用的快速验证为诉求,完成“统一用户管理”应用迁移DRDS的“短平快”功能验证,开发上尽量以最小化改造实现DRDS的“分库分表”、“平滑扩容”以及“无差别运维”。一阶段完成后出具改造的评估报告,为二阶段实施提供参考。

三、一阶段总结

一阶段选取了“统一用户管理”系统作为试点,该应用原来采用了传统中小型应用常见的前后端一体化架构,原有的数据库为PostgreSQL。随着业务的不断发展,“统一用户管理”系统的传统基础架构正不断接受挑战,其中数据库单点瓶颈问题尤其突出,存在单库容量平瓶颈、扩展困难、二次开发难度高、性能问题难以优化等诸多问题。

1、改造前后系统部署架构对比如下:

a0766392b658aca3ed677a970a1107432c4b9c6c

图1——原“统一用户管理”系统部署架构

fd6a5691b5c2bf2159bfd090f4924536d30ee583

图2——“统一用户管理”接入DRDS后的系统部署架构

2、一阶段实施后的收益:

应用本身只需进行少量的接口适配工作即可接入DRDS,收益则是分布式数据库所带来一系列优秀特性:

1)分库分表

支持数据库分库分表,在创建分布式数据库后,可以按照业务特性设定拆分规则,实现数据水平拆分。

2)透明读写分离

通过使用只读实例实现读写分离,可低成本增加集群读负载能力,释放主库压力,且对业务代码透明,无需改造;同时具备一致性读能力。

3)数据存储平滑扩容

当出现数据存储容量和访问量瓶颈时,支持在线存储容量扩展,扩容无需应用改造,扩容进度支持可视化跟踪。

3、一阶段实施过程中的挑战:

“统一用户管理”作为首个接入试点的应用,在一阶段实施过程中先后遇到数据库语法不兼容如何解决、如何制定拆分方案、分布式事务如何解决等问题,并一一攻克。

1)从PostgreSql到DRDS

应用原有数据库选型为PostgreSQL,而DRDS目前仅可以无缝对接Mysql。因此,应用首先要完成数据库切换并解决数据库间Sql方言或特性差异的问题。

开发团队从代码逻辑入手,全面替换了不兼容的数据类型,并在功能测试中不断分析SQL执行效率并进行细致优化,为应用后续接入DRDS做好充分准备。

2)分库分表拆分规则

应用存在若干千万级的核心大表,在迁移到DRDS时应根据“确定业务主体——寻找关键字段——计算分库分表数”三步原则处理。

以工单操作属性表为例,该表所有操作围绕“工单操作”进行,因此选定applyopid(工单单号)为拆分键。未来预估此表1-2年的数据总量为六千万行,根据以下公式可得此表需按照分库且每个分库两个分表执行:

单库物理分表数 = CEILING(60,000,000 / ( 1 * 8 ) / 5,000,000) = 2

da36c2ea0cfea993ae6dca2e3219c937bc87af0d

图3——分库分表规则说明

3)分布式事务实践—全局事务服务(Global Transaction Service,简称 GTS)

在对应用的几张核心大表进行拆分后,原本存储在单库单表里面的数据分散到了多库多表里,因而应用在对相关数据进行写操作时会涉及到分布式事务的问题。

分布式事务管理的传统解决方案是基于XA协议的两段提交方式,需要进行针对性的开发,对已有业务逻辑有较大侵入,且性能较差。

经过综合评估后,决定引入阿里云的全局事务服务GTS。GTS具有接入简单、与DRDS无缝衔接、对业务逻辑无侵入的特性,有效地解决了由数据库拆分引发的一系列事务控制问题。

de7f7046108a0ff53b6f1f543718e452dbdf4323

图4——“统一用户管理”系统接入GTS部署示意图

四、建设历程

一阶段于今年2月上旬立项,春节后正式开始实施,在浙江移动和阿里云双方精诚合作下,前后仅用了1个多月的时间就将试点应用成功发布上线。期间重大工程里程碑如下:

1、2018年2月上旬,在春节前完成立项,春节后项目正式启动。

2、2018年3月底,系统成功将数据库迁移至MySQL。

3、2018年4月底,系统完成生产数据割接并正式接入DRDS。

五、延展思考

本次合作是中国移动集团内部首次与业界先进互联网公司的深度技术合作,在践行集团“可监可管可运维”理念的基础上,通过一阶段试点业务的改造实践,在组件能力、运维模式、运维工具、集成方案等方面磨合、积累、沉淀了宝贵的经验,也在项目协作、架构匹配上,初步验证了浙江移动与互联网公司先进技术、理念相结合的可行性,为后续二、三阶段在浙江移动的核心系统上开展更加深入的试点工作奠定了坚实基础。

关于三墩IT人:

“三墩IT人”微信公众号于2014年12月底建立,是浙江移动IT团队建立的面向全行业的IT技术和经验交流平台。

相关实践学习
跟我学:如何一键安装部署 PolarDB-X
《PolarDB-X 动手实践》系列第一期,体验如何一键安装部署 PolarDB-X。
相关文章
|
1天前
|
弹性计算 负载均衡 容灾
应用阿里云弹性计算:打造高可用性云服务器ECS架构
阿里云弹性计算助力构建高可用云服务器ECS架构,通过实例分布、负载均衡、弹性IP、数据备份及多可用区部署,确保业务连续稳定。自动容错和迁移功能进一步增强容灾能力,提供全方位高可用保障。
6 0
|
2天前
|
弹性计算 API Python
阿里云百炼应用之流程编排
阿里云通义百炼平台流程编排使用教程。
|
12天前
|
存储 监控 前端开发
【专栏】阿里云ARMS前端监控的引入方法,以提升应用质量和稳定性
【4月更文挑战第29天】本文介绍了阿里云ARMS前端监控的引入方法,以提升应用质量和稳定性。该工具通过实时收集和分析用户行为、性能数据,提供错误监测和实时告警。步骤包括注册阿里云账号,创建前端监控项目,获取并嵌入监控代码到页面中,部署并运行,最后查看监控数据。案例和经验分享强调了合理设置监控指标、与其他工具结合以及定期分析数据的重要性。注意保护用户隐私,正确管理监控代码,并解决可能出现的数据不准确和大量错误告警问题。
|
12天前
|
运维 Serverless 应用服务中间件
Serverless 应用引擎产品使用之在阿里云Serverless中函数计算FC nginx 部署上去之后放置静态页面如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
219 0
|
12天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使数据库和阿里云函数计算位于同一个内网中如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
984 0
Serverless 应用引擎产品使用之在阿里函数计算中,使数据库和阿里云函数计算位于同一个内网中如何解决
|
12天前
|
运维 监控 Serverless
Serverless 应用引擎产品使用之在使用阿里云函数计算部署网站时,网站打开不稳定如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
169 0
|
13天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云函数计算中通过调用函数如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
282 10
|
13天前
|
运维 文字识别 Serverless
Serverless 应用引擎产品使用之在阿里云函数计算中,需要处理的文件大于100MB如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
132 5
|
13天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里云函数计算中,容器运行过程中的最大内存使用量获取如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
34 2
|
13天前
|
弹性计算 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用阿里云API或SDK从函数计算调用ECS实例的服务如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
41 4

热门文章

最新文章