「ArchSummit·深圳」人工智能如何促进工业和制造领域的智能化转型? >>> 了解详情
写点什么

如何在应用中快速稳定地实现 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:493433

评论

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

软件测试 | 测试开发 | TorchServe搭建codeBERT分类模型服务

测吧(北京)科技有限公司

测试

Ribbon

想要飞的猪

Ribbon

软件测试 | 测试开发 | GraphQl:让你的接口所得即所要

测吧(北京)科技有限公司

测试

探究MYSQL之索引

C++后台开发

MySQL 中间件 后端开发 C++开发 数据库索引

软件测试 | 测试开发 | Thinkphp5 集成 Swoole

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Tornado 异步性能分析

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 基于NSQ搭建高可用分布式消息队列

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 一种基于视频帧差异视频卡顿检测方案

测吧(北京)科技有限公司

测试

禅道的工时管理

禅道项目管理

项目管理 工时 禅道

软件测试 | 测试开发 | Golang协程池的使用

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 用模拟器实现视频流的音画分离

测吧(北京)科技有限公司

测试

hystrix

想要飞的猪

Hystrix hystrix名词概念

软件测试 | 测试开发 | Pandas数据分析及可视化应用实践

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 相似图像的检测方法

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | UI遍历中页面定义和动作事件筛选方法

测吧(北京)科技有限公司

测试

8万字208道Java经典面试题总结(附答案)

Geek_0c76c3

Java 数据库 开源 程序员 开发

软件测试 | 测试开发 | 堆排序原理及实现

测吧(北京)科技有限公司

测试

IDC发布《中国边缘云市场解读(2022)》:阿里云蝉联中国公有云市场第一

阿里云视频云

边缘计算 公有云 边缘云

软件测试 | 测试开发 | Aiomysql 与 Sqlalchemy 的使用

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Lambda表达式介绍和底层实现分析

测吧(北京)科技有限公司

测试

字节跳动基于Doris的湖仓分析探索实践

字节跳动数据平台

数据仓库 数据湖 Doris Hudi 湖仓一体

史上最全499道Java面试题:JVM+分布式+算法+锁+MQ+微服务+数据库

Geek_0c76c3

Java 数据库 开源 架构 面试

软件测试 | 测试开发 | 提高Android云真机稳定性的方法

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | 分布式锁的实现方案

测吧(北京)科技有限公司

测试

喜迎华诞!10月月更伴随着国之盛庆向你走来!

InfoQ写作社区官方

热门活动 10月月更

软件测试 | 测试开发 | Android App 保活服务的配置与禁用

测吧(北京)科技有限公司

测试

我与CI流水线的羁绊,任谁也无法斩断!

极狐GitLab

DevOps 持续集成 jenkins CI/CD 极狐GitLab

一文读懂TDengine的三种查询功能

TDengine

数据库 tdengine 时序数据库 企业号九月金秋榜

阿里面试官内部题库!阿里发布2022年Java社招岗(正式版)面试题

Geek_0c76c3

Java 数据库 开源 程序员 架构

软件测试 | 测试开发 | code2vec 代码的连续分布式矢量表示

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | ThinkPHP 接口开发过程

测吧(北京)科技有限公司

测试

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