当前位置: 首页 > 科技观察

苏宁易购合同数据中心系统如何大幅提升服务绩效

时间:2023-03-18 22:34:39 科技观察

【.com原稿】背景苏宁易购合同数据中心系统是苏宁合同管理系统中的一个子系统,主要用于苏宁价格、结算、商户平台、转账、等系统提供销售额、扣点、账期等数据,用于指导销售、账务结算、采购流程管理等。随着公司业务的快速发展,各系统的调用量和并发量有明显增加。现有的合约数据服务接口已经不能满足部分系统的性能需求。迫切需要对服务接口进行升级优化,提高系统的可用性和稳定性。性别。系统面临两个迫切需求:1.接口性能要从原来的1000TPS并发提升到10000+TPS以上,满足高性能。2、系统可横向扩展。随着业务的发展,可以动态扩展以满足扩展性。问题分析改造前苏宁合约子系统的查询逻辑如图所示:存在问题:1.大量连接查询数据库,导致数据库负载过高。每次查询数据库时,调用量较大时,经常会出现数据库连接不足、数据库负载过大等问题,给数据库造成很大的压力。2.串行查询,效率低接口调用时,通常一条消息包含几十条数据。由于串行查询,每条消息一条一条查询,处理效率低。3、大量的服务调用导致服务器压力过大。当现有的四台Wildfly服务器并发量较大时,每台机器的压力都比较大,需要更多的机器来分担压力。改进方案1.增加缓存,将热点数据提前放入缓存(1)系统最大的问题是IO比较密集,并发调用服务时需要大量查询数据库。我们想到的解决办法是,能不能提前计算出一部分数据,放到缓存中,系统调用的时候直接从缓存中取。(2)考虑到数据量比较大,生产环境有近10亿条数据,单个Redis无法容纳这么大的数据量,需要分布式存储。使用苏宁自研的Zedis分布式缓存存储数据。实施方案:(1)后台通过定时任务预先计算出定价的商品(热点数据),然后将结果数据写入zedis缓存集群。(2)当有新的热点数据变化时,先清除缓存数据,然后将数据插入数据库,更新产品的缓存状态(防止缓存数据与数据库数据不一致)。(3)后台定时任务查询缓存状态中未处理的数据重新计算结果,将最新的数据写入缓存。处理流程如图:2.串行转并行,多线程并发处理数据(1)调用扣分服务的消息通常是实时的,也有一些数据是批量调用的,以及一条消息中有多个调用在数据转换之前,整个调用是串行的。如图:调用前耗时为每条数据处理时间之和(2)经过多线程改造后,可以并行处理一条消息的多条数据多条数据在消息中处理一条数据花费最长的处理时间,与串行处理相比,处理时间有了明显的提升。3、横向扩展服务器,分散压力苏宁易购合同管理数据中心子系统是一个分布式系统,具有天然的可扩展性。随着调用量和并发量的增加,单台Wildfly服务器的压力越来越大。为满足性能需求,根据压测结果,对服务器进行了横向扩展,从之前的4台扩展到30台,分散系统压力。4、改造后的接口调用方案如图:接口压测改造后,对扣点服务接口进行压测,通过公司内部青蛙进行压测测试平台。Nginx24C4GWildfly84C4GZedis54C32GMySQL58C16G测试场景测试场景1模拟场景:无缓存数据库压力测试并发用户:8000测试结果界面如下:测试时间:2018-10-0122:40:23~2018-10-0122:45:23总交易执行:2355622次;失败:0次;成功率:100%Wildfly服务器利用率稳定在5%~10%平均交易响应时间:624.75msTPS:平均8264.4测试场景2模拟场景:半缓存半数据库压测并发数:8000测试结果界面为如下:测试时间:2018-10-0716:18:30~2018-10-0716:23:30交易总执行次数:3653576次;失败:0次;成功率:100%Wildfly服务器利用率稳定在5%~10%平均交易响应时间:403.72msTPS:平均12818.3测试场景3模拟场景:全缓存压测并发用户数:8000测试结果界面如下:测试时间:2018-09-1311:42:13~2018-09-1311:47:13总交易执行:10519551次;失败:0次;成功率:100%Wildfly服务器利用率稳定在5%~10%。交易平均响应时间:140.43msTPS:平均36907.3总结从压测结果可以看出,改造后的服务接口TPS有明显提升,从之前的1000TPS提升到10000+TPS以上满足苏宁周边系统对合约扣费服务接口的性能要求。回顾这次性能优化,我们主要从三个方面入手:1、使用Redis内存级存储,实现数据的快速读取。2.从程序内部优化,将串行化处理改为并行化异步处理。3、利用分布式扩展的特点,扩展服务器,分散压力。从这一点推演服务升级改造,得出性能优化不仅仅是单一的使用某种技术来提升系统性能,还需要全方位、综合性地解决性能问题。总结有三点:1.找到系统性能的瓶颈。2、针对性能瓶颈制定有针对性的技术方案,选择合适的技术方案。3、需要进行压力测试,看优化后系统性能是否真的得到了提升,提升了多少。结语2018年是集团高速发展的一年。随着智慧零售、规模化发展等战略的逐步实施,公司业务量和数据量不断增长,同时对系统性能和稳定性提出了更高的要求。为响应公司“创造极致”的精神,我们也对现有系统进行了迭代升级,不断优化升级。以创造精神为灵感,专注快速迭代、品质保证、稳定服务,我们将极客精神、极致事物、极致速度作为我们的工作态度。只有挑战不可能,才能超越一切可能,突破极限,进而登峰造极。作者简介:张继平,苏宁易购IT总部员工平台研发中心技术经理,负责公司内部ERP系统的规划和架构开发。资深码农,十年软件开发经验,在系统架构、性能优化、分布式系统设计等方面具有丰富的实战经验。【原创稿件,合作网站转载请注明原作者和出处为.com】