java高并发gps系统_高并发GPS位置分享怎么设计实现分布式?

1.首先DB方面及早引入Proxy层(amoeba),用户基础数据与业务数据(GPS位置,好友关系等)分库,业务数据可根据数量是否分表,业务数据实现读写分离。访问规则hash(id)。// 实例启动记得先预热数据

2.独立开辟一组业务数据缓存服务器,LRUMap实现。根据用户请求将相关业务数据逐步从DB加载到内存中(比如用户请求GPS历史位置,即加载DB所有GPS历史位置,请求好友关系,即加载DB全部好友关系)。一切数据读写以缓存为主,写数据放入队列使用线程异步回写DB。这样做的目的主要是只有冷数据才从DB加载,大大地保证了DB的读写负载,缺点是你要容忍宕机再来的数据丢失,所以要做好日志以便恢复(当然重要数据一定要实时回写)。单台15G内存机器双实例一般够支撑10w用户的热数据了。实例可以水平扩展,访问规则hash(uid)。

3.一组应用逻辑服务器专门处理网关丢过来的任务,计算完成后通知网关返回结果。比如接收到网关发过来的需要更新用户GPS位置信息指令,根据hash(uid)到对应的业务数据缓存服务器更新缓存中的GPS最新位置并返回好友关系,然后就可以根据相应的好友UID到在线缓存中查询到好友所在网关并分发通知更新的数据了。// 保持一组连接至数据缓存服务器(UDP)

4.一组网关服务器负载保持所有客户端(TCP/UDP)的连接和内部服务器(UDP)的连接

注:每组服务器均可以水平扩展,除了数据缓存服务器必须指定用户hash(UID)外,网关逻辑服务器均可用hash规则或视负载而定进行用户分配,具体支撑多少用户根据你们实际情况来定吧。

client loginserver

|

gateway1...gatewayN

|req logic & response data

|

logicserver1..Ndataserver1..N amoebadb1...dbN

架构差不多就是这样,不喜勿喷。码字真的好辛苦~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值