一个高性能并发问题
网上看到一个小案例
给定minX,maxX,minY,maxY后,查找出这个区域内所有的userid列表出来,新增userid的坐标和更新userid的坐标要高效,删除userid也一样,所以要考虑存储结构和查询效率 minX,maxX,minY,maxY不是整个坐标系的大小,整个坐标系大小为x*y (minX,maxX,minY,maxY)只是给定的查询条件,(minX<x,maxX<x,minY<y,maxY<y) 数据在程序启动时候从文件系统或者数据库读到内存,基本上都在内存存储,所以要构建这么样的一个模型出来,没有思路了,基本上是每个userid需要每秒需要更新一次坐标值,当然userid初期有4万多个吧,要考虑到10万哥userid,同时并发的话有1万个userid,查询的话,基本上是每秒查询一次
我的一些思路
问题难点
1.坐标更改应该比较频繁。如果采用顺序类数据结构,会发生大量的并发修改顺序的操作。
2.并发查询要求量非常大
3.数据比较需要两个维度的比较,X,Y
思路
1.将二维空间一维化。参考
http://hi.baidu.com/xuan_hacker/blog/item/d3fea48888244d92a4c272b9.html
2.采用无锁并发跳表来存储海量一维化数据
3.修改坐标的操作应该分为 Remove,修改节点值,Add三个步骤
4.查询的效率应该问题不大。
此思路需要实际测试验证。