用户在使用时通过智能手机上运行的 APP,在具有定位能力的无线网络或全球定位系统 支持下访问系统。随着科技的进步,目前的智能终端都具有了一定的嵌入式计算能力和存储 能力,但仍然是相对有限的且缺乏拓展能力,不足以处理庞大的地理数据。因此,本系统将 繁重的计算任务在后台业务服务器和地图服务器中完成,如地图的创建和位置数据的存储和 基于地理位置的检索等,而客户端只需要完成发起请求和展示请求结果,并不保存复杂的位 置信息,也避免执行过于复杂的地图相关的计算。
这样的系统设计在一定程度上加大了客户端服务器之间交互频率,加重了后台服务器的 负担等。但是后台服务器容易通过硬件拓展和软件优化等手段提高服务能力,当用户量达到 一定层次后,服务器现有能力不足以支撑用户访问时可以升级服务器硬件提高服务能力,减 少对客户端计算能力的依赖。JSON 接口数据传输具有平台无关特性,只要遵循相同的接口, 就可以在异构平台上来访问服务器,同时 JSON 具有较低的数据冗余,针对智能终端的带宽 限制和昂贵的数据费用,可有效减少数据传输量,因此本项目客户端与服务器之间采用 JSON 结构作为媒介进行通讯。业务服务器负责数据的存储和读取,数据安全的控制,同时提供了 客户端和地图供应商间的接口,作为客户端与地图服务器间的中间平台,转化来自用户的请 求和地图供应商的响应。
地图服务器采用阿里巴巴旗下的产品高德地图,高德地图开放平台提供了所有主流平台 的 SDK,拥有庞大的用户基础、优秀的跨平台能力、活跃的社区和完备的开发文档,很容易 的建立基于 Android 智能平台的移动定位服务应用,同时为以后的多平台支持建立基础。
应用服务器采用基于 Java EE 平台的成熟的 Sping MVC 框架开发,由于采用了和客户端 相同的 Java 语言,在一定程度上提高了代码复用能力,有助于应用的快速开发。应用服务器 采用 Oracle 公司的关系型数据库产品 Mysql,MySql 数据具有免费、轻量、稳定等特点,适 合于快速开发和项目初期数据量较小的场景。但是 Mysql 并不适合于地理位置检索,比如 LBS 应用中最常见的检索问题“我附近有哪些商店”,这类空间距离计算问题往往需要较大的计算能力和内存开销,且具有较多的技术难点,比如智能推荐、距离排序、模糊检索等。开始系 统开发前,我曾调研对比过更适合做地理位置检索查询的数据库产品,比如非关系型数据库 产品 Mongodb 和关系型数据产品 Postgresql 等,它们都提供数据库级的地理位置距离计算和 排序,都具有较优异的地理位置检索性能。然而这些产品的安装复杂,流行程度较低,我对 这些技术比较陌生,使用过程中遇到的问题解决难度大,采用这些技术将会给开发工作带来 很多未知风险。鉴于紧迫的开发周期和目前有限的服务器计算能力,自行开发和维护地理位 置检索和推荐难度大,成本高,不利于核心功能的开发,不适合目前的状况。对于地理位置 检索,高德地图提供了一套成熟免费的解决方案—云图(Cloud Map)。高德云图提供云计算 能力,可以提供免费的位置数据存储、检索、展现服务,有助于快速搭建基于“自有数据”的 网站或 APP,提供了丰富的接口用于管理和检索数据。采用云计算的思想,用于空间检索任 务交给更专业的高德地图服务器完成,只要将基本的地理位置信息在云图上备案一份,用于 位置检索,而业务服务器专注于维护核心的数据和业务逻辑,这更符合当前的开发需求。鉴 于此,服务器端可以采用更轻量级的 Mysql 数据库,降低开发成本。文献综述