"58到家的订单中心架构经历了从分散到集中的一系列演进,以应对业务的快速发展和多样化需求。在这个过程中,主要关注如何有效地处理大量的并发订单,满足不同业务场景下的个性化订单属性查询需求,以及如何优化数据库结构以适应业务变化。"
在初期,订单中心面临的问题主要是数据量大、并发量大,以及不同业务订单的异构性。为了快速实现订单查询功能,最初的解决方案是创建多个组合索引,但这种方法在面对不断增加的查询需求时显得力不从心,尤其是在处理三属性以上的查询时。
随着业务的发展,订单表不断扩展,增加了新的属性字段以适应新业务类别,如家政和速运。这种情况下,出现了垂直拆分的方案,即每个业务拥有自己的订单服务和搜索服务,以满足特定的数据查询需求。然而,这样的架构导致了跨业务查询的困难,以及技术栈的不一致,给系统的维护和扩展带来了挑战。
因此,58到家选择了将多业务订单中心整合。这一决策基于两个主要考虑:一是技术问题的统一解决,包括采用分布式订单ID生成、优化读性能和高可用性、构建统一的数据仓库;二是业务问题的统一解决,如订单列表的拉取、订单状态和支付状态的查询,以及对账和风控等关键业务流程。
为了满足业务侧的个性化订单属性需求,架构演进引入了可变属性存储的概念。这意味着订单中的动态或可变属性可以被独立存储,以便于灵活添加和查询。这种设计允许系统在保持核心订单数据稳定的同时,适应业务的快速变化和定制化需求,而不必频繁修改核心订单表的结构。
在实际操作中,可能采取的方式包括使用NoSQL数据库(如MongoDB)来存储这些可变属性,或者建立一个单独的可变属性服务,该服务能够处理动态属性的增删改查,同时与订单主数据进行同步。这种方式提升了系统的灵活性,减少了对核心数据库的负担,也便于进行数据分析和报表生成。
此外,这种架构演进还涉及到了数据仓库的设计,确保了大规模数据的高效处理和分析。通过构建数据仓库,可以实现对历史订单数据的深度挖掘,支持业务决策和运营优化。
58到家的订单中心架构从分散走向集中,旨在通过统一的技术和业务解决方案,提高系统的可扩展性和灵活性,以适应快速变化的互联网业务环境。这个过程中的核心挑战是如何在满足个性化需求的同时,保持系统的稳定性和高性能,而可变属性存储和数据仓库设计正是应对这些挑战的关键策略。