出家如初,成佛有余

一个移动互联网应用地图服务架构

Posted in 移动互联网 by chuanliang on 2011/07/10

    在移动互联网中,各种与位置相关的服务都严重依赖于地图服务,地图服务质量的好坏很大程度决定了所提供服务的高低。尽管有Google Map等免费或收费的地图服务可供使用,但没有那一家地图服务提供商能够完整提供移动互联网应用所必须的各种地图服务及数据,尤其是针对那些垂直行业应用。

    在中国特色的制度下,除了技术因素外,值得注意的是由于地图牌照发放问题带来的政策上的不确定性对架构实现的冲击和挑战。

    地图服务架构设计原则:

    1、高性能:由于目前的移动互联网带宽仍是较大的制约因素,在客户端用户的等待耐心有限,因此地图服务必须将性能作为首要设计要素。而且像google map之类的免费服务由于防火墙原因经常不稳定或异常缓慢,需要在架构设计时候重点考虑。

    2、低成本:尽管一些收费的地图服务已经提供了一些比较完整的地图数据、POI数据,但对于初创型的公司而言,资金有限,因此在技术能力许可的情况下,与其购买昂贵的服务,还不如采用低成本的DIY方案。

    3、架构灵活:能够适应客户端、服务器端服务的变化,能够应对政策因素等问题带来的冲击。可以在不同地图服务及本地服务间切换,不能因政策因素导致服务的不可用。

   4、持续积累:对于移动互联网公司而言,针对垂直领域POI数据及地图数据的积累也是产品的核心竞争力,因此架构必须有助于相关数据的积累。

 

google map,移动互联网,地图服务,位置服务,LBS,软件架构

客户端使用SDK访问地图服务 VS.  客户端访问自己服务器端代理

    a、如果由客户端直接访问google map之类的地图服务,则如果地图服务需要调整(例如需要从google map切换到其他地图服务、地图展示内容需要调整时候),都需要客户端升级;如果由服务器端代理完成,只需要服务器升级即可。

    b、服务器端可以缓存客户端频繁访问的地图访问请求(例如搜索周边、根据经纬度定位地图、根据地址定位地图等),可以极大提高性能

    c、服务器端可以在地图服务商的结果上,增加自己的一些操作及数据,例如服务器端可以聚合自己POI数据及其他服务提供商的数据,然后添加到google map结果集上

    d、客户端并不是很适合做一些复杂的计算,例如对于POI及其他内容数据的聚合、图层操作,服务器端来完成更合适

    当然采用服务器端代理的方式也有一些问题,例如google map对每天api调用次数可能有限制、采用客户端现成的SDK方式开发相对简单等。具体需要根据自己业务实际需要采用合适的架构。

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: