电商系统相关架构问题

架构按业务拆分:网站系统(登陆、首页、频道、商详、店铺),交易系统(购物车、订单、结算、支付),基础服务(用户、库存、商品、促销、价格、类目、客服)。

用户下单产生业务订单,选择支付方式生成支付单,是两回事。支付单对应支付系统,支付完就 OK 了。关于库存、物流都是订单系统的事。

秒杀系统如何设计?页面静态化,防雪崩。怎样防止库存超卖情况?排队 OR 库存存放 Redis,redis 挂了如何恢复?

商品有原价、活动价、场景价。批价服务如何设计?

购物车设计,无登陆购物车、有登录购物车,失效时间。

Session 框架,单点登录。

SOA 服务治理、权重、容灾、协议。简单用 Zookeeper。RPC 解决方案:阿里 Dubbo、京东 JSF。协议:JSON、Hessian、protobuf、thrift。服务 API 升级如何兼容老的调用方?

配置中心如何设计?如何实现不重启更新配置中心服务上的配置?长连接还是心跳?常见的:zookeeper,Diamond,Disconf。

分布式系统如何保持事务一致?比如下单和减库存如何保持一致?

一个订单(大单)包含:多个子单(合单支付时需系统拆单)、用户信息、商品信息、卖家信息、支付信息、物流信息。

用户、卖家、订单表怎么设计?如何水平拆分、垂直拆分。

订单号、商品编号生成规则,一般订单号包含卖家信息、下单时间、序列号。Base62、Base58 压缩。

一般这种复杂的表都会设计属性字段(二进制)用来打标,比如订单来源、卖家类型、是否支持货到付款等。