<small id='8DauKC'></small> <noframes id='DZ6OsHS'>

  • <tfoot id='UGuBnjYE'></tfoot>

      <legend id='MxGwcFu'><style id='OfkCBWG'><dir id='u5n3ypPf9L'><q id='7IZ3'></q></dir></style></legend>
      <i id='bsBtV5IP8'><tr id='U1mj'><dt id='ED0w'><q id='YupQf'><span id='DrGQU8Wzv9'><b id='p0Mtks8Fil'><form id='fm6wOiG9'><ins id='ru7g5'></ins><ul id='rDpQI'></ul><sub id='j18oDKTkQN'></sub></form><legend id='uJ5Bsm'></legend><bdo id='4zq7yGe9'><pre id='HR7BG3ub'><center id='6nJvlo3Nz'></center></pre></bdo></b><th id='xfB4DC'></th></span></q></dt></tr></i><div id='u1zs'><tfoot id='MCOudS7'></tfoot><dl id='o1JUeS7'><fieldset id='K7JIlTWg'></fieldset></dl></div>

          <bdo id='aXKP2e1R'></bdo><ul id='xtSj'></ul>

          1. <li id='3aG56FIV2'></li>
            登陆

            壹号平台-简略rpc重试战略

            admin 2019-07-13 286人围观 ,发现0个评论

            微服务情况下,服务之间调用依赖于rpc,rpc调用便有几率导致问题,在不依赖于结构层级重试的条件下,前置体系怎么判别是否进行重试便成了比较扎手的问题,下面介绍一个简略的规划思路。

            首要包装一个rpc的成果处理类Repsonse , 包括调用状况(现在我是加了一个枚举,默认值为需重试needRetry)、ResponseCode、ResponseContent作为调用方和服务方交互的前言。

            如下:

              
            /**
            * @program: luckyin
            * @description: rpc response
            * @author: taosha
            * @create: 2018-07-18 16:37
            **/

            public class 壹号平台-简略rpc重试战略Res壹号平台-简略rpc重试战略ponse implements Serializable {
            private static final long serialVersionUID = -1L;
            protected ResponseStatus status;
            protected String content;
            protected String responseCode;
            //当处理失利时分,放入失利原因
            protected String failCause;

            ...省掉
            }

            这个时分,你就会问,前置体系怎么去剖析回来成果呢?

            server方处理逻辑为,在正确接收到恳求之后,进行事务处理:

            a. 假如事务处理失利:如参数不壹号平台-简略rpc重试战略完九息整、黑名单等等一类重试也无法成功、或许server方不期望他成功的反常,那么回来status为Fail,其他回来内容这儿不做多的解说;

            b.假如事务处理成功或许幂等射中(也为事务成功),那么status回来为success;

            c.其他辨认不了的反常,如网络颤动,server内部或许调用了其他的rpc服务或许db衔接壹号平台-简略rpc重试战略超时等反常,status回来为needRetry那么需求前置体系进行重试来确保事务成功。

            至于怎么包装回来值,这儿就不再多说,假如想代码相对高雅,能够 根据a壹号平台-简略rpc重试战略op或许自己创立一个东西类来处理。

            这样,重试不依赖于结构的主动重试,client能够自己操控重试与否,是一个比较好的处理方法。当然,重试的条件,事务体系要做好接口等幂等功能,这个后边的文章也会独自说一下。

            try again?

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP