服务间调用有三种状态:成功;失败;超时。前两个状态明确,但超时状态完全不知道是什么状态。
可能是请求没有到达,也可能是请求到达了,但返回结果没有到达。我们不知道下游系统是否收到了请求,而收到了请求是否处理了。
例如:
解决方案:
snowflake的结构如下(每部分用-分开):
0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000
一共加起来刚好64位,为一个Long型。(转换成字符串后长度最多19)
snowflake生成的ID整体上按照时间自增排序,并且整个分布式系统内不会产生ID碰撞(由datacenter和workerId作区分),并且效率较高。经测试snowflake每秒能够产生26万个ID。
本机测试,每秒产生约4W个id
以交易为例,当收到交易请求时,先去查,有没有创建过?如果查到了就不做处理
一般可以采用乐观锁,基本CAS方式。
update 订单表 set status="交易成功" where id=#orderId# and status="等待买家确认收货"
或者
以论坛发贴为例,在表单中隐藏一个token,防止用户多次点击表单提交按钮。防重复。
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )