NuSTER: HTTP 協議,面向使用者, RESTful 的 NoSQL 快取伺服器

nuster發表於2018-07-09

NuSTER 是一個基於 HAProxy 的高效能 HTTP 快取伺服器和 RESTful NoSQL 快取伺服器,既可以用作類似 Varnish 或者 Nginx 那樣的 HTTP 快取伺服器,來快取動態或者靜態的 HTTP 資源,也可以用作 RESTful NoSQL 快取伺服器, 用 HTTP POST/GET/DELETE 來 新增 /取得 /刪除 Key/Value。

https://github.com/jiangwenyuan/nuster

RESTful NoSQL 快取伺服器

可以像 Memcached 或者 Redis 那樣放在應用和資料庫之間作為內部 KV 快取使用,也可以放在使用者和應用之間作為面向使用者的 NoSQL 使用。 支援 header, cookie 等等,所以可以將不同的使用者資料存到相同的路勁。

  • HAProxy 的所有特性(HTTPS, HTTP/2, ACL, etc)
  • 有條件的快取
  • 內部 KV 快取
  • 面向使用者快取
  • 支援任何型別的資料
  • 支援所有程式語言,不需要特定的庫,只需 HTTP 支援

基本操作

Set

curl -v -X POST -d value1 http://127.0.0.1:8080/key1
curl -v -X POST --data-binary @icon.jpg http://127.0.0.1:8080/imgs/icon.jpg

Get

curl -v http://127.0.0.1:8080/key1

Delete

curl -v -X DELETE http://127.0.0.1:8080/key1

Response

Check status code.

200 OK
    POST/GET: 成功
    DELETE: 總是
400 Bad request
    空值
    不正確的 acl, rules, etc
404 Not Found
    POST: rule tests 失敗
    GET: not found
405 Method Not Allowed
    其他的 methods
500 Internal Server Error
    發生未知錯誤
507 Insufficient Storage
    超過 data-size

分使用者的 data

通過在 key 里加入 header, cookie 等等,可以將不同的使用者資料存到相同的路勁。

nuster rule r1 key method.scheme.host.uri.header_userId if { path /mypoint }
nuster rule r2 key method.scheme.host.uri.cookie_sessionId if { path /mydata }

Set

curl -v -X POST -d "333" -H "userId: 1000" http://127.0.0.1:8080/mypoint
curl -v -X POST -d "555" -H "userId: 1001" http://127.0.0.1:8080/mypoint

curl -v -X POST -d "userA data" --cookie "sessionId: ijsf023xe" http://127.0.0.1:8080/mydata
curl -v -X POST -d "userB data" --cookie "sessionId: rosre329x" http://127.0.0.1:8080/mydata

Get

curl -v http://127.0.0.1:8080/mypoint
< 404 Not Found

curl -v -H "userId: 1000" http://127.0.0.1:8080/mypoint
< 200 OK
333

curl -v --cookie "sessionId: ijsf023xe" http://127.0.0.1:8080/mydata
< 200 OK
userA data

相關文章