【求大神大牛帮忙】异步请求实现方案【求大神大牛帮忙】

haoduo777 2017-09-25 10:54:42
目前架构:我们的系统是一个转发平台,类似于淘宝的开放平台。客户端请求到我们平台,我们的平台再转发请求至真正的远程服务器,待远程服务器的响应返回后,我们再返回给客户端。

优化需求:平台调用远程接口实现异步

当前的方案:平台请求调用远程服务器的接口后,线程一直等待,直至远程服务器返回响应,再执行后续的业务处理并返回给客户端。

理想方案:平台请求远程服务器的接口后,该线程挂起,或放在一个待完成的线程池中。当接收到远程服务器返回的响应后,将该线程唤醒,获取请求的上下文,处理后续的业务后返回给客户端。

这是目前自己能想到的优化方案,但是方案中的技术实现不是很懂,不知道具体哪些架构或者技术能够实现。

我们是 java 开发的,烦请各位大神大牛提供一下实现的技术方案或者思路。先谢谢了。
...全文
350 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoduo777 2017-10-13
  • 打赏
  • 举报
回复
引用 12 楼 zc881124 的回复:
个人感觉 你的平台入口只是提供一个API接口的http 服务器,真正去处理是在你的服务组件服务器上 如果你的http服务器和组件服务都是内部开发的话,这是不是就是dubbo的应用场景。 至于http异步请求 框架 不了解 ,AsyncHttpClient应该能实现。
可以这样理解,我们平台就是一个转发点,第三方接口接入我们的平台,用户通过我们平台去调用第三方的接口。 我们平台在做了一系列的校验后将请求转发到目标接口。 只是在转发这一过程中,希望能做到同步方式转换成异步的方式,即:发送请求后,将该线程释放,释放的线程可以处理后续的用户请求。当目标接口有响应返回时,平台能获取到新的线程,获取这次请求的上下文信息,进行后续的数据处理,最后将响应返回给用户。 AsyncHttpClient支持这样的实现吗?
110成成 2017-10-11
  • 打赏
  • 举报
回复
个人感觉 你的平台入口只是提供一个API接口的http 服务器,真正去处理是在你的服务组件服务器上 如果你的http服务器和组件服务都是内部开发的话,这是不是就是dubbo的应用场景。 至于http异步请求 框架 不了解 ,AsyncHttpClient应该能实现。
haoduo777 2017-10-11
  • 打赏
  • 举报
回复
引用 10 楼 Fasure_Smile 的回复:
我们之前用过阿里的CSB服务,就是把我们自己的HSF服务或者rest接口在阿里的CSB上面配置一下,然后其他的第三方通过调用阿里的CSB间接的调用我们的服务或者接口
其实我们要做的就是类似于阿里的数据开放平台,功能上差不多。 但是现在想研究一下全异步调用这一块的技术实现。 目前还没有什么思路,所以来csdn 来求助求助。
Fasure_Smile 2017-10-10
  • 打赏
  • 举报
回复
我们之前用过阿里的CSB服务,就是把我们自己的HSF服务或者rest接口在阿里的CSB上面配置一下,然后其他的第三方通过调用阿里的CSB间接的调用我们的服务或者接口
Fasure_Smile 2017-10-10
  • 打赏
  • 举报
回复
你可以了解一下阿里的CSB
haoduo777 2017-10-09
  • 打赏
  • 举报
回复
引用 4 楼 defonds 的回复:
你干嘛要自己实现一个消息中间件呢 我的意思是你可以用消息中间件来对接两个系统
我可能没说明白我们平台的作用,我们平台对接了好多的应用系统,各个应用系统提供的接口都发布在我们平台,我们平台是统一的调用入口。其实就类似于淘宝的开发平台。 在网上了解到了 jetty continuation 以及 AsyncHttpClient,但是还不是很明白。 请问您了解这2块的技术吗?
zhouyusunquan 2017-09-28
  • 打赏
  • 举报
回复
帮看看此贴 http://bbs.csdn.net/topics/392268530
zhouyusunquan 2017-09-28
  • 打赏
  • 举报
回复
来。。。。。。。。。。。。。。。。。
okkk 2017-09-27
  • 打赏
  • 举报
回复
这个需要在socket上操作,才能实现你的要求,tomcat固化了socket的处理逻辑,执行不了异步请求,而不使用异步,是无法提高并发能力的。 或者考虑一下 nginx之类的代理工具。配置一下,或许代码都不用写了。
haoduo777 2017-09-27
  • 打赏
  • 举报
回复
引用 2 楼 defonds 的回复:
这不就是一个消息中间件的典型应用场景么?
谢谢回复,可以说的具体一点么?还是有点不明白。其实我们平台也可以看成是一个中间件,但是这中间件的性能需要进行优化。
Defonds 2017-09-27
  • 打赏
  • 举报
回复
你干嘛要自己实现一个消息中间件呢 我的意思是你可以用消息中间件来对接两个系统
Defonds 2017-09-26
  • 打赏
  • 举报
回复
这不就是一个消息中间件的典型应用场景么?
haoduo777 2017-09-26
  • 打赏
  • 举报
回复
没有人帮帮忙提供一下技术的思路吗吗
大家使用openssl的目的无非就是这三个方面了,1、密码学计算,什么RSA加密解密 ,RSA签名,AES,DES啥啥啥的, 2、生成证书,在写这个源码之前,不仅仅是 易语言 届,包括绝大多数需要自签名证书的,都是调用openssl的命令行,全局操作,想要调用API动态申请证书,签署证书的,源码在百度上基本找不到,要翻出去找谷歌,所以我认为至少在易语言范围内,此源码属于首发 3、SSL通讯,这类源码在论坛上不少了,2010年之前东灿大神就发过,他的源码也是我开始学习openssl第一部教程,不过可惜的是论坛上几乎所有openssl通讯源码都或多或少有点问题,基本上没法用于生产环境,所以这次改写了一下,也是翻了不少资料 本套源码特点: 1、几乎是一网打尽所有需要试用openssl的场合,个人认为很有收藏价值,以后基本不需要再去找跟openssl有关的东西了 2、本源码是面向生产环境的,几乎每个子程序,每种应用都考虑到了效率和稳定性,以及内存泄露等诸多问题,拿去之后基本上不需要再修改什么了,要做什么项目直接拿来用就是了 3、着重谈一下SSL通讯,其实在半年前已经重写好了,并且投入了生产环境,目前我3个HTTPS服务器都是用的这套源码,创新之处在于, ? ?? ? A:结合cdecl 壳,让openssl可以调用易语言子程序,进行上锁解锁操作,没有锁的openssl是根本无法想象的,加锁以后,多线程随便跑 ? ?? ? B:SSL_accept 和 SSL_connect 的异步调用,这个东西研究的人很少,网上的源码基本都是同步调用,同步调用的弊端是一旦连接丢失了,就会一直卡在那,而异步调用不会存在这个问题 ? ?? ? C:完整的证书验证机制,回调验证,可做双向验证通讯 4、关于证书操作部分,随着计算机计算能力的发展,以及苹果宣布逐渐淘汰不是用https的应用程序,安全证书的需猛增,去颁发机构买一个证书固然省事,但是随便一个证书都是几千块钱一年,并且还不能向下签发给用户,目前像阿里,TX那样的大牛也都开始在用自签名证书,然后向他们的用户发放个人证书,这是一个趋势,作为易语言编程者来说,给自己的用户的软件签发一个个人证书,倒也是一个不错的防破J防抓包方法,目前市面上基本上所有的抓包软件都是只能抓单向验证的HTTP明文,如果你在软件里强行验证服务器证书,并且服务器强行验证客户证书,那抓包软件再牛也没辙,破J起来难度就更大了,本源码证书操作都是用API操作,支持多线程,可以做简易的证书签发服务器 5、密码学计算部分相比我以前发的那个源码新增了一些东西,修改了一些不合理的机制,使用起来更舒服了,具体可以自己看源码

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧