zoukankan      html  css  js  c++  java
  • TOP全异步模式

    Top全异步方式调用技术方案

     

    背景:目前top通过servlet3.0技术结合异步管道化框架做到半异步调用,半异步调用采用异步线程同步调用后端的方式来做api call

    TOP全异步模式(转贴 <wbr>@飞不起的奥特曼 <wbr>的部分文档)

     

     

    半异步的好处

    在异步线程使用的是权重线程池,在异步线程的资源分配上做到可控,通过这个我们可以做到一个ISP发生问题,不会影响其他的ISP的调用,做到服务隔离的目的。

    半异步的劣势

           采用半异步的方式,虽然可以做到服务隔离,但是异步线程还是同步调用后端,也就是说在一次后端的API call的过程中还是消耗了我们的一个线程。在后端很快响应的情况下,这个是没关系的,但是如果某个ISP的服务如果真的一次call的时间就需要好几秒才可以返回(支付宝的API有这个要求),那么我们的异步线程也会被消耗好几秒,但这种消耗是完全没有必要的。

     

    全异步的模式

           全异步的模式,基于的是后端的call可以异步的方式,目前我们调用后端ISP主要是http透传和HSF,这两种方式正好都可以异步。那么,异步call的方法下,我们的调用变为

    TOP全异步模式(转贴 <wbr>@飞不起的奥特曼 <wbr>的部分文档)

    详细方案

           基于我们的异步框架的几种pipe异步场景,原来使用的是 Ansy模式,将execute pip的管道属性配置成为Ansy,这样这个管道的执行就会交由权重线程池另起线程执行。

        新的全异步方式,Execute pipe将被配置为condition模式,在dopipe中调用HSF或者HTTP异步客户端,发起异步请求,同时设置回调函数,然后结束,这时pipe会被挂起。当调用成功拿到结果后,HSF或者HTTP客户端会回调我们设置的回调函数,在回调函数中,我们调用event.complete()结束挂起的pipe,这样权重线程池会再调用接下来的pipe,直到请求结束。

  • 相关阅读:
    Hibernate Validator
    RocketMQ之八:重试队列,死信队列,消息轨迹
    使用hibernate validator出现
    Hibernate Validator--创建自己的约束规则
    Java应用中使用ShutdownHook友好地清理现场、退出JVM的2种方法
    笔者带你剖析轻量级Sharding中间件——Kratos1.x
    [caffe]深度学习之图像分类模型VGG解读
    类的载入机制
    机器人api(图灵机器人)
    回文串问题总结
  • 原文地址:https://www.cnblogs.com/jpfss/p/9428906.html
Copyright © 2011-2022 走看看