作者回复: 用户打开App的时候,更新数据:删除旧的位置hash key的用户,添加到新的位置hash key。所以应用还需要记录键值对:用户->位置。
作者回复: 赞,思路很清晰
作者回复: 1 网关前应该有负载均衡,文中简化省略了。spring+nginx是正确用法 2 微服务可以共用db,db独立的主要考虑是为了降低负载压力。 3 java和redis不会在一个机器上,微服务架构下尤其不会。PS:文中算法用redis,但是并没有用redis的geo函数。 4 是的 5 -5.5是经度longitude,是0。文中经、纬度的叫法是人们习惯叫法;二元组<43.60411, -5.59041> 写法,纬度在前,经度在后,是经纬度的习惯写法。
作者回复: 这里纬度应该是42.60411,感谢提醒,我修正一下
作者回复: 确实,正负误差应该✖️2,感谢提醒,我修改一下
作者回复: 不了解这个插件,感谢提示。不过数据库上的操作负载压力必然是满足不了我们这个场景需求的,太笨重了。
作者回复: Z阶曲线本身就是一个排序
作者回复: 暴力一点的话,在用户表里,好友用一个字段就可以记录了,关注好友有上限,一般2000个,好友id用整型,字段最大长度8k。
作者回复: 用GeoHash码的长度控制网格大小,网格大小是固定的。