Edesigner. 发表于 2018-12-29 20:47:38

关于java的map表,key,value双向查找。用什么方案实现?

服务器现在为每条tcp连接做个map表方便实时推送。客户端登陆和上报时都带uuid。我用uuid做key,SelectionKey为value做了一个表,当有事情要推送时通过uuid查找到对应的SelectionKey发送数据。现在问题来了我的tcp是用nio方式来做。网络断开时只知道是哪个SelectionKey,并不知道对应的uuid是多少,如何从map里remove掉?,我不想用遍历。这样太慢。做两个表?

jasonzhu8888 发表于 2018-12-29 22:38:11

三种方法:1——把uuid放入selectionKey组合出一个字符串;2——把uuid和selectionkey放到一个对象中,map时uuid对应这个对象即可;3——用两个map,只是后面需要同步更新

Edesigner. 发表于 2018-12-29 23:08:18

jasonzhu8888 发表于 2018-12-29 22:38
三种方法:1——把uuid放入selectionKey组合出一个字符串;2——把uuid和selectionkey放到一个对象中,map ...

前两点应该不行,有两个要求,可以根据UUID找到selectkey,可以根据selectkey去remove

Edesigner. 发表于 2018-12-29 23:12:17

还有一个方法就是断开连接时不处理,等到下次根据uuid发送出现remove

wye11083 发表于 2018-12-30 10:04:02

你这种方式小心ddos攻击。伪造几百万个id就把你整瘫了。

Edesigner. 发表于 2018-12-30 10:08:20

wye11083 发表于 2018-12-30 10:04
你这种方式小心ddos攻击。伪造几百万个id就把你整瘫了。

确实,做大了会受攻击。请支招。

Edesigner. 发表于 2018-12-30 10:09:16

wye11083 发表于 2018-12-30 10:04
你这种方式小心ddos攻击。伪造几百万个id就把你整瘫了。

加鉴权?不合法的uuid,断开连接。

hxke 发表于 2018-12-30 10:29:46

xuexi..   

wye11083 发表于 2018-12-30 10:52:09

Edesigner. 发表于 2018-12-30 10:08
确实,做大了会受攻击。请支招。

我也没招,应对ddos可以有机房帮你解决,但是用户同时访问还需要服务器程序优化。根据老外评测,一个http服务器大概可以撑起来2k个并发请求。
页: [1]
查看完整版本: 关于java的map表,key,value双向查找。用什么方案实现?