您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[ArchSummit深圳2024|全球架构师峰会]:张俊杰-成本优先的技术架构 - 发现报告

张俊杰-成本优先的技术架构

AI智能总结
查看更多
张俊杰-成本优先的技术架构

Shopee海量商品系统的治理挑战和应对之策/张俊杰 关于我 张俊杰 ●目前负责商品系统后端研发的工作●2019年加入Shopee ●减肥并不难,关键在于找到正确的方法并实践。●减肥是一个持续的过程,我们可以借鉴他人的经验,避免走弯路,并增强信心。 目录 1海量商品系统的背景和挑战2海量商品系统的应对-缓存篇3海量商品系统的应对-存储篇4成果和总结 海量商品系统的背景和挑战 海量商品治理-背景 Shopee是东南亚领航电商平台,业务范围覆盖新加坡、马来西亚、菲律宾、泰国、越南、巴西等十余个市场,为全球用户提供无缝、有趣且可靠的购物体验。 ●买卖双方通过电商平台促成商品的交易。 海量商品治理-现状 东南亚市场份额遥遥领先 百亿级商品上千个商品字段 服务多市场十余个市场,卖家体量大,潜在客户人群10+亿不同的文化,具有更多元的商品 玩法多样化本土和跨境模式使得商品能够同时在多个市场销售。新兴的全托管等多样化玩法不断吸引商家参与 海量商品治理-现状 百万级并发请求 商品系统覆盖了电商平台绝大部分核心路径 服务10+个市场 ●商品浏览●卖家发货●商品曝光●用户下单 商品系统的流量来源复杂 ●卖家中心/开放平台/买家●内部系统流量(业务、算法、数据分析等) 海量商品治理-挑战 数据库服务器成本非常高昂 数据库存储量大●百亿级商品存储,数据规模庞大 数据库从库数量多●即使有缓存层存在,流量仍然会对数 ●随着业务发展,每个商品数据的体积也不断膨胀 据库施加相当大的压力。 流量持续增长●为了承载持续增加的流量,我们不断 数据量持续增长●每年都需要增加新的数据库来存储更 增加数据库的从库数量。 多的数据 应对峰值流量●为了避免数据库过载,我们会预留足 数据存储扩散比例大●除了从库,还需要考虑离线数据、索 引数据等资源的需求 够的缓冲空间。 海量商品系统的应对-缓存篇 大家项目里面有用缓存? 普遍接受的事实 引入缓存服务可以提升系统整体性能 缓存服务会降低数据库成本吗? 缓存的正确使用对数据库成本影响很大 成本:需要更多的数据库来处理由于缓存不命中引起的数据库流量(用最坏情况做成本预算) 风险:如果缓存数据大规模受到污染,可能引发系统故障 从成本和性能的角度考虑,我们需要用缓存服务来支持大部分的读流量。 在这个架构中,缓存命中率对整体成本起到了决定性的作用。 选择最优TTL策略,提升命中率 访真验证(控制变量) 筛选TTL策略 治理进度 关于缓存,除了TTL以外,还可以通过什么优化来减少数据库压力呢? 缓存更多的数据 在不扩容的情况下,减少数据体积可以缓存更多的数据 哪些方式可以减少数据体积 数据压缩 减少冗余和重复字段 成本低,收益确定性高 成本中等,收益具有不确定性 通过简单编码即可实现减少数据体积的目标,无需涉及复杂的技术设计。 需要找到成本和收益的平衡点●寻找业务匹配的压缩算法并进行性能验证 ●考虑算法升级后对系统的兼容性●针对不同的缓存数据类型(例如字符串、数字),进行独立验证 通过减小数据体积,可以增加缓存的容量,从而提高缓存命中率。 治理进度 随着缓存服务承载的流量不断增加,风险也会相应增加,例如热点数据的问题。 热点数据问题会影响缓存成本吗? 多级缓存减少缓存成本 多级缓存:利用服务的空闲内存,对热点数据做本地缓存 ●正常场景:每个商品有不同的流量, 但整体上看不会超过节点承载的水位 提升性能和吞吐:本 降低系统性风险:避免热点数据引起缓存节点宕机(CPU过载),用户将无法访问该节点的其他数据 地缓存的数据访问速度远超于远端缓存,数据传输速度是千级的差异。以及减少编解码的性能消耗。 为了解决热点数据导致的缓存节点不可用问题,我们可以考虑提前对缓存集群进行扩容。因为每个节点都可能发生相关的问题,会增加数倍的资源成本 海量商品系统的应对-存储篇 存储成本居高不下 降低存储成本 把冷数据存储在更便宜的资源上 如何落地? 数据归档-冷热数据的分类定义 不会被在线系统访问的数据 热数据 用户主观删除的数据(软删) 低频访问的数据 用户维度活跃的数据 *业务上要求软删除*法务问题 ●与时间非强相关的数据通过流量比例区分,例如最近n月访问占比不到x%的数据。●具有时间属性,距今时间久远,例如n年前的商品快照。 ●与时间没有强相关的数据,通过流量比例区分,例如最近n月访问占比超过x%的数据。●具有时间属性,例如最近n年的商品快照。 无用的日志数据 日志数据具有时间属性,结合业务上的诉求定义规则,例如n年前的商品变更记录。 没有价值且耗费大量资源的业务数据对于一些长期不活跃的用户,例如几年都没有登 录的卖家的商品数据。 数据归档-可能出现的问题 数据实体往往是多张表以及多个数据库,涉及不同的系统与团队 不同系统之间的兼容性处理 数据归档-兼容性(低频访问的冷数据) 数据归档-兼容性(不被访问的冷数据) 数据归档-方法 成果与总结 成果与总结 减少千万级人民币服务器成本 减少支撑读流量的服务器成本 减少海量数据存储的服务器成本 通过仿真验证选择最优TTL,数据库成本减少15+% 把“低频访问数据”分离到低规格服务器,把“不被访问的数据”分离到数据仓库,数据库成本减少50+% 通过减少缓存对象体积,增加最大缓存数量,数据库成本减少10+% 通过多级缓存避免了缓存扩容引起的额外成本开销 1.资源限制是客观存在的。资源无法无限的增长,我们需要接受它,并充分利用已有的资源。 2.规则是可变的。随着业务的发展,我们可以重新审视这些规则,并从成本优先的角度灵活调整它们。 Q&A