写点什么

如何在应用中快速稳定地实现 LBS 服务?!

  • 2016-11-04
  • 本文字数:2153 字

    阅读完需:约 7 分钟

随着移动互联网的发展,人们的衣食住行越来越离不开 LBS(基于位置的服务),如何在自己的应用中快速稳定地实现 LBS 服务也就成为了业内比较关注的话题。

2016 年 10 月 20 日,由 QCon 与高德开放平台联合举办的“高德 LBS 技术专场”于 QCon 上海 2016 分会场顺利举办。会上高德开放平台高级产品经理杨巍、高德开放平台资深研发经理朴春植、高德开放平台技术专家刘魁(骏征) 3 位专家分别从什么是 LBS 服务,为什么要用 LBS 服务,如何快速实现 LBS 服务,如何保证其稳定性几个方面展开了分享。

LBS 服务的定义与意义

LBS 服务是指通过电信移动运营商的无线电通讯网络或外部定位方式,获取移动终端用户的位置信息,在 GIS 平台的支持下,为用户提供相应服务的一种增值业务。它包括两层含义:首先是确定移动设备或用户所在的地理位置;其次是提供与位置相关的各类信息服务,如找到手机用户的当前地理位置,然后为其寻找 1 公里范围内的宾馆、影院、图书馆、加油站等的名称和地址。所以说 LBS 就是要借助互联网或无线网络,在固定用户或移动用户之间,完成定位和服务两大功能。

高德开放平台的主要任务就是将高德地图专业的定位、地图、导航等位置能力和 LBS 服务以 API、SDK 的形式开放出来,供合作伙伴和开发者使用。覆盖领域包括社交媒体、社交出行、物流外卖、新闻资讯等行业。据统计,2015 年下半年到 2016 年上半年高德开放平台与行业用户(只选了比较有代表性的 3 个)共享 LBS 能力的占比分别是:出行 85%;外送 60%;主流社交 80%。

从上图可以看出出行行业的占比最高,其最出色的两个服务是实时路况和个性化导航。那么,LBS 服务如何助力出行?它给我们的生活带来哪些便利呢?杨巍老师结合实际案例分享了《共享出行的 LBS 实践》。

以共享单车为例,LBS 服务可以帮助确定使用者当前的位置及附近的车辆;帮助指引路线,包括步行线路规划指引最佳找车路线(规避“死胡同”、“隔堵墙”等问题,引导用户走最佳的找车路线节约时间)、骑行路线规划提供预估路程和时间(提供短途出行目的地的预估路程,提供到达目的地的预计通勤时间,可根据通勤时间计算预估费用);帮助轨迹纠偏提供真实骑行轨迹;帮助圈出地理围栏,保证运力平稳……

LBS 服务技术实践与经验分享

高德开放平台为 30 万 App 提供了 LBS 服务,拥有大量的 LBS 服务技术实战经验。LBS 覆盖了很多行业,但游戏行业还较为空白,朴春植老师分享了《LBS 与游戏结合实战》,介绍了在游戏行业中如何实践 LBS 服务。

大部分 LBS 相关的开发者都不用关心手机是如何定位的,其实在做移动端优化时,了解定位原理还是非常有用的,比如怎么省电,如何处理高频位置变化的情况。实现定位有以下 3 种方式:第一种是 GPS ;第二种是用基站塔来标记位置;最后一种是通过 Wifi 标记位置。如何选择适合产品需求的定位模式,减少定位频次 (按时间、距离) 呢?详见下图。

分类 类型 精准度 特点 调用方式 GPS GPS/A*GPS 2~10m 准确、耗时长、耗电 定位 SDK+ 系统接口 网站 基站 500~5000m 大致位置 定位 SDK 网站 Wi-Fi 20~200m 较为准确、快速省电 定位 SDK 为什么要说游戏行业?从高德开放平台的数据来看,LBS 在各行业都有所覆盖,唯独缺少游戏行业。以下是朴老师总结的几个 LBS 与游戏相结合的痛点和难点。

在做游戏的时候,需要自定义地添加一个 Render,把每一帧回调。还需要一个重要的相互转换接口,利用它可以在缩放、移动地图的时候,把人物的位置与游戏的位置结合起来,下图提供了主要技术原理。

如何确保 LBS 服务载体平台的稳定性

面对一个开放平台,用户最关心的是什么?

  • 使用简单:API 设计适配多元化应用场景,可扩展性强;
  • 稳定性:崩溃率低,拥有合理的框架、健全的代码扫描 review 机制、自动化;
  • 响应速度:通过网络请求、渲染速度、异步等优化来加快响应速度;
  • 包大小:越小越好;
  • 隐私:编码安全性,数据输入安全(二进制 + AES + RSA),https 对域名进行强校验。

高德开放平台的业务特点是服务稳定性要求高、流量不均匀、流量易出现突增、节假日流量出现高峰。为了满足业务需求,平台采取了哪些措施呢?高德开放平台技术专家刘魁(骏征)分享了《在线服务的流量管控实践》,主要包括在线服务限流和七层负载流量切换(L7)上的业务实践。

服务限流包括集群限流和单机本地限流。集群限流以机房为维度,对 key/cip 和 和同类引擎 QPS 约束。

集群限流的过程中会遇到同步扩容的问题,而这个问题需要单机限流来解决:以单机为维度,对接口或接口组 QPS 约束;精准到 URI 维度,提供默认值。

七层负载切换(L7) 包括手动和自动切换,是结合 DNS 四层切换的一种快速流量切换方案。

L7 切流方式如下图所示,可以通过平台手动切流和自动切流两种方式触发切流,自动互切加锁,手动切流优先,实现实时业务监控。

手动切换是通过平台手动切流,哪块有问题单切哪一块,这样实际上降低了切流的风险。自动切流,是基于业务监控的,它是一个无人职守的方案,适用于无人看管的时候,可以降低服务时长。

最后,刘老师指出,不论服务做得多好,都没有办法保证一定没有问题,一定要有一套完整的报警和容灾措施。

相信通过本专题,您对 LBS 服务一定有了更加深入的理解。篇幅原因,只选了部分内容列入文中,想了解更多请移步 QCon 上海 2016 官网下载讲师完整 PPT,关注 QCon 公众号后期还可以看到精彩视频。

2016-11-04 00:493994

评论

发布
暂无评论
发现更多内容

Golang Chaos Engineering

escray

学习 极客时间 Go 语言 5月日更

如何更改 Notion 中的字体?

彭宏豪95

效率 Notion 工具 5月日更

百度大脑UNIT拍了拍你,提醒你报名智能对话训练营

百度大脑

物联网 智能对话

耗时1年的前端技术框架切换之旅

华为云开发者联盟

大前端 软件工程 React 框架

使用docker compose快速部署前后端分离项目案例

皮特王

nginx Docker Vue Docker-compose

jmeter命令行执行测试并对测试报表进行初步分析

行者AI

测试 Jmeter

聊聊 Zabbix 和 Prometheus(一)

耳东@Erdong

Prometheus zabbix 5月日更

技术实践丨如何解决异步接口请求快慢不均导致的数据错误问题?

华为云开发者联盟

JavaScript typescript 大前端 浏览器 angular

架构实战营-详细架构设计文档

Simon

架构实战营

工商银行分布式服务 C10K 场景解决方案

阿里巴巴云原生

容器 微服务 云原生 监控 应用服务中间件

挖矿从入门到放弃:Chia

程序员架构进阶

数字货币 28天写作 Chia奇亚挖矿 5月日更

这个英语学习APP更适合小白

小天同学

学习 英语 5月日更 APP推荐

你到底想做什么

ES_her0

5月日更

腾讯云大神亲码“redis深度笔记”,从基础到源码,应有尽有

Java 编程 程序员 架构

技术干货|7个 React 性能提升技巧

拍乐云Pano

React

只会重装系统的运维,不是好运维

运维研习社

Linux 5月日更 系统修复

精选Hive高频面试题11道,附答案详细解析

五分钟学大数据

大数据 hive 5月日更

开发者必看,面试官心中的最佳数据库人才模型是什么样?

华为云开发者联盟

面试 开发者 华为云数据库 数据库人才

SICP 习题2.6之丘奇数

程序员历小冰

函数式编程 SICP 5月日更

华为云PB级数据库GaussDB(for Redis)揭秘第九期:与HBase的对比

华为云开发者联盟

HBase 华为云 开源数据库 NoSQL数据库 数据库GaussDB(for Redis)

打破思维定式(六)

Changing Lin

5月日更

【LeetCode】解码异或后的排列Java题解

Albert

算法 LeetCode 5月日更

HarmonyOS开发者创新大赛预选赛结束,23支队伍脱颖而出闯入决赛

Geek_283163

鸿蒙

阿里云入选 2021 Gartner APM 魔力象限,国内唯一入选云厂商

阿里巴巴云原生

阿里云 容器 微服务 运维 云原生

Python OOP-5

若尘

oop Python编程 5月日更

恍然大悟丨Java 中 RMI 的使用

Java架构师迁哥

一个朋友学会Java泛型后直接薪资翻倍!

北游学Java

Java 泛型

那些激情燃烧的NFT们

zhoo299

区块链 加密货币 艺术 5月日更 NFT

五一假期回乡,跟大家聊聊感触

架构精进之路

心情 杂记 5月日更

自动发布.NET Core Web应用

吴脑的键客

DevOps 运维自动化 jenkins dotnet

大数据实战:网站流量日志数据分析

大数据技术指南

大数据 5月日更

如何在应用中快速稳定地实现 LBS 服务?!_语言 & 开发_刘芸_InfoQ精选文章