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

减少风险
  1. Master slave
  2. 换数据库Riak

I am a real pikachu!