一个高性能并发问题

网上看到一个小案例

 

给定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.查询的效率应该问题不大。

 

此思路需要实际测试验证。

posted @ 2011-01-04 10:06  软件猎人  阅读(342)  评论(0编辑  收藏  举报