Socket通信速度快于Http通信速度怎么解决
Socket通信速度快于Http通信速度如何解决?
问题是这样的,最近开发一个服务器系统。
1:单独的线程利用sokcet通信的方式接收网关的数据,把接收放到队列1中。
2:单独的另外一个线程,读取队列1中的数据,对其进行解析,把解析完毕的数据放在队列2中。
3:单独的另外一个线程,读取队列2中的数据,以http通信post方式,发送到web服务器。
问题处在:当网管数据量过大的时候,队列2中的数据,通过http通信post方式,发送速度跟不上,导致队列2的数据不断增长,希望大家给我点帮助,如何去解决这个问题。
------解决方案--------------------
单条Socket快于HTTP很正常,毕竟HTTP要频繁建立连接,而且还要额外发送信息。
为啥不考虑可以用多条线程来负责HTTP的Post操作?Web服务器本来也就支持并发访问。
甚至我认为解析队列1的工作也可以并发处理,如果解析计算量高且CPU多核的情况下。
------解决方案--------------------
1、放慢进的速度,可以采取信号量,未处理的最多200。这样可以避免系统崩溃,比如内存不够。
2、加快出的速度。这个就按LS所说,加多线程并发处理。
最好的是两个都加。
------解决方案--------------------
为什么要放慢进加快出的速度呢 ?
------解决方案--------------------
加快出的概念好理解。比如坐车,春运加班车一大把就是加快出。
放慢进。就是春运的时候车站限流,比如两小时内发车的才进站。这是因为太多人挤在车站容易拥挤不安全。对于软件来说就是可能发生崩溃,放慢进的根本原因在于消费大大慢于生产,也就是放进去也没用反而占资源。
问题是这样的,最近开发一个服务器系统。
1:单独的线程利用sokcet通信的方式接收网关的数据,把接收放到队列1中。
2:单独的另外一个线程,读取队列1中的数据,对其进行解析,把解析完毕的数据放在队列2中。
3:单独的另外一个线程,读取队列2中的数据,以http通信post方式,发送到web服务器。
问题处在:当网管数据量过大的时候,队列2中的数据,通过http通信post方式,发送速度跟不上,导致队列2的数据不断增长,希望大家给我点帮助,如何去解决这个问题。
------解决方案--------------------
单条Socket快于HTTP很正常,毕竟HTTP要频繁建立连接,而且还要额外发送信息。
为啥不考虑可以用多条线程来负责HTTP的Post操作?Web服务器本来也就支持并发访问。
甚至我认为解析队列1的工作也可以并发处理,如果解析计算量高且CPU多核的情况下。
------解决方案--------------------
1、放慢进的速度,可以采取信号量,未处理的最多200。这样可以避免系统崩溃,比如内存不够。
2、加快出的速度。这个就按LS所说,加多线程并发处理。
最好的是两个都加。
------解决方案--------------------
为什么要放慢进加快出的速度呢 ?
------解决方案--------------------
加快出的概念好理解。比如坐车,春运加班车一大把就是加快出。
放慢进。就是春运的时候车站限流,比如两小时内发车的才进站。这是因为太多人挤在车站容易拥挤不安全。对于软件来说就是可能发生崩溃,放慢进的根本原因在于消费大大慢于生产,也就是放进去也没用反而占资源。