合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
随着业务规模的不断扩张和技术架构的演进,分布式系统已经成为支撑高并发、海量数据处理的关键基础设施。在分布式环境中,各个节点相对独立且可能并发地执行任务,这极大地提升了系统的整体性能和可用性。当涉及到对共享资源的访问和修改时,为了确保数据的一致性和正确性,我们需要一种能在多节点间协调并发操作的技术手段,也就是分布式锁。
传统的单机环境下,进程内可以通过本地锁轻松实现对临界区资源的互斥访问。但是,这一方法在分布式系统中不再适用,因为单机锁无法跨越网络边界,无法保证不同节点间的并发控制。分布式锁正是在这种背景下产生,它是一种能够实现在分布式系统中多个节点之间协同工作的锁机制,旨在保护共享资源不受并发冲突的影响,确保在复杂的分布式场景下数据操作的有序性和一致性。
我们以WMS系统中,订单出入库操作库存为例。
CREATE TABLE `tb_inventory`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`account_id` BIGINT NOT NULL DEFAULT 0 COMMENT '帐套ID',
`sku` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '商品sku编码',
`warehouse_code` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '库存编码',
`available_inventory` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '可用库存',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
`deleted` TINYINT UNSIGNED NULL DEFAULT 0 COMMENT '0-未删除 1/null-已删除',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY uk_warehouse_code (customer_no, warehouse_code, sku, deleted)
) ENGINE = InnoDB
AUTO_INCREMENT = 1
CHARACTER SET = utf8mb4 COMMENT = '库存表';
TOP