Uber利用Golang构建高性能地理查询服务实践( 二 )
地理围栏是指地球表面上人类定义的地理区域(或几何学上的多边形) 。 Uber服务中广泛使用了地理围栏为基础的CIS服务 。 具体表现为向用户显示在给定位置提供哪些服务 , 定义具有特定要求的区域(例如机场)以及对许多人同时打车的地点实施动态定价等 。 比如下面是一个地理围栏的示意图:
从用户的手机中检索纬度/经度之类的东西的基于地理位置的服务基础是找到该位置所属的地理围栏 。 在Uber初始版本的服务中该功能简单的在多个服务/模块中复用 。 在进行微服化后该服务功能被集中到一个新的微服务 。
起步
在评估语言时 , Uber考虑了Node.js和Golang 。 前者是实时产品团队的主要编程语言 , 对该语言的成员比较熟悉 , 而且有大量的项目经验积累 。 但是最终还是选择了Golang , 主要考虑了一下的因素:
首先 , 性能上要求高吞吐量和低延迟 。 基本上Uber移动应用程序的每个请求都需要地理围栏查询 , 并且必须能快速响应结果(99%响应不得大于100毫秒) , 查询的QPS要达到100000次 。
推荐阅读
- 地下城与勇士|DNF:团本毕业难度高?利用版本凑齐团本装备so easy!
- 三国杀|DNF:利用好活动即可独当一面!回归玩家养成指南
- 三国志战略版|三国志战略版:利用玄学抽卡,立马脱非入欧!抽不到橙你来找我!
- 我的世界|如果现实中你获得了Minecraft的“奶”,你会如何利用这个能力?
- 坦克世界|《坦克世界》杂谈,二雷时代的弊端,没好好利用话语权
- 蝴蝶|《天涯明月刀手游》困难苏夜来打法攻略,牵线机制利用好
- 原神|《原神》资源利用率大幅度降低,玩家:真就一次性大世界体验?
- 主机掌机类游戏|在《塞尔达传说:荒野之息》中,玩家利用暖暖草果玩起了梯云纵
- 第一桶金|梦幻西游:选择正确的游戏打开方式,利用五开赚取人生第一桶金!
- 梦幻西游|梦幻西游:利用好这个工具,做任务变的简单多了