本帖最后由 defonds 于 2014-05-22 09:35:12 编辑

解决方案 »

  1.   

    1、可行。容器在性能上肯定没有自定义的高(前提是要有一定的水平),它包含了一些不需要的模块,并且不能为特定的业务做特定的优化,所以面对大并发的服务器,很多都是自己写接入层2、AB既然是同步的交互,引入消息队列意义不大,队列本身是异步解耦的架构上的优化思路,拿一个同步的业务去套这个思路,没什么意义,再怎么排队也无法突破性能瓶颈在B上,并且业务是同步这个事实
      

  2.   

    楼主的需求明显是WebService来做是最好的。WebService本身就不依赖于Servlet,没有jsp这些显示层的东西,提供数据的交互处理。不要自建服务器,因为tomcat或weblogic都提供很好的可配置并发处理请求,以及消息队列。
      

  3.   


    谢谢 回复。针对2的回答,我想继续深究下。
    1:队列的引入,会不会是为了数据处理的安全性,而不只是效率,防止A端并发高于B端,出现了漏处理、没处理的情况。2:针对同步机制,从哪些方面考虑,去提高处理效率呢?
    首先,队列不是用来保证安全的,是用来做异步解耦的,适用于业务可以被分拆于异步的场景然后,你要理解消息队列这个东西其实也就是一个内存+分发,并不能防止生产者生产消息速率远大于消费者消费效率。一旦出现这样的情况,不管你用不用队列都会出问题。不用队列你的请求响应就会非常慢,用队列你的队列服务器就会因为内存爆满而挂掉,或者丢失大部分消息。最后,你的问题不在于用不用队列,你要解决的问题是生产者的生产速率大于消费者的消费速率的问题。思路:
    1、在B端做扩展,提高消费者的消费速率
    2、在A端做控制,当并发达到一定程度的时候主动拒绝请求到AB端产生/消费消息的速度达到一个和谐(不会因为并发太大撑爆消费者)的时候,再来考虑你的业务是不是可以拆分为异步,然后引入消息队列
      

  4.   


    谢谢 回复。
    针对2的回答,我想继续深究下。
    1:队列的引入,会不会是为了数据处理的安全性,而不只是效率,防止A端并发高于B端,出现了漏处理、没处理的情况。2:针对同步机制,从哪些方面考虑,去提高处理效率呢?
    首先,队列不是用来保证安全的,是用来做异步解耦的,适用于业务可以被分拆于异步的场景然后,你要理解消息队列这个东西其实也就是一个内存+分发,并不能防止生产者生产消息速率远大于消费者消费效率。一旦出现这样的情况,不管你用不用队列都会出问题。不用队列你的请求响应就会非常慢,用队列你的队列服务器就会因为内存爆满而挂掉,或者丢失大部分消息。最后,你的问题不在于用不用队列,你要解决的问题是生产者的生产速率大于消费者的消费速率的问题。思路:
    1、在B端做扩展,提高消费者的消费速率
    2、在A端做控制,当并发达到一定程度的时候主动拒绝请求到AB端产生/消费消息的速度达到一个和谐(不会因为并发太大撑爆消费者)的时候,再来考虑你的业务是不是可以拆分为异步,然后引入消息队列
    谢谢回复。
    如果需求允许我对A、B端进行修改,那么这个问题就不是问题了哦。