一背景订单系统存在于各行各业,如电商订单、银行流水、运营商话费账单等,是一个非常广泛、通用的系统。对于这类系统,在过去十几年发展中已经形成了经典的做法。但是随着互联网的发展,以及各企业对数据的重视,需要存储和持久化的订单量越来越大,数据的重视程度与数据规模的膨胀带来了新的挑战。首先,订单量对于数据的存储、持久化、访问带来了挑战,这不仅增加了开发面对的困难,也为系统的运维带来了挑战。其次,随着大数据技术的发展以及运营水平的不断提高,订单数据的后续数据分析工作,如流批处理、ETL,也越来越重要,这也对数据的存储系统提出了更高的要求。本文提出了一种基于MySQL+Tablestore的大规模订单系统设计方案。这种方案基于分层存储的思想,使用Tablestore辅助MySQL共同完成订单系统支持。在系统中,利用MySQL的事务能力来处理对事务强需求的写操作与部分读操作;利用Tablestore的检索能力、大数据存储能力等弥补MySQL在功能上的短板。详细可见文章:云上应用系统数据存储架构演进。本文作为MySQL+Tablestore分层存储架构的大规模订单系统的架构篇。首先详细阐述,在大规模订单系统中,存在哪些需求,存在哪些痛点。进而比较传统的架构,其现状如何,各存在什么样的劣势,无法满足哪些需求。然后讲述MySQL+Tablestore架构,阐述这种架构是如何满足大规模订单系统的需求的。二需求场景订单系统,面向C端,除了在系统性能要求高外,对于数据的存储、后续数据的计算、数据实时处理、数据批处理都有一定的要求。而对于C端客户、产品运营、系统运维等不同的角色,他们对系统的需求也有所不同。1C端需求对于C端客户以及面向C端的开发而言,系统首先需要支持高并发、高稳定性。其次,系统需要能够支持基于用户id的搜索以及搜索用户id下包含特定关键词的记录。具体的需求有:基于用户id查找用户近一月的订单。基于订单号查询订单详情。搜索用户购买过的包含某关键字的商品。这对于系统的索引能力以及搜索能力有较高的要求。运营需求运营同学需要能够在不影响线上的情况下使用SQL对实时数据进行分析,能够根据非主键字段进行检索;他们还需要系统对流批计算的支持,需要流式数据处理来进行实时数据统计,需要批处理来进行历史数据统计。运营同学常见的需求场景有:统计在某旗舰店消费过的用户有哪些。统计消费过某一件产品的客户有哪些并且他们还购买了什么产品,进而向客户推荐商品。实时统计双十一开始后的实时成交额,用于宣传时的实时数据展示。统计某店铺过去10年的成交额。依赖订单数据对客户做实时更新的画像分析,以支持商品的推荐。运维需求运维同学更
转载请注明:http://www.aierlanlan.com/rzgz/293.html