Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  •  普罗旺斯
  • 负责帅就完事了
  • 写了1,496,113字

该文章投稿至Nemo社区   Java  板块 复制链接


1W个设备同时在线的TCP SERVER

发布于 2016/07/23 22:22 3,146浏览 0回复 944

最近在帮一位大哥做这样一个东西,要求支持1w个设备同时在线的TCP SERVER,这里可以做一下一些记录:


1、队列处理。

    这点非常重要,当同一时间需要处理大量的请求,假设这时候需要操作到数据库。如果这时候数据库池连接数量不够,而需要请求数据库的操作或者需要操作数据库的地方很多,那么这时候可能程序就崩溃了。因为没有足够的数据库连接。

    这时候就需要用到队列。

    举个例子:

        假设同一时间登录的用户有1000。

        这是很就需要1000个数据库连接。但是我们给连接池配置的最大连接只有150个,如果不做队列处理,显而易见,这时候程序就会有问题了。

        A:如果这时候做了队列处理,把所有需要登录的用户都放到队列中,从登录队列中取前50个登录用户进行操作。如果一旦有用户登录成功,则马上补上空余的登录位。

        B:或者也可以这样子做:限定一个极限登录数量值50,放到全局量中,当用户登录的线程在进行登录操作前,验证此时在登录的用户数量是否已经达到极限登录数量值,如果已经达到极限登录数量值,那么则该用户需要等待有空余的登录位才能进行登录。


2、多线程处理结合队列做高频度操作的代理。

    

3、尽量每个访问线程尽量减少数据库操作和文件操作。做一些常用数据的缓存。 


4、数据库连接一旦得到就不要轻易关闭。


5、常用的对象或者一些量尽量多做全局的访问池,放到池中。


本文标签
 {{tag}}
点了个评