
package com.tmerclub.cloud.product.constant;

/**
 * 因为订单会扣减库存，扣减库存的时候会有行锁，这里将一个行锁转变为多个行锁（MAX_ZONE_NUM），
 * 进行分片，可以提高单商品下单的性能
 * @author tmerclub
 */
public interface SkuZoneConstant {

    /**
     * 最大分片数量
     */
    int MAX_ZONE_NUM = 10;

    /**
     * 每个分片库存（包括主分片）至少为100个库存，如果不能达到这些要求，则不会进行库存分片
     */
    int ZONE_MIN_STOCK = 100;

    /**
     * 当库存超过这么多的时候会开始分片
     * 因为会有一个主分片 + 其他分片（MAX_ZONE_NUM），
     * 如果商品库存量很小，说明了购买的人数也会很少，没必要进行分片，所有的库存都会留在主分片的库存
     * 目前系统配置分片数量至少为2个，因为如果只有1个分片的话对性能提升无帮助
     */
    int NEED_ZONE_NUM = ZONE_MIN_STOCK << 1;

    /**
     * 需要重新分片的最低库存 分片库存低于30%的时候就开始重新分片
     */
    int NEED_REZONE_NUM = ZONE_MIN_STOCK * 30 / 100;

    /**
     * 当sku库存每五秒小于10单时就取消分片
     */
    int UN_ZONE_NUM = 10;
}
