MQ解决高并发问题

wangbintao 2016-05-21 03:08:30
加精
最近了解到用mq解决高并发问题
自己也用过activemq,并不精通,想来想去有个问题
假如大量访问冲进来,servlet做client把请求发给activemq,发给服务处理端,解决高并发问题
但是服务处理完,响应怎么办呢
难道作为client的servlet ,也订阅一个响应队列么,等服务在发回来
觉得这样的话,高并发问题是解决了,但是会不会很慢
菜鸟求助
什么分都是小事
...全文
17665 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
curiousby 2018-06-01
  • 打赏
  • 举报
回复
你说的应该是一个网关问题: 处理方案: 1.你的请求过来,获取req,resp ,封装到一个session ,一个雪花算法,求得sessionid 唯一 2.通过retelimit 进行限流 3.发送到 recievequeue mq 4.处理端接收这个 recievequeue ,处理, 5.处理结果发送给 callbackqueue 6.接受callbackqueue,写道 本地缓存,可以使用 linkedlist 进行便利,或者concurrenthashmap 7.便利结果返回 处理细节,recieviequeue 没有消费就超时得消息 callback 获取到返回值,还没有来的及返回得消息,必须处理掉 使用futuretask callback 处理超时 问题
青年卫大师 2017-08-31
  • 打赏
  • 举报
回复
是mq的性能比数据库好 缓解数据库的压力
maliyan_123 2017-05-02
  • 打赏
  • 举报
回复
为什么队列到999就连接不上了
rabbit_three 2016-08-22
  • 打赏
  • 举报
回复
1.httpclient可以实现不同服务器端通信 2.用mq虽然是异步的,但是不一定慢 3.异步请求,必然有不能及时响应的问题,因此最好是把那种高并发的,并且不需要及时响应或者根本不需要响应的东西放在队列中
Nnick_s 2016-05-24
  • 打赏
  • 举报
回复
引用
servlet做client把请求发给activemq
这时候你servlet在干嘛,请求发出去了,在异步等回复啊!你servlet没事干了?如果是网页,你servlet需要给相应啊。不给,网页不就断了。 感觉跟高并发没啥关系。网页连接在是在处理着。可能有些后台操作用异步方式比较好?
晓风吹雾 2016-05-24
  • 打赏
  • 举报
回复
异步模式 1 .request -》 add to queue -> response job id (and callback address) 2. client get callback address and listening wait for callback 3. serve get job from queue and do logic 4. notify the result to callback address.
lxraiyl 2016-05-24
  • 打赏
  • 举报
回复
引用 6 楼 shijing266 的回复:
[quote=引用 2 楼 uyerp 的回复:] 用mq来将耗时比较长或者耗费资源的请求排队,异步处理,减轻服务器压力增加稳定性。 如果是高并发的实时请求,我个人觉得不适用这个方案。如果是为了高并发,我觉得应该朝解决高并发的方向考虑。集群、分布式、动静分离、数据库读写分离之类的。 web的话,只能客户端页面轮训处理结果。 因为,据我个人了解啊,现在web没有成熟的向客户端推送处理结果的技术。或者是我没弄好,如果有知道的,还望提点下。
认同! [/quote] websocket可以呀
tianfang 2016-05-23
  • 打赏
  • 举报
回复
把客户行为变为异步,就是提交后,只通知收到请求,需要客户再提交查询请求,查看结果
  • 打赏
  • 举报
回复
引用 1 楼 wangbintao 的回复:
求助,勿沉...或者,是我发错区了
现在都很忙的, 几乎都忙不赢了
  • 打赏
  • 举报
回复
引用 2 楼 uyerp 的回复:
用mq来将耗时比较长或者耗费资源的请求排队,异步处理,减轻服务器压力增加稳定性。 如果是高并发的实时请求,我个人觉得不适用这个方案。如果是为了高并发,我觉得应该朝解决高并发的方向考虑。集群、分布式、动静分离、数据库读写分离之类的。 web的话,只能客户端页面轮训处理结果。 因为,据我个人了解啊,现在web没有成熟的向客户端推送处理结果的技术。或者是我没弄好,如果有知道的,还望提点下。
认同!
  • 打赏
  • 举报
回复
不会的,我们之前也是一个请求队列一个响应队列 ,其实中间虽然做了N多操作,但是实际上呈现出来的速度还是很快的
wangbintao 2016-05-22
  • 打赏
  • 举报
回复
服务端向web客户端推送,websocket 我说的客户端是指mq生产者 之前看到乐视架构的文章,用消息队列解决高并发,所以有此一问
搞什么哦 2016-05-21
  • 打赏
  • 举报
回复
用mq来将耗时比较长或者耗费资源的请求排队,异步处理,减轻服务器压力增加稳定性。 如果是高并发的实时请求,我个人觉得不适用这个方案。如果是为了高并发,我觉得应该朝解决高并发的方向考虑。集群、分布式、动静分离、数据库读写分离之类的。 web的话,只能客户端页面轮训处理结果。 因为,据我个人了解啊,现在web没有成熟的向客户端推送处理结果的技术。或者是我没弄好,如果有知道的,还望提点下。
wangbintao 2016-05-21
  • 打赏
  • 举报
回复
求助,勿沉...或者,是我发错区了

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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