tile38 是基於golang 編寫的geo 數據庫,支持地理空間索引、實時地理圍欄,同時也支持leader-flower 的部署模型
備注: 下邊測試一個簡單的地理圍欄功能
環境准備
- docker-compose 文件
包含了一個簡單的webhook 工具
version: "3"
services:
app:
image: tile38/tile38
ports:
- "9851:9851"
benthos:
image: jeffail/benthos
volumes:
- "./conf/webhook.yaml:/benthos.yaml"
ports:
- "4195:4195"
運行&&測試地理圍欄功能
啟動
docker-compose up -d
使用
- 進入容器 app (tile38 服務)
docker-compose exec app sh
tile38-cli
- 添加webhook格式
SETHOOK name endpoint [META name value
- 添加數據圍欄:
/ # tile38-cli
127.0.0.1:9851> SETHOOK warehouse http://benthos:4195/ NEARBY fleet FENCE POINT 33.462 -112.268 6000
{"ok":true,"elapsed":"118.008µs"}
- 添加進入圍欄區域的數據
SET fleet truck1 POINT 33.5123 -112.2693
- webhook 數據
docker-compose logs -f benthos
效果
benthos_1 | get email message: {"command":"set","group":"5c395823b1e3cb00012724bc","detect":"enter","hook":"warehouse","key":"fleet","time":"2019-01-12T02:59:47.766263252Z","id":"dalong","object":{"type":"Point","coordinates":[-112.2693,33.5123]}}
benthos_1 | get email message: {"command":"set","group":"5c395823b1e3cb00012724bc","detect":"inside","hook":"warehouse","key":"fleet","time":"2019-01-12T02:59:47.766263252Z","id":"dalong","object":{"type":"Point","coordinates":[-112.2693,33.5123]}}
說明:
默認的webhook 數據會包含所有包含的類型,我們可以指定需要的類型
NEARBY fleet FENCE DETECT inside,outside POINT 33.462 -112.268 6000
說明
tile38 使用簡單,包含了rest 以及resp 協議的支持,同時webhook支持多種協議 http,https,redis,nats,grpc。。。
參考資料
https://tile38.com/topics/geofencing/
https://github.com/tidwall/tile38