西西河

主题:【原创】身为码农,为12306说两句公道话 -- 代码狗

共:💬137 🌺892 🌵3
全看分页树展 · 主题 跟帖
家园 16 种商品的方案明显优于 136 种商品的方案

主要针对楼主的这段话:

如果出一张01号站到17号站的票,就把SKU01/SKU02....SKU16这16个SKU的库存都减一。

这种做法是可以运行的。我原来参与设计的一个ERP系统就是这样的做的。

16个商品方案的优点是商品数会比较少,缺点在于查询性能较低,要查询16次才能知道【北京西到深圳北】还有没有余票。而136个商品的设计,穷举了所有出发和到达站点的组合,出票前只需要查询1次库存就知道还有没有余票。

大部分面向公众的网站,其业务特点都是读多写少。电商系统的库存查询次数更是远远多于库存修改次数的。在秒杀系统中,可能会出现99%的请求查库存1%请求改库存的情况。 像12306春运抢票这种场景,在秒杀工具(抢票软件)的推波助澜下,查询1万次库存才成功出一张票也不是没有可能。

查询性能在这里不是问题,因为查询本来就不应该直接去访问余票数据库,而是应该为余票数据库建多个定时更新的只读副本,把所有的查询流量分散到这些副本上,余票数据库只服务最终下单的请求。这样做的缺点是查询结果和实际余票情况在一定时间内会存在不一致,可能查得到票却买不着。但这在很多人同时下单买票的情况下本来就无可避免。

从服务最终下单操作的请求来看,16 种商品的方案明显优于楼主提出的 136 种商品的方案 —— 这点楼主是否同意?

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河