RPC(remote procedure call)
不同的机器之间调用函数
http包含了很多验证信息, 不高效
Google S2(位置储存 查询系统)
System design = logic design + infrastructure design(架构设计)
Scenario
收集用户信息,预测打车概率。
Service
Storage
Trip Table:(单)
读多写少 每四秒查一次附近的接单信息
Location Table:
读少写多 每四秒写一次driver location
范围查询
二维查询映射到一维
Google S2
Geohash
查看公共前缀相似度,32份,
为什么是 1:2?
4 * 8(180,360)纬经度比
为什么上下方两行长?
因为地球是圆的,上下占的面积相当于三角形
为什么是 4*8?
缺陷 :刚好在线上,线两边差距大
查询 Google 半径两公里以内的车
geohash LIKE 9q9hv%, %分号在后面,表示以9q9hv开头
Redis value: set 删除 O(1) list 删除O(n)
匹配
Scale
迁移成本低,损失成本大。单点 Failure
DB sharding
按Geo hash 前四位
Uber 使用城市 Sharding
定义城市
Geo Fence
求一个点是否在多边形内
乘客在边界上,记录城市连接关系
机场
先找到城市,再查询 airport fence
减少风险
- Master slave
- 换数据库Riak