社交APP开发升级聊天功能数据库架构与定位解决方法
社交类APP开发对于聊天功能升级分布式缓存使用了一致性hash算法后,缓存还会存在个问题:社交App后台对核心缓存的命中率要求极高,就算使用了一致性hash算法,当其中一台缓存服务器宕机后,也会造成缓存命中率的大幅下降。深圳APP开发公司总结要解决上面的问题需要引入主从缓存结构的分布式缓存,如图9-29所示。
社交APP开发聊天功能升级解决方案示意图9-29主从缓存结构的分布式缓存
获取数据的时候,先访问主缓存,当主缓存获取数据失败(例如服务器宕机等原因)后,再访问从缓存。在两层缓存结构中数据以主缓存为主。当更新数据的时候,先从主缓存获取数据.再对主缓存进行一致性更新,更新成功后再更新从缓存,如果主缓存一致性更新多次都失败,则把主缓存、从缓存的数据删除,后续的请求穿透到数据库获取数据后回写到主、从缓存。
社交APP开发升级聊天功能方法之防止缓存失效的措施
主、从缓存结构中从缓存是作为主缓存的各份存储。大部分的请求都落在主缓存,只有少部分的请求会落在从缓存,这造成了主从缓存数据的剔除、过期策略不一致。如果主缓存出了问题,请求落在从缓存,但在从缓存上只有少部分数据可供访问,请求还是会穿透到数据库因此从缓存作为防止单点失效的措施是无效的。
APP开发公司平常解决这个问题有下面两个方案
·定期把主缓存的数据同步到从缓存,但同步的时候可能对正常的业务请求有影响。
·应用层控制请求有定的概率落在从缓存,让从缓存承担部分请求.使从缓存中的数据不过冷。解决方案如图9-30所示
社交APP开发之LBS App后台架构
移动互联网除了一直在线这个特点外,还有个重要特点:手机可以定位用户的位置。查找附近的人、餐馆等服务,以及大量的020应用,都需要使LBS(Location Based Services)。APP开发公司下面介绍LBS App后台架构中相关的知识。
APP开发经验之地理坐标详解
下面4种方法可以获取用户的地理坐标
·GPS:精度面,初始化搜索卫星的速度慢,耗电。
·基站:精度低,速度快,不同运营商的基站定位精度差别大。
·AGPS: GPS+基站的结合。
·Wi-Fi定位:通过服务商收集的Wi-Fi数据定位,但Wi-Fi的地理位置信息更新非常慢。
App端建议直接使用地图SDK提供的获取地理坐标的方法来获取地理坐标,其会综合各种定位方式后选择一个最优的结果返回。
初次做LBS功能的研发人员需要注意坐标的偏移问题。App通过系统级的函数获取的坐标,放到百度地图或高德地图上,总是会出现偏移。例如,当时APP开发公司程序员在南山科技园附近获取的坐标,把坐标放到百度地图上却显示是深圳大学,如图9-31所示。
经过查找资料,终于知道问题所在.如下:
通过系统底层函数获取的坐标是国际坐标系wGS_84lWorld GEodetic Svstem 1984),是为GPS全球定位系统的使用而建立的坐标系统。
GCJ-02是由中国国家测绘局制订的地理信息系统的坐标系统,其是对经纬度数据(WGS-84)的加密算法,即加入随机的偏差。对WGS-84获取的坐标进行次加密偏移。国内出版的各种地图数据必须至少采用GCJ-02对地理位置进行首次加密。假设GPS获取的坐标是(113. 37,
23. 04),这个坐标在国内的地图上经过偏移就可能变成(113. 39,23. 06)。而且这个偏移量没有明确规定,这就造成了个现象,不同电子地图服务提供商有不同的坐标体系,例如,Google地图、高德地图是同套坐标体系,百度地图却是另外一套坐标体系。
解决这个问题的方案:使用百度地图SDK提供的获取地理坐标功能,其获取的坐标是已经偏移过的,这个坐标在百度地图上能准确显示。好了,APP开发公司本文对于社交APP聊天功能升级以及定位的解决方案就分享到这里。谢谢您的关注,我们会在下期文章中详细与各位分享地理位置定位的解决方法。博纳网络编辑整理。