浏览 2846 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-03
最后修改:2009-09-03
客户机发送报文到A,A接到报文后,放入一个LinkedBlockingQueue,然后应答客户机。 从线程池中起另一个线程,到LinkedBlockingQueue中取排头的报文,发送给B机。 B机同样将收到的报文放入LinkedBlockingQueue,在放入之前,判断拥塞情况,如果Queue中已经超过500个报文,就在应答A的HTTP响应中设置status为900。 这样,A就需要在收到900的HTTP应答后,调整发送间隔时间,比如等待10分钟再发下一个,直到B机的应答返回的是200了,才恢复正常速度发送。 这个是我的初步设想,请问大家还有没有更好的建议? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-03
大并发的情况下,不推荐用Http方式。
楼主为什么不考虑下rmi或者直接用socket来通信? |
|
返回顶楼 | |
发表时间:2009-09-04
rwl6813021 写道 大并发的情况下,不推荐用Http方式。
楼主为什么不考虑下rmi或者直接用socket来通信? 采用HTTP是客户要求的。 对于拥塞控制有没有什么建议? |
|
返回顶楼 | |
发表时间:2009-09-04
JMS吧。应该能很好得满足要求。
|
|
返回顶楼 | |
发表时间:2009-11-19
你可以在你发送的XML里添加一个字段来标示需要间隔多长时间再发送
|
|
返回顶楼 | |
发表时间:2009-11-20
这个可以参考TCP协议的“窗口机制”,也就类似你这样做的了。
|
|
返回顶楼 | |
发表时间:2009-11-20
客户端-》server A-》server B
没有什么问题。server A中你可用JMS来实现这样的机制。这个还能够持久化到队列中。 大并发的情况下,不推荐用Http方式。 楼主为什么不考虑下rmi或者直接用socket来通信? 由于HTTP是TCP的,为了保证信息的正确做了一些消耗,但是这些消耗的代价是你不必担心数据错误,不必自己组装数据包,即使你自己来做那么性能不一定比TCP的算法高明。你这里的socket是指什么?二进制的数据?通讯协议呢?rmi一样是TCP,不比http高到哪里去。只是数据是二进制的而已。 |
|
返回顶楼 | |
发表时间:2009-11-20
看来 B 机并不需要等处理完才回应 A 机。何不让 B 机暂时将请求数据存在数据库或者文件里面?而对请求数据的处理则另起一个进程执行。
|
|
返回顶楼 | |