幂等性:进行100,1000…操作得到的结果都一样。
这里指的指纹码不一定是系统内部生成的,可以是第三方给予的特定密码
类似乐观锁,SELECT COUNT(1) FROM T_ORDER WHERE ID = 唯一ID + 指纹码
,因为唯一ID+指纹码的组合是唯一的,所以查询出来的COUNT如果是0就证明相同消息DB没有记录,而查询出来的数大于0,则证明该消息已被记录到DB,不能插入重复消息。
解决方案:可以根据这个全局唯一的ID进行分库分表,然后通过特定的算法进行路由,分库分表可以分压分流减轻负担。
可以利用Radis的原子性:
SET key value //设置key-value,原子性
EXISTS key //判断是否存在key
INCR key //自增长
可以通过以上语句结合业务逻辑实现幂等性保障
第一,第二个问题请留言讨论。