网易首页 > 网易号 > 正文 申请入驻

Uber把地图切成690亿个六边形,工程师发现后集体破防

0
分享至


每秒处理1万条GPS坐标,你的数据库CPU会先冒烟还是账单先爆炸?这是物流平台每天都在做的选择题。答案藏在两种技术的夹缝里:让用户随手画边界的PostGIS,和把地球切成六边形网格的Uber H3。

纯数学视角下,H3是艺术品。但让仓库管理员用六边形画装卸区?那是UX灾难。真实世界的配送中心、禁区、电子围栏——没一个是规则的。

用户要的是随手画,系统要的是跑得动。这个矛盾逼出了一套" hybrid 架构":前端自由画,后端偷偷转成六边形索引。

PostGIS:精准但昂贵的"笨办法"

最直白的方案:GPS坐标来了,直接问数据库"这个点在哪个多边形里"。Go代码写起来很清爽——ST_Contains函数封装了射线法之类的空间数学,返回命中了哪个围栏。

GiST索引能加速,但本质没变:每次查询都是一次复杂的几何运算。10k QPS下去,PostgreSQL的CPU曲线会教你做人。云账单上的数字,比仓库里的叉车还忙。

这就像是让每个快递员进门前先解一道微积分——答案是对的,但门可能早就关了。

H3:用690亿个六边形换O(1)查询

Uber开源的H3把地球切成多层六边形网格。最细粒度那层,全球有690亿个格子。每个(lat, lng)被哈希成一个字符串——比如8928308280fffff。


查询变成啥?Hash Map查键。O(1)。不碰数据库,内存里直接判定点是否在区域内。

但用户不画六边形。所以后台跑异步任务:拿到用户画的任意多边形,用Polyfill算法"填满"它涉及的H3格子,存进Redis或索引表。

前端感知不到这层转换。管理员画了个歪歪扭扭的禁区,后台默默生成几百个六边形ID。GPS坐标来了,先算它属于哪个H3格子,再查Redis——0.1毫秒 vs 原来可能的50毫秒。

空间换时间,精度换速度。但这里的"精度损失"控制在六边形边长几米到几百米可调,对物流场景足够用。

Go实现里的两个关键取舍

代码层面,这套架构在Go里分两条 pipeline:

实时路径用H3:GPS入队 → 计算H3索引 → Redis查围栏ID → 返回业务逻辑。全程内存操作,无锁哈希表扛住并发。

管理后台用PostGIS:用户保存多边形 → 异步Polyfill生成H3集合 → 双写Redis+持久化。编辑时回显原始几何,保证"所见即所得"。

一个细节:H3的Polyfill在凹多边形边缘会有"锯齿",这是六边形逼近任意形状的代价。物流场景通常接受——你不会因为围栏边界差了两米就误判一辆卡车。


但如果是无人机空域管理?那得保留原始PostGIS做二次校验,H3只做初筛。架构变成分层漏斗:H3过滤99%的明显无关点,PostGIS精确判定边界争议案例。

没有银弹。只有场景化的妥协。

为什么不是S2?为什么不是Geohash?

Google的S2同样做球面网格,但四边形在局部逼近圆形区域时,边角效应比六边形严重。Geohash是Z-order曲线,相邻区域前缀相似——这本是优点,但跨经度180度时连续性断裂,全球物流平台得专门处理这种边界情况。

H3的六边形有12个五边形"缺陷"(正二十面体顶点处),但Uber把它们固定在海洋和人烟稀少区。对陆地物流,你几乎碰不到。

更关键的是生态:H3的Polyfill、K-ring邻居查询、层级聚合,在物流场景下有现成套路。S2更强于球面几何运算,但"画个多边形转成索引格子"这条路径,H3的社区工具链更成熟。

一位在东南亚跑冷链物流的工程师说过:「我们试过纯PostGIS,RDS实例从4核飙到32核才扛住早高峰。切到H3+Redis后,2核机器还有余量。」

省下的钱够养一个小队的后端。

现在的问题是:你的业务里,有多少查询是可以被"六边形化"的,又有多少必须保留精确几何?这个比例,决定了你的架构能省多少台机器——以及,能让多少工程师少熬几个通宵。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
布伦特原油失守90美元/桶,为3月11日以来首次

布伦特原油失守90美元/桶,为3月11日以来首次

每日经济新闻
2026-04-08 20:10:10
霸凌全红婵群已解散,多个知名人士名单曝光,全是队友和朋友!

霸凌全红婵群已解散,多个知名人士名单曝光,全是队友和朋友!

眼光很亮
2026-04-08 12:25:48
跳水运动员全红婵涉嫌遭网暴,全红婵所在训练中心已向公安机关报警

跳水运动员全红婵涉嫌遭网暴,全红婵所在训练中心已向公安机关报警

界面新闻
2026-04-08 12:41:59
全网泪目!张雪峰团队正式复播,人气爆棚

全网泪目!张雪峰团队正式复播,人气爆棚

雷科技
2026-04-08 10:36:59
迟重瑞,已皈依佛门,不生孩子家族显赫,财富差距掩盖了他的才华

迟重瑞,已皈依佛门,不生孩子家族显赫,财富差距掩盖了他的才华

喜欢历史的阿繁
2026-04-08 17:53:34
国民党爆发内江,马英九拒接电话,大陆公布统一后的安排

国民党爆发内江,马英九拒接电话,大陆公布统一后的安排

奇思妙想生活家
2026-04-07 15:21:31
无力吐槽!广东俩外援三节疯狂出手35次,跟队记者:都不想看了

无力吐槽!广东俩外援三节疯狂出手35次,跟队记者:都不想看了

林小湜体育频道
2026-04-08 21:24:24
美媒披露特朗普发动伊朗战争内幕:“全凭直觉”,除万斯外无人反对

美媒披露特朗普发动伊朗战争内幕:“全凭直觉”,除万斯外无人反对

澎湃新闻
2026-04-08 20:56:27
4月8日俄乌最新:普京押错了注

4月8日俄乌最新:普京押错了注

西楼饮月
2026-04-08 20:39:48
中美德“盾构机”速度差距:德国每小时6米,美国3.6米,中国呢?

中美德“盾构机”速度差距:德国每小时6米,美国3.6米,中国呢?

蜉蝣说
2026-04-08 15:30:34
郑丽文的婚姻:女主外男主内,不生育孩子,事业理想置于家庭之上

郑丽文的婚姻:女主外男主内,不生育孩子,事业理想置于家庭之上

芳芳历史烩
2026-04-08 16:28:15
全红婵被谁网暴了?那个微信群网暴全红婵的那个微信群能跑掉吗?

全红婵被谁网暴了?那个微信群网暴全红婵的那个微信群能跑掉吗?

常识群
2026-04-08 14:46:05
害女童凶手被揭底!常年分居,村民曝骇人细节,坐牢算轻的

害女童凶手被揭底!常年分居,村民曝骇人细节,坐牢算轻的

哄动一时啊
2026-04-08 20:05:21
748万网约车司机最后50天:6月1日红线落地,透支身体的时代落幕

748万网约车司机最后50天:6月1日红线落地,透支身体的时代落幕

侃故事的阿庆
2026-04-08 16:43:26
女子自助餐一次吃12个汉堡,第三次光顾被老板拒绝接待后发帖吐槽,老板称对方引导舆论遭网友骚扰,已报警

女子自助餐一次吃12个汉堡,第三次光顾被老板拒绝接待后发帖吐槽,老板称对方引导舆论遭网友骚扰,已报警

极目新闻
2026-04-08 11:40:06
贝兹利和队友冲突 宁波赛后宣布解约:外援无特权!

贝兹利和队友冲突 宁波赛后宣布解约:外援无特权!

体坛周报
2026-04-08 21:46:20
为了郑丽文专机能顺利落地,解放军果断亮出底牌,痛击台独要害

为了郑丽文专机能顺利落地,解放军果断亮出底牌,痛击台独要害

健身狂人
2026-04-08 05:00:37
西北大学要和贾浅浅同归于尽了?

西北大学要和贾浅浅同归于尽了?

智识漂流
2026-04-08 14:59:26
长公主被家暴流产了

长公主被家暴流产了

毒舌扒姨太
2026-04-08 22:29:19
打了40天,没有输家?伊朗宣布大获全胜,特朗普宣布“完全胜利”

打了40天,没有输家?伊朗宣布大获全胜,特朗普宣布“完全胜利”

不掉线电波
2026-04-08 20:21:53
2026-04-08 23:27:00
灰度测试中
灰度测试中
生活正在重构,目前还在灰度测试阶段,暂不全量发布。
943文章数 12关注度
往期回顾 全部

科技要闻

造出地表最强AI,却死活不给你用!

头条要闻

无法说话、四肢瘫痪女孩误购演唱会门票 申请退票遭拒

头条要闻

无法说话、四肢瘫痪女孩误购演唱会门票 申请退票遭拒

体育要闻

40岁,但实力倒退12年

娱乐要闻

侯佩岑全家悉尼度假,一家四口幸福满溢

财经要闻

天津海河乳业回应直播间涉黄

汽车要闻

20万级满配华为全家桶 华境S是懂家庭的大六座

态度原创

数码
本地
时尚
健康
公开课

数码要闻

雷神推出KG3089侧刻有线机械键盘:89键布局,129元

本地新闻

跟着歌声游安徽,听古村回响

50岁,我妈在恋综抢男人

干细胞抗衰4大误区,90%的人都中招

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版