zoukankan      html  css  js  c++  java
  • 分布式的几件小事(八)分布式服务接口请求的顺序性如何保证

    1.调用顺序

    其实分布式系统接口的调用顺序,也是个问题,一般来说是不用保证顺序的。但是有的时候可能确实是需要严格的顺序保证。给大家举个例子,你服务A调用服务B,先插入再删除。好,结果俩请求过去了,落在不同机器上,可能插入请求因为某些原因执行慢了一些,导致删除请求先执行了,此时因为没数据所以啥效果也没有;结果这个时候插入请求过来了,好,数据插入进去了,那就尴尬了。

    本来应该是先插入 -> 再删除,这条数据应该没了,结果现在先删除 -> 再插入,数据还存在,最后你死都想不明白是怎么回事。

    2.怎么保证

    ①首先,一般来说,从业务逻辑上最好设计系统不需要这种顺序的保证,因为一旦引入顺序性保障,会导致系统复杂度的上升,效率会降低,对于热点数据会压力过大等问题。

    ②操作串行化。
    首先使用一致性hash负载均衡策略,将同一个id的请求都分发到同一个机器上面去处理,比如订单可以根据订单id。如果处理的机器上面是多线程处理的,可以引入内存队列去处理,将相同id的请求通过hash到同一个队列当中,一个队列只对应一个处理线程。

    ③最好能将多个操作合并成一个操作。

  • 相关阅读:
    data:image/png;base64
    禅道项目管理软件
    ASP.NET MVC验证
    Visual Studio 2013/2015/2017快捷键(转)
    css默认值汇总
    转载:火狐的默认样式表
    浅析CSS——元素重叠及position定位的z-index顺序
    浏览器默认样式(User Agent Stylesheet)
    MVC ajaxSubmit上传图片
    jquery.validate运用和扩展
  • 原文地址:https://www.cnblogs.com/jack1995/p/10922053.html
Copyright © 2011-2022 走看看