关于java的map表,key,value双向查找。用什么方案实现?
服务器现在为每条tcp连接做个map表方便实时推送。客户端登陆和上报时都带uuid。我用uuid做key,SelectionKey为value做了一个表,当有事情要推送时通过uuid查找到对应的SelectionKey发送数据。现在问题来了我的tcp是用nio方式来做。网络断开时只知道是哪个SelectionKey,并不知道对应的uuid是多少,如何从map里remove掉?,我不想用遍历。这样太慢。做两个表? 三种方法:1——把uuid放入selectionKey组合出一个字符串;2——把uuid和selectionkey放到一个对象中,map时uuid对应这个对象即可;3——用两个map,只是后面需要同步更新 jasonzhu8888 发表于 2018-12-29 22:38三种方法:1——把uuid放入selectionKey组合出一个字符串;2——把uuid和selectionkey放到一个对象中,map ...
前两点应该不行,有两个要求,可以根据UUID找到selectkey,可以根据selectkey去remove 还有一个方法就是断开连接时不处理,等到下次根据uuid发送出现remove 你这种方式小心ddos攻击。伪造几百万个id就把你整瘫了。 wye11083 发表于 2018-12-30 10:04
你这种方式小心ddos攻击。伪造几百万个id就把你整瘫了。
确实,做大了会受攻击。请支招。 wye11083 发表于 2018-12-30 10:04
你这种方式小心ddos攻击。伪造几百万个id就把你整瘫了。
加鉴权?不合法的uuid,断开连接。 xuexi.. Edesigner. 发表于 2018-12-30 10:08
确实,做大了会受攻击。请支招。
我也没招,应对ddos可以有机房帮你解决,但是用户同时访问还需要服务器程序优化。根据老外评测,一个http服务器大概可以撑起来2k个并发请求。
页:
[1]