电商物流:配送管理系统实践
当今电商行业蓬勃发展,物流是其中不可或缺的一个环节,而配送管理系统(Delivery Management System, DMS) 用于实物商品从下单到配货到发货到签收以及退换货的全流程管理(相对于实物商品,虚拟商品如教培行业的课程就不再DMS处理范围内,一般两者可以通过更为抽象的履约平台进行统一调度和管理)。 注意DMS并不关心商品的实际配送本身,你可以在自营仓库发货,也可以在第三方仓库...
当今电商行业蓬勃发展,物流是其中不可或缺的一个环节,而配送管理系统(Delivery Management System, DMS) 用于实物商品从下单到配货到发货到签收以及退换货的全流程管理(相对于实物商品,虚拟商品如教培行业的课程就不再DMS处理范围内,一般两者可以通过更为抽象的履约平台进行统一调度和管理)。 注意DMS并不关心商品的实际配送本身,你可以在自营仓库发货,也可以在第三方仓库...
数据同步在业务开发中比较普遍,例如 订阅MySQL的binlog将数据同步至异构数据库。数据同步方案需要考虑一下几点: 数据实时性要求 数据量级 是否有数据转换逻辑 可分为两种模式 发布订阅模式:分为订阅数据库log还是订阅应用层发的消息 点对点模式:分为推和拉 以下讨论几种比较通用的方法: 日志订阅:订阅数据生产方库表日志,如mysql的binlog ...
本文讲解MySQL 8.0复制,来源主要参考官方文档MySQL8.0 Replication 概述 MySQL 8.0复制的场景: 可伸缩性:读写分离,分散压力,提高性能 数据安全:从库可在不污染主库数据的前提下做备份操作 分析处理:主库接收数据,从库分析数据不影响主库性能 远距离数据分布 关于复制的解决方案,详见 Replication Solutions MySQ...
在Java中,金额计算通常使用java.lang.Long或java.math.BigDecimal类型。 在金额计算简单时,可以将金额单位设置为分,然后用Long表示多少多少分, 这样的金额范围是[-92233_7203_6854_7758_08, 92233_7203_6854_7758_07]分,金额范围基本能满足大多数场景了。 但是涉及到复杂金额计算,尤其是除法时(例如:优惠分摊...
背景 随着业务发展,数据库实例磁盘逐渐升高,告警频繁,且后续可能会对DDL产生影响(尤其是借助ghost等工具执行的DDL)。 该实例有多个库,则需要迁移其中的一个或几个单库到其他实例,为什么不做分库分表?一是没必要,数据增长没有那么快;二是改动大,影响范围大。 故采用库实例迁移的方式来缓解磁盘压力。 依赖梳理 库本身的迁移好办,麻烦的是库下游的依赖迁移,比如DTS、大数据等依赖。所以...
当年在校招面试时,面试官出了一道SQL题:一次年级考试,求每个班级内的成绩前10名。 最近又遇到一个查询需求,假设一张表有(id,a,b,c)字段,需要一次批量查出: 查询 a = 1 and b = 2 and c = 3 条件下的max(id); 查询 a = 2 and b = 1 and c = 4 条件下的max(id); 查询 a = 4 and b = 3 an...
Git简介与使用 Intro Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git是一款分布式版本控制系统(VCS...
很多业务场景会遇到树形结构的数据,如公司的人员职级树、行政区划树等。 使用类似MySQL的数据库进行存储,需要将树形结构(二维)存储到行格式(一维)的db中。 本文介绍了树型结构数据存储的三种方式:Adjacency Table , Nested Set , Bridge Table (Closure Table)。 以下方法均基于场景: 设想一个职员团队树,节点中为职工工号id和职工名...
构建业务模型时,通常模型会设置扩展信息,存储上一般使用JSON格式存储到db中。JSON虽然有较好的扩展性,但并没有结构化存储的类型和非空等约束,且强依赖代码中写入/读取时进行序列化/反序列化操作, 当扩展信息结构简单且不作为查询条件时使用JSON可以满足需求,但有些场景要求根据扩展字段进行查询,虽然有类似JSON_CONTAINS关键字匹配JSON内部字段,但不是所有db及其版本都支持JS...
在学习编程初期,会接触到设计模式的概念:23种设计模式,单例模式,策略模式,… 。接触业务研发后,对设计模式的使用和实践有了更深的见解。 使用设计模式是目的为了更高效的支撑业务诉求,如何在保证代码质量的情况下变更/扩展现有功能,这里的代码质量可分为健壮性和可读性两大类,分别包含以下方面: 健壮性:并发控制、事务、单点变更、性能、可测试 可读性:业务语义、圈复杂度、认知复杂度、c...