标题 | CRM基于分布式数据存储事务处理方案 |
范文 | 吴宇星 【摘要】 借鉴优秀互联网经验,大型企业CRM系统引入分布式数据存储架构,采用分布式数据架构,将传统的单节点数据存储分布存放到多个数据节点,上层的应用如何保障事务一致性,对应用的建设提出很大的挑战。本文主要就CRM采用分布式数据存储,列举了分布式事务一致性的技术解决方案,并提出CRM的关键场景的分布式存储情况下的事务处理方案。 【关键词】 分布式事务 事务一致性 幂等性 一、引言 CRM是企业的核心生产运营系统,在大型企业中数据量巨大,为提升系统的性能引入分布式数据存储架构,采用分布式数据架构,将传统的单节点数据存储分布存放到多个数据节点,上层的应用如何保障事务一致性,对应用的建设提出很大的挑战。 二、关键业务场景实现方案 目前对于一个分布式系统的事务处理有三种方式:分布式事务两阶段提交、基于Best Efforts 1PC模式的事务以及事务补偿机制。 综合比较分布式事务一致性技术特性,集中系统采用事务补偿机制进行分布式事务处理。 2.1事务一致性场景 从事务完成后,跨库数据同步达到数据最终一致时间,需要考虑时效要求类型如下: 立即生效 快速生效 允许时延:秒级(正常要1秒内,最长1分钟?) 较长时间时延 允许时延:分时级别(分钟、小时及以上) 时间要求低 允许时延,小时级别,如:数据同步给ODS 典型业务场景要求数据最终一致的时效如下: 2.2关键业务场景实现方案 事务实现方案:(表2) 2.2.1订单提交 调整数据保存方案,将一次订单提交涉及的订单数据、客户资料数据保存到同一数据节点,将跨数据节点事务调整为单数据节点事务,规避分布式事务。 场景说明: 客户订单提交,作为一个整体提交 按现有数据存储模式,订单提交需保存的数据涉及订单中心、客户资料中心,存在跨数据节点事务 按现有模式处理,订单提交需要作为一个整体,涉及的数据,最少考虑也涉及订单表、档案表的数据更新或状态变化 提交数据的下级信息较丰富,可能做为后续的查询、展示关键信息。如:订单下级的订单项等数据,可能做为后续展示的部分数据。 方案说明: 在订单库建立订单过程表,将提交的数据都保存在订单库,并且以订单ID分库,规避为单库内事务。如: 受理直接保存订单及档案库,需要保持的数据及分片: 订单,保存在订单数据中心订单表,根据订单ID散列的切片; 客户,保存在客户数据中心客户表,根据客户ID散列的切片; 产品实例,保存在客户数据中心产品实例表,根据客户ID散列的切片 一次订单提交,需要保持不同的数据库节点。 在订单库中建立过程表,将提交的过程数据存放到订单中心,并以订单ID作为分片标识: 订单,保存在订单数据中心订单表,根据订单ID散列的切片; 客户,保存在订单数据中心过程客户表,根据订单ID散列的切片; 产品实例,保存在订单数据中心过程产品实例表,根据订单ID散列的切片 达到一次订单提交,数据保存在同一分片中,将多数据库事务,规避为单数据库事务。 2.2.2订单竣工、归档 事务拆解,将事务分解为具有幂等性子执行服务,通过应用进行异常补偿,保证最终一致。 场景说明: 按现有的数据分片模式,订单数据、客户资料数据存储的分片不同 订单竣工,作为一个整体业务,需要保证该场景的订单状态、流程状态、客户资料数据一起更改 方案说明: 将订单竣工服务,分解为:订单节点服务、客户节点服务、产品档案节点服务,进行按顺序处理,最终达到整个订单竣工的完成。 对订单表增加一些事务ID、事务状态等控制字段,进行处理过程标记。 有单独的队列,对出现异常的订单进行重复执行,达到最后数据一致性。 2.2.3数据同步 较长时间时延,允许12小时及以上,并且不具有事务性数据,可以采用时间戳方式进行数据同步。 场景说明 如:数据同步给ODS,可以采用时间戳方式。每次数据更新,同时更新时间戳,定期通过轮询等方式将数据抽取。 三、结束语 分布式事务是一个大话题,本文就CRM的关键场景的分布式存储情况下的事务处理方案进行初步设计,对解决分布式事务一致性提供了参考方案,后续需要不断的进行细化。 参 考 文 献 [1]: Laurence.关于分布式事务、两阶段提交、一阶段提交、Best Efforts 1PC模式和事务补偿机制的研究[EB/OL].http://blog.csdn.net/bluishglc/article/details/7612811 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。